remove Hilbert/Koch/Turtle

pull/29/head
Lex Neva 2018-01-15 13:44:36 -05:00
rodzic 3667c82170
commit 08e99c2150
1 zmienionych plików z 0 dodań i 85 usunięć

Wyświetl plik

@ -255,88 +255,3 @@ class Test:
fp = open("test.exp", "wb")
fp.write(emb.export_melco())
fp.close()
class Turtle:
def __init__(self):
self.emb = Embroidery()
self.pos = Point(0.0, 0.0)
self.dir = Point(1.0, 0.0)
self.emb.addStitch(self.pos)
def forward(self, dist):
self.pos = self.pos + self.dir.mul(dist)
self.emb.addStitch(self.pos)
def turn(self, degreesccw):
radcw = -degreesccw / 180.0 * 3.141592653589
self.dir = Point(
math.cos(radcw) * self.dir.x - math.sin(radcw) * self.dir.y,
math.sin(radcw) * self.dir.x + math.cos(radcw) * self.dir.y)
def right(self, degreesccw):
self.turn(degreesccw)
def left(self, degreesccw):
self.turn(-degreesccw)
class Koch(Turtle):
def __init__(self, depth):
Turtle.__init__(self)
edgelen = 750.0
for i in range(3):
self.edge(depth, edgelen)
self.turn(120.0)
fp = open("koch%d.exp" % depth, "wb")
fp.write(self.emb.export_melco())
fp.close()
def edge(self, depth, dist):
if (depth == 0):
self.forward(dist)
else:
self.edge(depth - 1, dist / 3.0)
self.turn(-60.0)
self.edge(depth - 1, dist / 3.0)
self.turn(120.0)
self.edge(depth - 1, dist / 3.0)
self.turn(-60.0)
self.edge(depth - 1, dist / 3.0)
class Hilbert(Turtle):
def __init__(self, level):
Turtle.__init__(self)
self.size = 10.0
self.hilbert(level, 90.0)
fp = open("hilbert%d.exp" % level, "wb")
fp.write(self.emb.export_melco())
fp.close()
# http://en.wikipedia.org/wiki/Hilbert_curve#Python
def hilbert(self, level, angle):
if (level == 0):
return
self.right(angle)
self.hilbert(level - 1, -angle)
self.forward(self.size)
self.left(angle)
self.hilbert(level - 1, angle)
self.forward(self.size)
self.hilbert(level - 1, angle)
self.left(angle)
self.forward(self.size)
self.hilbert(level - 1, -angle)
self.right(angle)
if (__name__ == '__main__'):
# Koch(4)
Hilbert(6)