Positionen umrechnen - finde den fehler nicht :O
Übersicht

PhillipKBetreff: Positionen umrechnen - finde den fehler nicht :O |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kann mir jemand mal fix helfen?
Ich versuche grade für meine Isometrische Map die Screenposition (via maus) wieder in Blockpositionen umzurechnen. Die formel zum zeichnen habe ich. Sprich die "3d" koordinaten werden mit ihren offsets in screenkoordinaten umgewandelt. Code: [AUSKLAPPEN] X = bx * 36 - bz * 36
Y = -by * 44 + bx *18 + bZ * 18 Das ist die formel, vereinfacht niedergeschrieben. bX,bY,bZ stehen für die position im array. 18, 36 und 44 sind offsets die ich per pixelzählen im Malprogramm bestimmt habe - sieht in der Engine an sich auch perfekt aus. Aber das umwandeln in blockpositionen aus Screenkoordinaten will nicht hinhauen oO Damit das ganze klappt, setze ich die höhe Y als 1 fast. Somit sähe die umwandlung doch etwa so aus: Code: [AUSKLAPPEN] bx = x / 72.0 + y / 36.0
bz = -x / 72.0 + y / 36.0 by = 1 'fester wert Irgendwie will das nicht. Wenn ich an den rändern bin, verzieht es sich immer mehr, sprich die berechnete position liegt näher am nullpunkt als sie eigentlich sollte -> irgendwo ist ein denkfehler dabei. Ein paar fakten: Mittelpunkt 0,0 liegt in der Fenstermitte( 1280 : 2 / 720 :2 ) Eine kachel ist insgesamt 72x80 pixel hoch, die "oberfläche" ist 72x 36 (oder evtl 37) groß. Selbst mit addieren einer halben "oberfläche" klappts net so ganz ![]() 3d-0,0,0 punkt liegt mittig. bX+ geht nach links unten, bZ+ geht nach rechts unten, bY+ geht nach "oben" ![]() Ist das eventuell nur ein float-rundungsproblem oder soetwas? Alle werte verrechne ich als floats, am ende (bx,by,bz) wirds auf Int gecastet . Findet jemand meinen denkfehler? ![]() |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
https://www.blitzforum.de/foru...oordinaten
Holzchopfs Lösung ist einfach nur mustergültig. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ööööhh äääh, ähhm ![]() Gut, dass man das ganze nun anders betrachtet, verwirrt mich. Meiner meinung nach wäre es einfach möglich, die koordinaten auf tilebasis runterzubrechen und durch rundung auszurichten. (das ganze hat vor 2 tagen noch so funktioniert, danach habe ich allerdings das zeichnen umgebaut, sodass die teile anders lagen und ich das Picking neu schreiben musste.) Okay! Ich hau mal rein, kopiere das ganze. Wenn ich HC im chat mal antreffe, lass ich mir unklarheiten noch erklären *g* Danke Bladerunner! Ich sollte wohl öfters die Erweiterte Suche nutzen - durch die normale habe ich nichts brauchbares gefunden :/ Gruß, PhillipK ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group