2016-08-21 7 views
0

Ich habe einen Artikel über normalisierte Gerätekoordinaten (auf dem DGL-Wiki) gelesen und folgendes Beispiel angegeben: "Betrachten wir, dass wir einen Viewport mit den Dimensionen 1024 Pixel (Breite) und 768 Pixel Höhe hatten. Ein Punkt P mit absoluten, nicht normalisierten Koordinaten P (350/210) wäre in normalisierten Koordinaten P (-0,32/-0,59) .Diese Koordinaten können jetzt auf einen Ansichtsfenster (800x600) projiziert werden, indem einfach der Multiplikator multipliziert wird normalisierte Gerätekoordinaten (ähnlich der Vektorskalierung) mit der Größe des Viewports, in diesem Fall wäre das Ergebnis P (273/164).Berechnung von Ansichtsfensterkoordinaten

Irgendwie kann ich nicht verstehen, wie man zu dem Ergebnis kommen kann (I meine 273/164 und -0,32/-0,59 ... könnte mir jemand erklären, wie man die Koordinaten berechnet?

P.S. : Dies ist der Artikel - https://wiki.delphigl.com/index.php/Normalisierte_Ger%C3%A4tekoordinate

Vielen Dank!

Antwort

1

Dieser Artikel fehlt definitiv Beschreibung. Ich kann dir einen Teil des Weges dorthin bringen; vielleicht kann jemand mit mehr Mathematik helfen, zu beenden.

Nach this answer der Formel konvertieren nicht normalisierte Koordinaten zum normalisierten Koordinaten ist:

Nx = (Cx/Sx) * 2.0 - 1.0

Ny = 1.0 - (Cy/Sy) * 2.0

(wo Cx/y = Koordinate X/Y; Sx/y = Bildschirm X/Y; und Nx/y = normalisiertes X/Y).

Anstecken der Zahlen des Beispiels in:

Nx = (350/1024) * 2 - 1 = -0.31640625 
Ny = 1 - (210/768) * 2 = 0.453125 

... oder (-.36, 0,45).

dies die neuen Koordinaten zu erhalten Umkehren:

(1 + Nx)/2 * Sx

(1 - Cy)/2 * Sx

Cx = (1 + -0.31640625)/2 * 800 = 273.4375 
Cy = (1 - 0.453125)/2 * 600 = 164.0625 

Beachten Sie, dass der Y-Wert nicht übereinstimmt. Dies ist wahrscheinlich, weil meine Berechnung nicht berücksichtigt das Seitenverhältnis, und es sollte sein, da diese Bildschirme ein Seitenverhältnis von 75 haben, während NDC ist 1. This SO answer kann auch helfen.

+0

Danke für Ihre Antwort und die Berechnungen! Jetzt habe ich es verstanden ! :) – Teo

+0

Ich bin froh, dass ich helfen konnte! –