Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V celém Direct3D popisují vrcholy pozici a orientaci. Každý vrchol v primitivu je popsán vektorem, který dává jeho pozici, barvu, souřadnice textury a normální vektor, který dává orientaci.
Quaternions přidají čtvrtý prvek k hodnotám [x, y, z], které definují vektor tří komponent. Quaterniony jsou alternativou k maticové metody, které se obvykle používají pro 3D rotace. Kvaternion představuje osu ve 3D prostoru a otočení kolem této osy. Například kvaternion může představovat osu (1,1,2) a otočení 1 paprsku. Quaterniony mají cenné informace, ale jejich skutečná síla pochází ze dvou operací, které s nimi můžete provádět: složení a interpolace.
Provedení složení na kvaternionech je podobné jejich kombinování. Složení dvou kvaternionů není znázorněno jako na následujícím obrázku.
Složení dvou kvaternionů použitých na geometrii znamená "otočit geometrii o osu osou otočit otočením a pak ji otočit o osu₁ otočením.". V tomto případě Q představuje otočení kolem jedné osy, která je výsledkem použití q₁ na geometrii.
Pomocí interpolace kvazternionu může aplikace vypočítat plynulou a rozumnou cestu z jedné osy a orientace do druhé. Interpolace mezi q₁ a q₁ tedy poskytuje jednoduchý způsob animace z jedné orientace do druhé.
Když společně používáte složení a interpolaci, poskytují vám jednoduchý způsob, jak manipulovat s geometrií způsobem, který vypadá složitě. Představte si například, že máte geometrii, kterou chcete otočit na danou orientaci. Víte, že ho chcete otočit o stupně r₁ o ose r₁ stupňů kolem osy₁, ale neznáte konečný kvazternion. Pomocí složení můžete tyto dvě otočení na geometrii zkombinovat, abyste získali jediný kvazternion, který je výsledkem. Pak byste mohli interpolovat z originálu do složené kvazternionu, abyste dosáhli hladkého přechodu z jednoho na druhý.
Knihovna nástrojů D3DX obsahuje funkce, které vám pomůžou pracovat s kvaterniony. Například funkce D3DXQuaternionRotationAxis přidá hodnotu otočení do vektoru, který definuje osu otočení, a vrátí výsledek v kvazternionu definovaném D3DXQUATERNION strukturou. Kromě toho D3DXQuaternionMultiply funkce kompoziuje kvazterniony a D3DXQuaternionSlerp provádí kulovou lineární interpolaci mezi dvěma kvarterniony.
Aplikace Direct3D můžou používat následující funkce ke zjednodušení práce s kvaterniony.
- D3DXQuaternionBaryCentric
- D3DXQuaternionConjugate
- D3DXQuaternionDot
- D3DXQuaternionExp
- D3DXQuaternionIdentity
- D3DXQuaternionInverse
- D3DXQuaternionIsIdentity
- D3DXQuaternionLength
- D3DXQuaternionLengthSq
- D3DXQuaternionLn
- D3DXQuaternionMultiply
- D3DXQuaternionNormalize
- D3DXQuaternionRotationAxis
- D3DXQuaternionRotationMatrix
- D3DXQuaternionRotationYawPitchRoll
- D3DXQuaternionSlerp
- D3DXQuaternionSquad
- D3DXQuaternionToAxisAngle
Aplikace Direct3D můžou používat následující funkce ke zjednodušení práce se třemi vektory komponent.
- D3DXVec3Add
- D3DXVec3BaryCentric
- D3DXVec3CatmullRom
- D3DXVec3Cross
- D3DXVec3Dot
- D3DXVec3Hermite
- D3DXVec3Length
- D3DXVec3LengthSq
- D3DXVec3Lerp
- D3DXVec3Maximize
- D3DXVec3Minimize
- D3DXVec3Normalize
- D3DXVec3Project
- D3DXVec3Scale
- D3DXVec3Subtract
- D3DXVec3Transform
- D3DXVec3TransformCoord
- D3DXVec3TransformNormal
- D3DXVec3Unproject
Mnoho dalších funkcí, které zjednodušují úlohy pomocí vektorů dvou a čtyř komponent, jsou součástí matematických funkcí poskytované knihovnou nástrojů D3DX.
Související témata