3D matematika - kvaternioni

Sve vezano u matematiku & fiziku koja zaluta u vaš projekt.
Post Reply
User avatar
Overseer
Spaaaaaaace!
Spaaaaaaace!
Posts: 593
Joined: Tue Aug 26, 2008 2:02 pm

3D matematika - kvaternioni

Post by Overseer » Tue Aug 26, 2008 9:37 pm

Evo jedna "zanimljiva" tema za sve koje zanima 3D matematika i načini koji im mogu poboljšati 3D mehaniku. Dakle, kvaternion je kompleksni broj definiran koristeći 3D vektor v = < x, y, z > i skalarnom vrijednošću s = w. Kvaternion jedinične duljine nudi alternativni format za spremanje rotacijskih podataka. Smjer vektora v reprezentira proizvoljnu os oko koje će se rotacija dogoditi. Spremljena je kao jedinični vektor koji je bio skaliran sin-om polovine kuta θ ( rotacija kuta u radijanima // 180/pi stupnjeva ). Skalarna vrijednost w upotpunjuje rotacijske podatke i definirana je kao cosine polovine kuta θ.

q = (s, v) = [w, <x, y, z>]
q = [cos (θ / 2 ), |v| * sin(0/2]

Korištenje kvaterniona ima mnoštvo prednosti nad tradicionalnim korištenjem matrica za spremanje rotacijskih podataka. Najočiglednija stvar je manje korištenje memorije računala, što pridonosi optimizaciji vašeg softvera. K tome, ulančavanje kvaterniona je nešto brže od onog kod matrica. Dok točke (vertices) ne mogu se transformirati preko kvaterniona direktno, kvaternioni se vrlo jednostavno pretvaraju u format matrice. Sama primjena ovoga je mekša i ljepša interpolacija između rotacija.


Image

Pošto je kvaternion kompleksan broj, sastoji se i od realnog i imaginarnog dijela. Upoznavati vas sa kompleksnim brojevima neću, no ako vas zanima imate mnoštvo izvora na netu. I što kažete?
Don't combine bracket and dot syntax in Objective-C, it's bad practice and quite irritating.
There is no such thing as a better graphics API. They are just different. And hot. And sexy. I should stop now.
Your matrices are belong to us.

Tomislav
Posts: 93
Joined: Tue Aug 26, 2008 8:10 pm
Smallest prime number bigger than 20: 23
Location: Samobor
Contact:

Re: 3D matematika - kvaternioni

Post by Tomislav » Tue Aug 26, 2008 9:40 pm

Pa quaternioni su definitivno korisni ako radis animaciju na CPU, ali ako se pak koristi GPU - matrice i vektori su jednostavno brži jer je danasnja gpu arhitektura napravljena za njih.

I koliko znam mozes se mnoziti vektor quaternionom... ali je formula nesto tipa: v' = q * v * q^-1

User avatar
Overseer
Spaaaaaaace!
Spaaaaaaace!
Posts: 593
Joined: Tue Aug 26, 2008 2:02 pm

Re: 3D matematika - kvaternioni

Post by Overseer » Tue Aug 26, 2008 9:50 pm

heodox wrote:Pa quaternioni su definitivno korisni ako radis animaciju na CPU, ali ako se pak koristi GPU - matrice i vektori su jednostavno brži jer je danasnja gpu arhitektura napravljena za njih.

I koliko znam mozes se mnoziti vektor quaternionom... ali je formula nesto tipa: v' = q * v * q^-1
Razvojem GPUa definiitivno ovo će biti sve pristupačnije, no ipak developeri grafičkih malo previše iziskuju od GPUa... Prije se fizika kalkulirala na procesoru što je u to vrijeme bilo poprilično gušljivo za isti, prebacivanjem svega na GPU je izgledalo obećavajuće no stvarno smatram da bi se trebala koristiti snaga višejezgrenih procesora i multithreading. GPU bi se trebao alocirati za kalkulacije fp 3d matematike i na to se koncentrirati. No kao što si rekao, opća je činjenica da su vektori i matrice osnova modernog GPUa te je specijaliziran za visokoprecizne float kalkulacije. Ali :D.. Uvijek ali... Smatram da bi trebalo koristiti snagu CPUa također.
Don't combine bracket and dot syntax in Objective-C, it's bad practice and quite irritating.
There is no such thing as a better graphics API. They are just different. And hot. And sexy. I should stop now.
Your matrices are belong to us.

Tomislav
Posts: 93
Joined: Tue Aug 26, 2008 8:10 pm
Smallest prime number bigger than 20: 23
Location: Samobor
Contact:

Re: 3D matematika - kvaternioni

Post by Tomislav » Tue Aug 26, 2008 9:57 pm

RayDX wrote:Razvojem GPUa definiitivno ovo će biti sve pristupačnije, no ipak developeri grafičkih malo previše iziskuju od GPUa... Prije se fizika kalkulirala na procesoru što je u to vrijeme bilo poprilično gušljivo za isti, prebacivanjem svega na GPU je izgledalo obećavajuće no stvarno smatram da bi se trebala koristiti snaga višejezgrenih procesora i multithreading. GPU bi se trebao alocirati za kalkulacije fp 3d matematike i na to se koncentrirati. No kao što si rekao, opća je činjenica da su vektori i matrice osnova modernog GPUa te je specijaliziran za visokoprecizne float kalkulacije. Ali :D.. Uvijek ali... Smatram da bi trebalo koristiti snagu CPUa također.
Naravno, slazem se da je cpu slabo iskoristen, ne vidim razlog zasto bi gpu radio fiziku kad je ionako zagusen s grafikom, no mislim da to nece dugo potrajati jer ako podrzava samo jedan proizvodac niti jedan pametan developer nebi previse nabijao fiziku koja bi radila polovici trzista.

User avatar
Burek_fr0m_SPACE
Man from Another Place
Posts: 229
Joined: Tue Aug 26, 2008 2:11 pm
Smallest prime number bigger than 20: 23
Location: Black Lodge
Contact:

Re: 3D matematika - kvaternioni

Post by Burek_fr0m_SPACE » Wed Aug 27, 2008 12:55 pm

Valja napomenuti da kvaternioni nude i "uniformnost" rotacije, tj. nema problematičnih uglova i "lockova" kao kada se ugao izražava sa yaw-pitch-roll.

User avatar
Overseer
Spaaaaaaace!
Spaaaaaaace!
Posts: 593
Joined: Tue Aug 26, 2008 2:02 pm

Re: 3D matematika - kvaternioni

Post by Overseer » Wed Aug 27, 2008 1:05 pm

Burek_fr0m_SPACE wrote:Valja napomenuti da kvaternioni nude i "uniformnost" rotacije, tj. nema problematičnih uglova i "lockova" kao kada se ugao izražava sa yaw-pitch-roll.
Da, implementacija kamere je malo manja bol u guzici koristeći njih.
Don't combine bracket and dot syntax in Objective-C, it's bad practice and quite irritating.
There is no such thing as a better graphics API. They are just different. And hot. And sexy. I should stop now.
Your matrices are belong to us.

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest