kopia lustrzana https://github.com/inkstitch/inkstitch
remove Hilbert/Koch/Turtle
rodzic
3667c82170
commit
08e99c2150
85
PyEmb.py
85
PyEmb.py
|
@ -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)
|
||||
|
|
Ładowanie…
Reference in New Issue