Waarom is 4×4 matrices die worden gebruikt om dingen in 3D te transformeren?
Reden achter het gebruik van 4×4 matrices om dingen in 3D te transformeren
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
Je moet Log in of registreren om een nieuw antwoord toe te voegen.