Nachdem hier neulich mal jemand eine Anfrage bezüglich einer 3D Routine hatte und ich ihm da schon bißchen was "getextet" hatte, kommt jetzt mal noch eine kleine generelle Hinführung in die dritte Dimension auf dem Homecomputer. (Mal sehen was es so wird.)
Prinzipiell sollte man natürlich erstmal was über 2D schreiben, und ja, da gibt es mehr als man so denkt und was teilweise überhaupt nicht mehr so richtig benutzt wird, heutzutage. Dithering etwa. Was man aber natürlich i.P. jeder als Basis von 2D kennt ist, daß es irgendwie einen leeren Bildschirm gibt und auf den läßt sich was zeichnen. Damit das vernünftig klappt hat der ein Koordinatensystem - und bereits da, also bevor (!) der erste Punkt überhaupt gezeichnet ist, wird es schon schwierig. Warum ?
Nun, die meisten werden das kennen: Es gibt irgendwie ein Bildschirmkoodinatensystem was z.B. bei [0,0] losgeht und z.B. bei [320,200] oder [640x200] endet. Mathematisch ist das aber unschön, weil man so ja nur einen Quadranten darstellen kann, nämlich den mit den positiven Werten für die X-Achse und den ebenfalls positiven für die Y-Achse. Es läßt sich also quasi nur ein "doppelt-positiver" Punkt zeichnen, und das auch nur, wenn er die Grenzen in X [320] (oder [640]) und in Y [200] nicht überschreitet. Ein Punkt an [64,32] oder [123,196] ist also problemlos zeichenbar, aber einer an [-32,111] oder [96,-144] wird erstmal einen Fehler bringen.
Nun kann man natürlich sagen, daß das kein Problem ist, man muß halt nur eine vernünftige Programmiersprache benutzen ... sowas wie GFA Basic oder ein vernünftiges grafikfähiges Pascal (Borland Turbo) oder eine brauchbare Graphikbibliothek für C oder gleich Python oder ... , aber:
das Problem verschwindet dadurch nicht, es wird nur vorm User verborgen. Denn was macht eine solche Sprache, damit das klappt ? Sie paßt einfach den Punktwert "irgendwie" so an, daß man auch negative Werte benutzen kann. Und was passiert da genau ? Der Punktwert wird schlicht verschoben.
Wenn also der Punkt [-132,12] dargestellt werden soll, addiert man einfach einen Wert auf X, so daß eine positive Zahl entsteht. Damit das funktioniert, gibt es natürlich bestimmte Vorgaben. Zum Beispiel könnte einfach festgelegt sein, daß der Punkt [0,0] exakt in der Bildschirmmitte sitzen soll. Bei einer Beispielauflösung von [320,200] ist diese Mitte also irgendwo bei [160,100].
Um jetzt den Punkt [-132,12] an die richtige Position zu bringen, addiert man einfach den Wert der Mitte auf die Koordinatenwerte des Punktes, also
[-132,12] + [160,100] = [ (-132+160) , (12+100) ] = [28,112]
Das klappt natürlich auch mit anderen Punkten, z.B. [-23,-56], und alle landen dann auf einer Bildschirmkoordinate, die der Rechner auch wirklich anzeigen kann. Die einzige Einschränkung bisher ist aber natürlich, daß man so natürlich nur Werte in einem Bereich der halben Bildschirmbreite bzw. halben Bildschirmhöhe darstellen kann, also im positiven nicht mehr bis X [320] sondern nur noch bis X [160] zeichnen kann. Das gleich gilt für Y dort natürlich mit einem Bereich von [-100] bis [100], eine Y [200] ist dann schon zu groß. Dafür kann man nun alle 4 Quadranten benutzen.
Was macht man hier also eigentlich ?
Nun man muß sich klarmachen, daß man in zwei unterschiedlichen Koordinatensystemen "unterwegs" ist - einmal in dem, was der Rechner bzw. Bildschirm so hergibt und was immer (!) eine irgendwie begrenzte Darstellung bietet, etwa eine maximale Auflösung von [320,200], und den Umstand, daß man die Einzelpunkte eigentlich nur mit positiven Werten ansprechen kann und zweitens in dem eigentlichen Koordinatensystem, in dem man seine Punkte gerne berechnen möchte. Also hier in dem "normalen", d.h. "üblichen" mathematischen 2D Koordinatensystem (momentan noch mit der Einschränkung, daß man in keiner Achse über die Maximalwerte hinauskommt).
Damit man diese beiden auseinanderhalten kann, heißt das eine das Bildschirmkoordinatensystem bzw. Bildkoordinatensystem und das andere ist das sogenannte Weltkoordinatensystem, nämlich das, in dem "die Welt der Punkte" sich eigentlich abspielt.
laut WikiP:
"Das Weltkoordinatensystem bezeichnet das Ursprungskoordinatensystem, mit dem die damit verknüpften relativen Koordinatensysteme referenziert sind. Das Weltkoordinatensystem wird durch orthogonale Achsen beschrieben und durch ein kartesisches Koordinatensystem repräsentiert."
Es ist also eigentlich nicht die echte Welt gemeint, sondern das Bild der Welt, was durch die Punkte beschrieben wird - also quasi nur die Abbildung der Welt in Koordinaten - und diese wird wieder auf den Bildschirm abgebildet - was als die "damit verknüpften relativen Koordinatensysteme", die referenzieren, beschrieben wird.
Und das mit dem kartesischen Koordinatensystem ist halt so der übliche Modus, es spräche aber nichts gegen eine andere Art (z.B. Polarkoordinaten), auch da kann man den Punkt aus der "Welt der Punkte" auf einen Bildschirmpunkt abbilden, der darstellbar ist. Nur ist es evtl. nicht mehr so einfach durch simple Addition von [ +halbe Bildschirmbreite, +halbe Bildschirmhöhe ] möglich.