Sdílet prostřednictvím


Vektory, vrcholy a kvaterniony (Direct3D 9)

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.

ilustrace kvarternionového zápisu

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.

Aplikace Direct3D můžou používat následující funkce ke zjednodušení práce se třemi vektory komponent.

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.

souřadnicových systémů a geometrických