|
Odavno sam zavrsio skolu tako da nije zadatak nego hobi, a u skoli sam se zezao umesto da ucim. Idiot.
Polako sam poceo da ucim DirectX api, pa sam stigao do transformacija a gde je neophodno predznanje koje se ucilo jos u osnovnoj skoli pa mi treba pomoc.
Znaci koristim LH koordinatni sistem. (+x u desno, +y na gore, +z napred).
Recimo imam neki 3d model strelice koja pokazuje pravo (+z), znaci
forward vec = 0 0 1
up vec = 0 1 0
right vec = 1 0 0
e sad treba da izrotiram model (kreiram matrix) koristeci funkciju iz pomocne biblioteke D3DX D3DXMatrixRotationAxis
ako znam trenutnu poziciju modela P i poziciju nove "mete" M. Znam da je novi "forward vec" noviF = M - P.
E sad citao sam negde ali ne znam da li je tacno da je :
// ako sam normalizovao forward vektore
ugaoIzmedjuVektora = acos( stariF dot noviF )
vektorRotacije = noviF cross stariF
?
Da li je ujedno "vektorRotacije" i novi UP vektor?
To mi isto treba kasnije za nesto drugo.
Hvala na izdovjenom vremenu i na razumevanju na noob-ovska pitanja.
|