#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
ll = d
ww = d/2
col=ll *1.4
row=ww*1.4
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)
# tweak rotation parameters
_rotation_center = _fmepoints[-2]
if r0:
_rotation_center = _fmepoints[-1]
line.rotate2D(_center_point, float(r))
return line
def pattern(self, size):
l = size / sqrt(4)
polygons = []
for x in np.arange(0, width, col):
for y in np.arange(0, width, row):
pos = [x, y]
r = 45
poly_poly = self.rect(pos[0], pos[1], r, ww, ll)
polygons.append(poly_poly)
pos = [x + col / 2, y + row / 2]
r = -45
poly_poly = self.rect(pos[0], pos[1], r, ww, ll)
polygons.append(poly_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)