Comment faire pour calculer le produit vectoriel?
J'ai le morceau suivant du pseudo-C/Java/C# code:
int a[]= { 30, 20 };
int b[] = { 40, 50 };
int c[] = {12, 12};
Comment puis-je calculer le produit vectoriel ABxAC?
- À partir de votre précédente question - "Comment puis-je par programmation calculer le produit scalaire/croix-produit?" Sans doute le signe est le signe de ce que le résultat de ce calcul est, donc, je dirais que c'est adupe.
- Pourquoi le titre est produit scalaire, mais la balise est produit croisé?
- Fixe. C'est parce qu'il a d'abord pensé croix et point de produits sont les mêmes.
- Regardant la réponse à la question précédente, qui est en fait correct, il n'a besoin de la croix du produit. Mais le calcul de la réduction de la composante Z de tous les points est considéré comme 0. Voir ma réponse ci-dessous. espoir (j'ai eu le droit de mathématiques)
- Tout le monde: OK, maintenant c'est un cas réel où le StackOverflow / "tous modifiables Wiki" est vraiment montrer ses limites. J'ai fait plusieurs erreurs et a essayé de "modifier", puis pendant ce temps il y a eu de grandes réponses et des commentaires, mais certains semblaient être "mauvais", en raison de modifications. Dans de tels cas, classique fil de discussion aurait été tellement mieux. Car au moins vous ne pouvez pas modifier / avoir des réponses ne correspondant pas à la question plus etc. (de ma faute et pas de ma faute, c'est un problème quand on cherche à avoir une "discussion" sur un site Wiki). C'est l'un des principaux DONC problème de convivialité, à mon avis.
- Tout le monde: merci beaucoup cela dit, j'ai donné +1 à tout le monde. J'ai juste foiré la terminologie et les modifications. Je déteste que les questions sont modifiables sur DONC et je viens de moi-même, par erreur, ce qui est l'un des principaux dangers de l'utilisation d'un Wiki pour la programmation de questions connexes. Car les questions peuvent parfois être non-subjectif encore besoin de la discussion et Wiki... et les minuscules Et les commentaires ne sont pas le bon endroit pour avoir une discussion. Ne peut pas attendre pour la prochaine expert/Usenet/SO chose. Il va juste être tellement mieux 🙂
Vous devez vous connecter pour publier un commentaire.
La solution qui vous a été donnée dans votre dernière question, ajoute essentiellement Z=0 pour tous vos points. Sur la façon prolongée vecteurs de vous calculer votre de la croix-produit. Géométriquement le produit vectoriel, produit d'un vecteur est orthogonal à deux vecteurs utilisés pour le calcul, car les deux vecteurs se situent dans le plan XY, le résultat n'aura qu'un composant Z. Le Signe de cette composante z indique que ce vecteur est à la recherche vers le haut ou vers le bas sur le plan XY. Ce signe est dependend sur AB étant dans le sens horaire ou dans le sens antihoraire afin de les uns des autres. Qui à son tour signifie que le signe de la composante z vous indique si le point vous êtes à la recherche se trouve à la gauche ou à la droite de la ligne qui est sur AB.
Donc, avec le crossproduct de deux vecteurs A et B étant la vecteur
avec Az et Bz étant zéro, vous êtes de gauche avec la troisième composante de ce vecteur
Avec Un être le vecteur d'un point a à b, et B est le vecteur d'un point a à c signifie
donnant
qui est un scalaire, le signe de l'scalaire va vous dire si le point c se trouve à gauche ou à droite de vecteur ab
Aternatively vous pouvez regarder un débordement de pile ou gamedev
En supposant que vous vous posez la question de savoir si l'angle entre AB et AC est aigu ou obtus, vous voulez que cela:
La la croix du produit est un vecteur, il n'a pas "un signe".
À-dire la scalaire (dot) produit? Si vous le faites, alors que c'est calculée comme pour une paire de vecteurs [a,b,c]•[d,e,f] tel que ad + être + cf, de sorte que le signe de cette expression est le signe du produit scalaire.
Déterminer le signe sans en faire les multiplications et ajoute est probablement pas plus rapide que de simplement les faire.
Depuis les trois points ont seulement deux composants, je vais supposer que la composante z de tous les trois est égal à zéro. Cela signifie que les vecteurs AB et BC sont dans le plan xy, de sorte que le produit vectoriel est un vecteur qui pointe dans la direction z, avec ses composants x et y égal à zéro.
Si par "signe" tu veux dire qu'il pointe dans le positif ou négatif de l'axe z, le calcul va vous le dire.
Dans votre cas, les deux vecteurs AB = (10, 30, 0) et AC = (-18, -8, 0). Si je prends le produit vectoriel de ces deux, je reçois vecteur AB X AC = (0, 0, 460). Voulez-vous dire que cela a un signe positif, car la composante z est positif? Si oui, c'est votre réponse.
Mise à JOUR: Si c'est le produit scalaire que vous voulez, il est négatif, dans ce cas:
AB dot AC = -180 -240 + 0 = à 420.
À la lecture de la question que vous avez lié, il semble que vous voulez le signe de la composante z de la croix-produit (en supposant que 0 valeur z pour AB et AC); pour indiquer de quel côté de la ligne AB, le point C se trouve.
En supposant que c'est le cas, tous vous avez besoin est le signe du déterminant de la matrice AB et AC comme ses lignes.