Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 03. 12. 2008 12:29

Sokolik
Příspěvky: 27
 

Kamera kroužící v prostoru - geometrický problém

Dokončuju jednu aplikaci ve Flashi, kde simuluju kruhovej pohyb kamery nad rovinou (povrch země) (je ve skutečnosti tvořená skupinou bodových objektů, který na ní leží). Kamera se nehýbe, stojí v bodě (0,0,0) a čumí do osy z, kde se v určitým místě setkává s tou rovinou. Ta je buď vodorovná, takže splývá s přímkou, nebo nakloněná podle osy x, takže to vypadá, jako by se kamera dívala shora šikmo dolů. Mám transformace pro otáčení roviny kolem svého středu ve všech třech osách. Chci, aby kamera kroužila "nad rovinou". Jenže když je rovina nakloněná, tak toho nedocílím jednoduchým otáčením podle osy y, protože se mi během 90 stupňů začne obracet "naruby". Potřebuju to kombinovat s otáčením kolem dalších os, abych rovinu měl pořád jako na dlani nezávisle na tom, jak je nakloněná kolem osy x.

To je právě to, co by mě zajímalo. Vzorec, kerej určuje, o kolik se má rovina otočit kolem ostatních os nebo posunout, když kolem osy y (směřující vzhůru) se otočí o úhel alfa.

http://forum.matweb.cz/upload/846-normaltoandfrocamera.jpg

Stručněji by se problém nejspíš dal popsat takhle: Je dána rovina, která má normálu rovnoběžnou s rovinou yz. (Tudíž je nakloněná pouze podle osy x.) Pak je dána nová rotace dle osy y. Chci další dvě rotace/posunutí v osách x a z, aby po výsledné transformaci zůstávala normála výsledný roviny rovnoběžná s rovinou yz.

Offline

 

#2 04. 12. 2008 02:49

Kondr
Veterán
Místo: Linz, Österreich
Příspěvky: 4246
Škola: FI MU 2013
Pozice: Vývojář, JKU
Reputace:   38 
 

Re: Kamera kroužící v prostoru - geometrický problém

Nikdy jsem nedělal ve Flashi tak nevím, co umožňují jeho knihovny nebo jak jsou tam reprezentovány ty 3D objekty ... ale pokud jde o to, že na vstupu dostaneme souřadnice bodu před otočením a máme vrátit nové, pak bych místo dopočítávání nějakých úhlů bych rovinu otáčel kolem normály. Je totiž poměrně jednoduché napočítat matici, která takové otáčení provádí. Získáš ji jako $A^TRA$, kde R je matice otáčení kolem osy y (http://en.wikipedia.org/wiki/Rotation_m … n_matrices) a A je matice přechodu mezi soustavou kamery a soustavou roviny.
Násobit vektor maticí $A^TRA$ znamená vlastně
1) sklopit rovinu zpátky tak, aby byla normála ve směru y (tzn. násobit maticí A)
2) provést otočení (vynásobit R)
3) sklopit zpátky (vynásobit A^T)


BRKOS - matematický korespondenční seminář pro střední školy

Offline

 

#3 04. 12. 2008 11:08

Sokolik
Příspěvky: 27
 

Re: Kamera kroužící v prostoru - geometrický problém

Jó, to je vono! Super, díky moc! A vypadá to tak jednoduše, ale každýho to jen tak nenapadne :)

Flash CS3 má někde jakýsi 3D knihovny ke stažení, ale stejně to vypadá divně, takže jsem si to radši udělal sám. Zatím jsem to otestoval posloupností tří maticových transformací, které používám na otáčení, ale vypočítám si na to tu matici součinu, ať je to rychlejší.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson