Portál AbcLinuxu, 1. listopadu 2025 04:01
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.