Portál AbcLinuxu, 10. května 2025 01:30
Zdravím,
Specifikace funkce:
void gluLookAt(float eyeX, float eyeY, float eyeZ, float centerX, float centerY, float centerZ, float upX, float upY, float upZ);
Potřeboval bych poradit jak převést moje parametry na parametry potřebné do této funkce.
Moje parametry jsou: -pozice na mapě(float x, float y, float z) -úhel natočení kamery(float angleX, float angleY, float angleZ)
Úhel hodnota je ve stupních! Díky za rady, pokud nějaké budou.
/ 0 1 0 \ L = | 0 0 1 | \ 1 0 0 /dále pracujeme v běžném rozložení os. Směrový vektor budeme chtít v základu v této poloze:
T d = (-1, 0, 0) ,přičemž
T d = (sin Θ cos φ, sin Θ sin φ, cos Θ)z toho plyne Θ = π/2 a φ = π. Vrškový vektor je při nulovém ψ:
T u = (-1, 0, 0) ,přičemž
T u = (-cos ψ, -sin ψ, 0) .Vrškový vektor budeme chtít transformovat spolu s natočením kamery a to následovně:
/ cos φ -sin φ 0 \ S = | sin φ cos φ 0 | \ 0 0 1 / / cos Θ 0 sin Θ \ T = | 0 1 0 | \ -sin Θ 0 cos Θ /Výsledné vektory jsou pak:
T Ld = (sin Θ sin φ, cos Θ, sin Θ cos φ) T LSTu = (-cos Θ sin φ cos ψ - cos φ sin ψ, sin Θ cos ψ, sin φ sin ψ - cos Θ cos φ cos ψ) .První je pak tedy jednotkový směrový vektor od eye k center a druhý je up. Po dosazení by pak úhlů:
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.