Commit c69d5523 authored by Louis Paternault's avatar Louis Paternault
Browse files

[WIP] Les r茅flexions ne fonctionnent pas

parent 4cb91bb2
......@@ -107,61 +107,64 @@ class Fenetre:
class Fractale:
def __init__(self, angles, reflexions):
self.compteur = [-1]
self.angles = list(angles)
self.compteur = [0]
self.angles = [sum(angles[0:i+1]) for i in range(len(angles))]
self.base = len(angles)
self.angles.append(-sum(angles))
self.reflexions = list(reflexions)
self.reflexions.append(reflexions.count(True) % 2 == 1)
self.reflexions = reflexions
def signe(self, profondeur):
reflexion = False
reflexion = 1
while profondeur < len(self.compteur):
reflexion = (reflexion != self.reflexions[self.compteur[profondeur]])
reflexion *= self.reflexions[self.compteur[profondeur]]
profondeur += 1
if reflexion:
return -1
else:
return 1
return reflexion
def reflexions_cumulees(self, index):
reflexion = 1
while index < len(self.compteur):
if self.reflexions[self.compteur[index]]:
reflexion = -reflexion
index += 1
return reflexion
def iteration(self):
angle = 0
for index in range(len(self.compteur)):
angle += self.angles[self.compteur[index]] * self.reflexions_cumulees(index+1)
angle += self.angles[-1] * self.reflexions_cumulees(index+1)
print(angle)
turtle.setheading(angle)
turtle.forward(1)
def iter(self):
print(self.compteur)
print(self.reflexions)
index = 0
retenue = 1
angle = 0
while retenue != 0:
self.compteur[index] += 1
angle += self.signe(index) * self.angles[self.compteur[index]]
if self.compteur[index] == self.base:
self.compteur[index] = 0
if (index == len(self.compteur) - 1):
self.compteur.append(0)
angle += self.signe(index) * self.angles[self.compteur[index]]
index += 1
retenue = 1
else:
retenue = 0
return angle
def plusmoins(booleen):
if booleen:
return -1
else:
return 1
if __name__ == "__main__":
angles = [((int(arg.strip('Rr')), arg.endswith('R') or arg.endswith('r'))) for arg in sys.argv[1:]]
(angles, reflexions) = list(zip(*angles))
arguments = [((int(arg.strip('Rr')), arg.endswith('R') or arg.endswith('r'))) for arg in sys.argv[1:]]
(angles, reflexions) = list(zip(*arguments))
fractale = Fractale(angles, reflexions)
fenetre = Fenetre()
couleur = Couleur()
#turtle.tracer(10, 0) #TODO Add an option to enable this
while True:
print(fractale.angles)
print(fractale.reflexions)
print(fractale.compteur)
turtle.left(fractale.iter())
turtle.forward(1)
print(fractale.angles, fractale.reflexions, fractale.compteur)
fractale.iteration()
fenetre.update(turtle.xcor(), turtle.ycor())
couleur.update(fractale.compteur[0])
#if len(fractale.compteur) == 3:
# break
turtle.mainloop()
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment