Waarom is 4×4 matrices die worden gebruikt om dingen in 3D te transformeren?

Vraag
Inderdaad 4×4 matrices is erg handig om dingen in 3D te transformeren! U kunt een vector toevoegen in het geval van vertaling.

Reden achter het gebruik van 4×4 matrices om dingen in 3D te transformeren

De reden om een ​​matrix te gebruiken komt neer op een uniforme manier om met verschillende gecombineerde transformaties om te gaan.

Bijvoorbeeld, rotatie wordt meestal gedaan met behulp van een matrix, dus om met meerdere transformaties om te gaan (rotatie/vertaling/schaling/projectie…enz) op een uniforme manier, je moet ze in een matrix coderen.

Goed, meer technisch gesproken; een transformatie is het afbeelden van een punt/vector naar een ander punt/vector.

p` = T(p); 

waarbij p` het getransformeerde punt is en T(p) is de transformatiefunctie.

Aangezien we geen matrix gebruiken, moeten we dit doen om meerdere transformaties te combineren:

p1=T(p);

plaatste = M(p1);

Een matrix kan niet alleen meerdere typen transformaties combineren tot één enkele matrix (bv. affiniteit, lineair, projectief).

Het gebruik van een matrix geeft ons de mogelijkheid om ketens van transformaties te combineren en ze vervolgens batchgewijs te vermenigvuldigen. Dit bespaart ons een hoop cycli, meestal door de GPU (met dank aan @ChristianRau voor het erop wijzen).

Tlaatste = T * R * P; // vertalendraaienproject

plaatste = Tlaatste*p;

Het is ook goed om erop te wijzen dat GPU's en zelfs sommige CPU's zijn geoptimaliseerd voor vectorbewerkingen; CPU's die gebruikmaken van SIMD en GPU's zijn door hun ontwerp gegevensgestuurde parallelle processors, dus het gebruik van matrices past perfect bij hardwareversnelling (Eigenlijk, GPU's zijn ontworpen om te passen bij matrix-/vectorbewerkingen).


CREDIT:

https://gamedev.stackexchange.com/questions/72044/why-do-we-use-4×4-matrices-om-dingen-in-3d-te-transformeren?answertab=actief#tab-top

Laat een antwoord achter