Positionen umrechnen - finde den fehler nicht :O

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

 

PhillipK

Betreff: Positionen umrechnen - finde den fehler nicht :O

BeitragFr, Okt 28, 2011 21:26
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Sad Dann verziehts sich entweder nach links, oder nach rechts.

3d-0,0,0 punkt liegt mittig. bX+ geht nach links unten, bZ+ geht nach rechts unten, bY+ geht nach "oben" Smile

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? Smile

BladeRunner

Moderator

BeitragFr, Okt 28, 2011 21:56
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Okt 29, 2011 13:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Ööööhh äääh, ähhm Smile

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 Smile

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group