Comment calculer vec4 de la croix-produit avec glm?
Pourquoi cela déclenche une erreur de compilation: no matching function for call to ‘croix(glm::vec4&, glm::vec4&)’
glm::vec4 a;
glm::vec4 b;
glm::vec4 c = glm::cross(a, b);
mais il fonctionne très bien pour vec3?
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas une telle chose comme un 4D vecteur de la croix-produit; l'opération n'est définie que pour la 3D vecteurs. Eh bien, techniquement, il y a un sept-dimensions vecteur de la croix-produit, mais de toute façon je ne pense pas que vous êtes à la recherche pour que.
Depuis 4D vecteur de la croix-produits ne sont pas mathématiquement raisonnable, GLM n'offre pas de fonction pour le calculer.
Ce n'votre vec4 représentent? Comme Nicol dit, de la croix-produits sont uniquement pour la 3D vecteurs. La croix le fonctionnement d'un produit est utilisé à trouver un vecteur est orthogonal à deux vecteurs en entrée. Donc, si votre vec4 représentent 3D homogène des vecteurs de la forme {x, y, z, w}, alors le composant w n'est pas question pour vous; Vous pouvez simplement l'ignorer.
Une solution de contournement pourrait aller comme suit:
Il suffit de tourner votre vec4 dans vec3 de, effectuer le produit croisé, puis ajouter un composant w de 1 de nouveau en lui.
La généralisation de la croix est le produit le coin du produit, et le coin du produit de deux vecteurs est une 2-forme, aussi connu comme un bivector.
En 3-l'espace, la 2-forme ressemble un peu à un vecteur, mais il se comporte tout à fait différemment. Supposons que nous avons deux non-colinéaires vecteurs tangent à une surface (aka les vecteurs tangents). En prenant le produit croisé de ces vecteurs, nous avons une 2-forme qui représente le plan tangent. Nous pouvons aussi représenter que le plan tangent par le vecteur normal à ce plan (aka le vecteur normal). Mais la tangente et de la normale vecteurs sont transformés différemment, c'est à dire le vecteur normal est transformé par l'inverse de la transposée de la matrice utilisée pour transformer les vecteurs tangents.
En 4-l'espace, la 2-forme résultant de la cale du produit de deux vecteurs représente également le plan contenant les deux vecteurs (c'est également vrai dans N espace). De même pour le cas de 3-espace, on peut avoir une autre interprétation de l'avion, mais en 4-l'espace, le complément d'un avion n'est pas un 4-vecteur, mais un autre plan, qui sont tous deux représentés à 6 composantes, pas 4.
Depuis glm ne fournit pas les API pour wedge produits, vous devrez faire vos propres. Vous pouvez travailler facilement sur l'algèbre de la cale de produit avec deux règles simples:
où l'ei et ej sont la composante des vecteurs (des bases) de l'espace vectoriel, par exemple
Les 7 dimensions du vecteur évoqué dans un post précédent est géométrique du produit de deux vecteurs, qui utilise ie^ei=1 au lieu de la règle (1) ci-dessus, et c'est comme une combinaison de la dot et de la croix-des produits (ou des multiplications complexes), ce qui est plus que ce que vous voulez.
Pour plus d'informations, https://en.wikipedia.org/wiki/Exterior_algebra ou https://en.wikipedia.org/wiki/Geometric_algebra .
Il n'y a plus de raccourci de façon à calculer le produit vectoriel en utilisant glm du GLM_SWIZZLE.
Il suffit de ne
#define GLM_SWIZZLE
avant l'inclusion de tout glm fichier. Il est aussi très utile pour beaucoup d'autres trucs.