mamarulez
Mitglied
Hallo,
ich hoffe ich habe hier im richtigen Bereich geposted...
ich schreibe im Moment eine eigene, einfache 3D-Engine, die soweit auch wunderbar funktioniert. Doch habe ich ein kleines Problem: Um Polygone mit meiner Engine auf den Bildschirm zeichnen zu können, benutze ich eine einfache Funktion, die eine Linie zwischen zwei Koordinaten ( nämlich X und Y ) zeichnet. Diese Funktion zeichnet also zweidimensional, ich habe allerdings in meiner Engine eine weitere ( Tiefen- ) Koordinate Z. Jetzt geht es darum, in einer beziehungsweise zwei Funktionen dreidimensionale Koordinaten, die ich sonst überall in der Engine selbstverständlich verwende, unmittelbar vor dem Zeichnen der Polygone in zweidimensionale umzuwandeln. Ich habe ungefähr einen Tag nach dem richtigen Algoritmus gesucht, aber nichts gefunden und mittlerweile raucht mir der Kopf so von diesen beiden Funktionen, dass ich gar nichts mehr verstehe...
Hier sind die Funktionen:
Das ist die Funktion, die die im Parameter überlieferten dreidimensionalen X und Z Koordinaten in eine zweidimensionale X-Koordinate umwandelt oder besser gesagt umwandeln sollte. Sie gibt den neuen X-Wert wieder zurück.
Diese Funktion sollte das gleiche für Y-Koordinaten tun.
ZUR ERKLÄRUNG: Ich bin mir bewusst, dass der Algoritmus im Moment falsch ist. Was er tut ist, er addiert den Z-Wert zu dem X- oder Y-Wert wenn der Punkt links oder oberhalb vom Zentrum des Bildschirms ist. Wenn nicht, dann subtrahiert er den Wert und wenn das Objekt genau im Zentrum des Screens liegt, dann ändert die Tiefen-Koordinate gar nichts.
Kann mir irgendjemand helfen? Mache ich einen Denkfehler oder bin ich einfach nur zu blöde den richtigen Weg zu finden?
Danke,
Jan.
ich hoffe ich habe hier im richtigen Bereich geposted...
ich schreibe im Moment eine eigene, einfache 3D-Engine, die soweit auch wunderbar funktioniert. Doch habe ich ein kleines Problem: Um Polygone mit meiner Engine auf den Bildschirm zeichnen zu können, benutze ich eine einfache Funktion, die eine Linie zwischen zwei Koordinaten ( nämlich X und Y ) zeichnet. Diese Funktion zeichnet also zweidimensional, ich habe allerdings in meiner Engine eine weitere ( Tiefen- ) Koordinate Z. Jetzt geht es darum, in einer beziehungsweise zwei Funktionen dreidimensionale Koordinaten, die ich sonst überall in der Engine selbstverständlich verwende, unmittelbar vor dem Zeichnen der Polygone in zweidimensionale umzuwandeln. Ich habe ungefähr einen Tag nach dem richtigen Algoritmus gesucht, aber nichts gefunden und mittlerweile raucht mir der Kopf so von diesen beiden Funktionen, dass ich gar nichts mehr verstehe...
Hier sind die Funktionen:
Code:
function TranslateCoordinatesX ( int pointx, int pointz )
// translates three-dimensional points with x, y and z coordinates to two dimensional
// ones with only x and y coordinates
{
// define the new x-coordinate
int pointnewx;
// translate the coordinates
if ( pointx < 160 )
pointnewx = pointx + pointz;
else if ( pointx > 160 )
pointnewx = pointx - pointz;
else if ( pointx == 160 )
pointnewx = pointx;
// return the new x-coordinate
return pointnewx;
}
Code:
function TranslateCoordinatesY ( int pointy, int pointz )
// translates three-dimensional points with x, y and z coordinates to two dimensional
// ones with only x and y coordinates
{
// define the new y-coordinate
int pointnewy;
// translate the coordinates
if ( pointy < 100 )
pointnewy = pointy + pointz;
else if ( pointy > 100 )
pointnewy = pointy - pointz;
else if ( pointy == 160 )
pointnewy = pointy;
// return the new y-coordinate
return pointnewy;
}
ZUR ERKLÄRUNG: Ich bin mir bewusst, dass der Algoritmus im Moment falsch ist. Was er tut ist, er addiert den Z-Wert zu dem X- oder Y-Wert wenn der Punkt links oder oberhalb vom Zentrum des Bildschirms ist. Wenn nicht, dann subtrahiert er den Wert und wenn das Objekt genau im Zentrum des Screens liegt, dann ändert die Tiefen-Koordinate gar nichts.
Kann mir irgendjemand helfen? Mache ich einen Denkfehler oder bin ich einfach nur zu blöde den richtigen Weg zu finden?
Danke,
Jan.
Zuletzt bearbeitet: