#main_script
import fmeobjects
import numpy as np
from fmeobjects import FMELine, FMEPoint, FMEPolygon
import numpy as np
import math
"""
connect symmetric indices
0 1 2 3 4 ... n/2
| |
n-1 n/2+1
"""
def circle_paired_lines(n=36, r=300, cx=400, cy=400):
"""Connect firstlast, secondsecond last, etc. on a circle."""
p = [(r*math.cos(2*math.pi*i/n),
r*math.sin(2*math.pi*i/n)) for i in range(n)]
return [(p[i], p[-(i + 1)]) for i in range(n // 2)]
def ring_lines(n=36, w=800, h=800):
r = min(w, h)*0.4
pts = [(r*math.cos(2*math.pi*i/n),
r*math.sin(2*math.pi*i/n)) for i in range(n)]
lines = [(pts[i], pts[(i+1)%n]) for i in range(n)]
return pts,lines
class FeatureProcessor(object):
def __init__(self):
pass
def input(self, feature: fmeobjects.FMEFeature):
pts, lines = ring_lines(n=36, w=800, h=800)
# output the star boundary
for line in lines:
print(line)
tri_ring = (list(map(tuple, line)))
tri_line = FMELine([tuple(p) for p in tri_ring])
out_feat = fmeobjects.FMEFeature(feature)
out_feat.setGeometry(tri_line)
self.pyoutput(out_feat)
parallel_lines = circle_paired_lines(n=36, r=300, cx=400, cy=400)
for pline in parallel_lines:
tri_ring = (list(map(tuple, pline)))
tri_line = FMELine([tuple(p) for p in tri_ring])
out_feat = fmeobjects.FMEFeature(feature)
out_feat.setGeometry(tri_line)
self.pyoutput(out_feat)