ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
7266
7266
EMPFEHLEN
-
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.Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
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; }
Diese Funktion sollte das gleiche für Y-Koordinaten tun.Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
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.Geändert von mamarulez (13.05.05 um 15:59 Uhr)
-
23.05.05 14:04 #2
Soll es Isometrisches 3d sein oder mit Zentralpunkt ?
Bei isometrischem 3d bleibt alles linear, also zB x=x+0.1*z und y=y+0.5*z
Hier Links zu 3d-Linien etc.
Bresenham3d 2.Beispiel 3.Beispiel
Ah hier noch ein 3D-FAQ für Engines:
http://olli.informatik.uni-oldenburg...ow4/page1.html
mfg chmeeGeändert von chmee (23.05.05 um 15:00 Uhr)
Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
Danke für die Hilfe, aber ich habe schon einiges an Antworten in anderen Foren erhalten, in denen ich einen ähnlichen Thread erstellte, nachdem hierauf mehrere Wochen keine Antwort kam.
Zur Vollständigkeit: Man muss die Koordinaten ganz einfach durch Z teilen...
Danke für die Antwort, aber es würde helfen, wenn demnächst etwas schneller geantwortet wird...
-
23.05.05 22:54 #4
Sorry, tümmele mich in anderen Teilen dieser Seite rum..
Weiterhin viel Erfolg und Glück
mfg chmeeMein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
Ähnliche Themen
-
Koordinaten umrechnen
Von LukeS im Forum C/C++Antworten: 2Letzter Beitrag: 12.12.06, 15:32 -
Koordinaten
Von MiRaMC im Forum JavaAntworten: 5Letzter Beitrag: 07.05.06, 18:25 -
Koordinaten
Von andulus im Forum PHPAntworten: 3Letzter Beitrag: 18.09.05, 21:21 -
IP bzw GPS koordinaten....
Von mille im Forum Internet, DSL & FlatrateAntworten: 1Letzter Beitrag: 13.07.03, 14:07 -
x und y-koordinaten
Von Dracaelius im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 10.11.02, 22:20





Zitieren

Login





