#main_script
import fmeobjects
import numpy as np
from fmeobjects import FMELine, FMEPoint, FMEPolygon
from math import sqrt, sin, cos, pi, degrees
width = 360
N = 10
d = width / N
class FeatureProcessor(object):
def __init__(self):
pass
def rect(self, tx, ty, r, h, w): # notice i switched w and h parameters of the rect
coordinates = [
(tx, ty),
(tx + w, ty),
(tx + w, ty + h),
(tx, ty + h),
(tx, ty)
]
_center_point = FMEPoint()
_center_point.setXYZ(float(tx)+w/2, float(ty+h/2), 0)
_fmepoints = []
for i in coordinates:
pt = FMEPoint()
pt.setXYZ(i[0], i[1], 0)
_fmepoints.append(pt)
line = FMELine()
for i in _fmepoints:
line.appendPoint(i)
line.rotate2D(_center_point, float(r))
return line
def pattern(self, size):
l = size / sqrt(4)
polygons = []
r = 0
for i in range(N):
y = d * (i + 0.5)
for j in range(N):
x = d * (j + 0.5)
dy = -d/2 if j % 2 == 0 else 1
dx = -d/2 if i % 2 == 0 else 1
"""
pos = (x,y)
poly = self.rect(pos[0], pos[1], r, d, d)
polygons.append(poly)
"""
pos = (x+dx,y+dy)
poly = self.rect(pos[0], pos[1], r, d, d)
polygons.append(poly)
for i in polygons:
newFeature = fmeobjects.FMEFeature()
newFeature.setGeometry(i)
self.pyoutput(newFeature)
def input(self, feature: fmeobjects.FMEFeature):
# svg_body = create_svg_no_deps(datastructure,'foo')
pass
def close(self):
points = self.pattern(d)