#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 = [] for i in range(N): for j in range(N): pos = (d * (i + 0.5), d * (j + 0.5)) r = degrees(pi / 4) poly = self.rect(pos[0], pos[1], r, d/sqrt(2), d/ sqrt(2)) polygons.append(poly) poly = self.rect(pos[0]+d/sqrt(2)/4, pos[1]+d/sqrt(2)/4, r, d/sqrt(2)/2, d/ sqrt(2)/2) 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)