#main_script
import fmeobjects
import numpy as np
from fmeobjects import FMELine, FMEPoint, FMEPolygon
import numpy as np
import math
"""
radial lines across the center
* | *
\ | /
\|/
/|\
/ | \
* | *
next time connect symmetric indices
0 1 2 3 4 ... n/2
| |
n-1 n/2+1
"""
def radial_ring_lines(n=36, w=800, h=800):
r=min(w,h)*0.4
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+n//2]) 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 = radial_ring_lines(n=36, w=800, h=800)
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)