Der Pi-Tag rückt immer näher und das ist Anlaß genug für mich, meine Experimente fortzusetzen, die die Nachkommastellen der Kreiszahl auf eine Zufallswanderung schicken. In Anlehnung an dieses Video von Numberphile habe ich dieses Mal die Richtung auf ein gleichwinkliges Dreieck begrenzt, abhängig von der Nachkommastelle bewegt sich TigerJythons Schildkröte um jeweils einen 60°-Winkel nach rechts:
from gturtle import *
from random import randint
WIDTH, HEIGHT = 640, 480
setPlaygroundSize(WIDTH, HEIGHT)
playground = TurtleFrame()
playground.title = "Random Walk with Pi (2)"
playground.clean(Color(235, 215, 182)) # Packpapier
pina = Turtle(playground)
pina.hideTurtle()
pina.setLineWidth(3)
pina.right(90) # Start der Schildkröte nach Norden
pidata = open("data/first5000digitsofpi.txt")
s = pidata.read()
digits = list(str(s))
digits = [int(i) for i in digits if i != "."]
for m in digits:
r = randint(20, 200)
g = randint(20, 200)
b = randint(20, 200)
c = Color(r, g, b)
ca = makeColor(c, 0.7) # alpha
pina.setPenColor(ca)
stepl = randint(0, 100)
if stepl >= 2:
step = 10
else:
step = 100
if m == 0 or m == 3 or m == 6 or m == 9:
pina.right(60)
pina.forward(step)
if m == 1 or m == 4 or m == 7:
pina.right(120)
pina.forward(step)
if m == 2 or m == 5 or m == 8:
pina.right(0)
pina.forward(step)
pina.wrap()
print("I did it, Babe!")
Eine interessante optische Wirkung ergibt sich, wenn man die Zeile, die die Turtle zu Beginn nach Norden ausrichtet, auskommentiert: Dann wirkten die Bahnen der Schildkröte nämlich so, als Würde man Würfel in einer isometrischen Projektion darstellen (Screenshot rechts). Da es zur isometrischen Projektion (in JavaScript/P5.js) ein nettes Video von Kevin Workman gibt, animiert mich dies natürlich, ähnliches auch einmal in Python zu implementieren. So viel zu programmieren, so wenig Zeit!
1 (Email-) Kommentar
Es ist immer wieder nett, Deine kleinen Python-Schnipsel selbst auszuprobieren.
Eine kleine Ergänzung für Lesern, die die Datei first500digitsofpi.txt nicht haben, ist vielleicht das hier (gemopst von hier: https://stackoverflow.com/questions/9004789/1000-digits-of-pi-in-python):
DIGITS = 5000
def pi_digits(x):
"""Generate x digits of Pi."""
k,a,b,a1,b1 = 2,4,1,12,4
while x > 0:
p,q,k = k * k, 2 * k + 1, k + 1
a,b,a1,b1 = a1, b1, p*a + q*a1, p*b + q*b1
d,d1 = a/b, a1/b1
while d == d1 and x > 0:
yield int(d)
x -= 1
a,a1 = 10*(a % b), 10*(a1 % b1)
d,d1 = a/b, a1/b1
digits = list(pi_digits(DIGITS))
PS: Kennst Du eine Möglichkeit, die Schriftart in TigerJython zu ändern? Courier tut meinen Augen weh.
– Jens T. (Kommentieren) (#)
Über …
Der Schockwellenreiter ist seit dem 24. April 2000 das Weblog digitale Kritzelheft von Jörg Kantel (Neuköllner, EDV-Leiter Rentner, Autor, Netzaktivist und Hundesportler — Reihenfolge rein zufällig). Hier steht, was mir gefällt. Wem es nicht gefällt, der braucht ja nicht mitzulesen. Wer aber mitliest, ist herzlich willkommen und eingeladen, mitzudiskutieren!
Alle eigenen Inhalte des Schockwellenreiters stehen unter einer Creative-Commons-Lizenz, jedoch können fremde Inhalte (speziell Videos, Photos und sonstige Bilder) unter einer anderen Lizenz stehen.
Der Besuch dieser Webseite wird aktuell von der Piwik Webanalyse erfaßt. Hier können Sie der Erfassung widersprechen.
Diese Seite verwendet keine Cookies. Warum auch? Was allerdings die iframes
von Amazon, YouTube und Co. machen, entzieht sich meiner Kenntnis.
Werbung
Diese Spalte wurde absichtlich leergelassen!