VC 20
Grafik

Supergrafik III

Klein, aber oho! Dreidimensionale Grafiken sind auch mit der Grundversion des VC 20 möglich.

Das vorliegende Programm ist eine Anwendung des im 64’er, Ausgabe 11/84, Seite 73 abgedruckten Programms »Supergrafik II« für hochauflösende Grafik (200 x 256 Punkte) auf dem VC 20. Es ermöglicht die Darstellung dreidimensionaler Funktionsgrafiken auf dem Bildschirm.

Eine kurze Erläuterung der 3-D-Technik:

Der Graph einer Funktion zweier Variablen in einem X-Y-Z-Diagramm ist in grafischer Darstellung ein gekrümmtes Flächenstück. Das Problem besteht nun darin, diese Fläche im Raum auf den zweidimensionalen Bildschirm abzubilden.

Das Programm verwendet den 1. Oktanten eines rechtshändigen dreidimensionalen Koordinatensystems, dessen Y-Z-Ebene (Projektionsebene) parallel zum Bildschirm verläuft. Die Länge der Achsen beträgt zehn Einheiten.

Vor dem eigentlichen Programmlauf werden in Zeile 1 die räumlichen Koordinaten des gedachten Auges A(XA;YA;ZA) und in Zeile 300 die gewünschte Funktion eingegeben. Eine Änderung des »Augpunktes« A führt zu einer anderen Perspektive. Die Projektion besteht nun darin, daß ein Punkt des Graphen, der nicht in der Y-Z-Ebene liegt, in diese vom Augpunkt A aus projiziert wird. Der VC 20 ermittelt die Koordinaten des projizierten Punktes und bringt diesen auf den Bildschirm (Bild 1).

Bild 1. Die Funktion \( z = 5 + 5 \left( \sin\left(\frac{\pi}{10}\right) \cdot \sin\left(\frac{2\pi}{20} y\right) \right)^{11} \) mit Augpunkt (50,20,20) in Gitternetz-Darstellung

Die relevanten Punkte des Funktionsgraphen werden gewonnen durch Wahl eines Punktes (X,Y,0) auf einem 10 x 10 Gitternetz in der X-Y-Koordinatenebene und Berechnung der Z-Koordinate mit Hilfe der Funktionsgleichung. Dies ergibt die plastische Wirkung, vergleichbar mit dem Schatten eines Gitternetzes auf dem Funktionsgraphen (Bild 1).

Einen recht reizvollen Eindruck (Bild 2) gewinnt man alternativ, wenn die Koordinaten X und Y zufällig per RND-Funktion ausgewählt werden. Dazu ist die Programmzeile 250 zu ersetzen durch: 250 X = 10 * RND(1): Y = 10*RND(1):GOSUB 300:GOTO 250

Die Programmzeilen 260 und 280 können dann gelöscht werden.

Um Speicherplatz zu sparen, wurde auf Kommentare im Programm und Grundsätze zur übersichtlichen Programmmierung bewußt verzichtet.

(Rudolf Dörr/ev)
Bild 2. Die Funktion \( z = 5 - 5 \left( \sin\left(\frac{\pi}{10}\right) \cdot \sin\left(\frac{\pi}{10} y\right) \right)^4 \) mit Augpunkt (50,20,20) in der Darstellung mit zufällig ausgewählten Punkten
Zeile
1 Augpunkt definieren
20,25,4000-5000 siehe 64’er, Ausgabe November 1984, Seite 73
100,110 Koordinatenachsen
250-260 Wahl der Koordinaten X und Y
300-360 Berechnung der 3. Koordinate durch die Funktionsgleichung und Berechnung der Koordinaten des Grafikpunktes
Programmaufbau
1 xa=50:ya=20:za=20
2 print"{clr}3-d-funktionen":print"r.doerr,22.10.84":print"taste!"
15 geta$:ifa$=""then15
20 p=36864:pokep+3,161:poke55,0:poke56,20:pokep+1,18:pokep,10:pokep+2,153:print"{clr}"
25 poke0,10:poke1,0:fori=828to846:readp:pokei,p:next:poke2,20:sys828:poke36869,253
100 y=200:forx=42to125step1:gosub4000:next:x=42:fory=95to200step1:gosub4000:next
110 forx=0to1step.1:y=0:z=0:h=x:gosub310:x=h:next
250 forxh=0to10:foryh=0to10step.05:x=xh:y=yh:gosub300:next:next
260 foryh=0to10:forxh=0to10step.05:x=xh:y=yh:gosub300:next:next
280 goto15
290 :
300 z=5-5*(sin(.314*x)*sin(.314*y))^4
310 d=xa-x:ifd=0then360
320 ys=15.7*(y-x*(ya-y)/d)+42:zs=(-20)*(z-x*(za-z)/d)+200
340 ifys<0orys>199orzs<0orzs>255then360
350 x=ys:y=zs:gosub4000
360 return
4000 :
4010 y=int(y+.5):x=int(x+.5):xs%=int(x/8):ys%=int(y/16)
4040 by=y-ys%*16:bi=7-x+xs%*8:z=7680+xs%+25*ys%:zf=z+30720
4050 ifpeek(z)=32thenbc=bc+1:pokez,bc:pokezf,6
4055 ifbc>159then280
4060 b=5120+16*peek(z)+by:p=peek(b)or2^bi:pokeb,p:return
5000 data162,0,169,0,160,0,145,1,200,208,251,230,2,232,228,0,208,242,96
Listing. Das Programm zur Darstellung dreidimensionaler Funktionen auf dem VC 20
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →