Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Anonymous

unregistriert

1

31.07.2005, 16:50

Bildschirm in Weltkoordinaten und umgekehrt

Hallo,
ich arbeite zurzeit an einer Anwendung mit DirectX und habe nun das Problem, dass ich Bildschirmkoordinaten in Weltkoordinaten umwandeln muss, sich aber die beiden Koordinatensysteme nicht nur in ihrer Achsenausrichtung und ihrer Position unterscheiden sondern auch in ihrer Achseneinteilung. Kennt jemand vielleicht eine Funktion von DirectX die solche Umwandlungen vornehmen kann oder weiß jemand wie sich so etwas mathematisch umsetzen lässt?
MfG
Der Gast

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

31.07.2005, 17:03

Schau mal unter picking. Und anderrum macht man ja mit der Welt/Kamera/Projektion Matrix
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

3

31.07.2005, 23:26

mathematisch gesehen sind Koordinatentransformationen nichts anders als anwendung trigonometrischer funktionen, die sich auch wunderbar zu matrizen zusammenfassen lassen 8)

Anonymous

unregistriert

4

01.08.2005, 18:31

hm könnte man nicht die Umrechnung in Bildschirmkoordinaten mit der View/Projection Matrix rückgängig machen? Ich poste mal den Code mit dem ich bisher die Umrechnung in Bildschirmkoordinaten vorgenommen habe:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
POINT ScreenToWorld( float X, float Y )
{

    POINT RESULT;
    float tmpX;
    float tmpY;
    float tmpW;


    tmpX = X/matViewProj._11 +
           Y/matViewProj._21 +
           1.0f/matViewProj._41;

    tmpY = X/matViewProj._12 +
           Y/matViewProj._22 +
           1.0f/matViewProj._42;

    tmpW = X/matViewProj._14 +
           Y/matViewProj._24 +
           1.0f/matViewProj._44;


    RESULT.x = (long)((1.0f + (tmpX*tmpW))*0.5f*(float)windowwidth);
    RESULT.y = (long)((1.0f - (tmpY*tmpW))*0.5f*(float)windowheight);


    return RESULT;

} // ScreenToWorld

Phil_GDM

Alter Hase

Beiträge: 443

Wohnort: Graz

Beruf: Student-Softwareentwicklung u. Wissensmanagement

  • Private Nachricht senden

5

01.08.2005, 20:09

sieh mal in diesen Thread

https://www.spieleprogrammierer.de/phpBB…dxvec3unproject

mfg Philipp

Werbeanzeige