Python exemplarisch
deutsch     english

STRICHGRAFIKEN

 

Alle Programme können von hierheruntergeladen werden.


 

Linienscharen und Enveloppen

 


Die Funktion line(x1, y1, x2, y2) zeichnet eine Linie vom Punkt P1(x1, y1) zum Punkt P2(x2, y2). Unter der Verwendung von Wiederholschleifen kann man Hüllkurven zeichnen (mathematisch Enveloppen, da die Linien Tangenten an diese Kurven sind).

Programm: [►]

# LineEx1.py

from gpanel import *

makeGPanel(0, 30, 0, 30)
for i in range(31):
    line(i, 0, 30, i)
keep()
Progammcode markieren (Ctrl+C copy, Ctrl+V einfügen)
 

 

  Erklärungen zum Programmcode
 

for i in range(31): i durchläuft die Liste mit den Zahlen 0, 1, 2, ... 30 (31 Zahlen)

 

 

Moire-Bilder

 

Eng übereinander gezeichnete Linien können einen optischen Effekt erzeugen, den man Moiré nennt. Man zeichnet in einem Quadrat von 11 Punkten des unteren Rands je eine Linie zu 11 Punkten des oberen Rands und dann das gleiche vom linken zum rechten Rand. Durch eine kurze Verzögerung wird der Aufbau des Bildes gut sichtbar.

Beispiel 1: [►]

#Moire.py

from gpanel import *

makeGPanel(0, 10, 0, 10)

for i in range(11):
   for k in range (11):
      line(i, 0, k, 10)
      delay(100)
    
for i in range(11):
   for k in range (11):
      line(0, i, 10, k)
      delay(100)
keep()
Progammcode markieren (Ctrl+C, Ctrl+V einfügen)
 

 



  Erklärungen zum Programmcode
 

delay(100): das Programm wartet nach jeder gezeichneten Linke 100 Millisekunden, damit man das Zeichnen der Linien besser beobachten kann.

 

 

Punkte einer Punktliste verbinden

 

Die Liste corners enthält die Koordinaten eines Graphs als Koordinatentupel. Die Funktion drawCorners() stellt diese Punkte dar.

Mit der Funtion drawLines() werden die Punkte miteinander verbunden.

 

 

 

Programm: [►]

# LineEx3.py

from gpanel import *

def drawCorners():
    for x, y in corners:
        pos(x, y) 
        fillCircle(0.2)

def drawLines():
    for p in corners:
        for q in corners:
            if p != q:
                line(p, q)

makeGPanel(0, 10, 0, 10)
corners = [(2, 3), (5, 2), (8, 5), (6, 8), (3, 7)]
drawCorners()
drawLines()
keep()
Progammcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

  Erklärungen zum Programmcode
 

Die Grafikfunktionen können sowohl für x-, y-Koordinaten oder für Koordinatentupel/listen, oder sogar für komplexe Zahlen verwendet werden. In drawCorners() werden Koordinaten und in drawLines() Tupels verwendet.

if p != q: vermeidet, dass Punkte mit sich selber verbunden werden