Calculer le Volume d'un Tétraèdre à 4 points
J'ai besoin de calculer le volume de "tout" tétraèdre donné 4 points.
Je suis en train d'écrire un programme, qui doit trouver le volume du tétraèdre, et ce que je sais, c'est:
tous les X, Y, Z de l'emplacement des 4 points. La fonction retourner le volume.
Je suis coincé dans ce pendant 10 heures... je ne pouvais pas penser à QUELQUE chose.
Merci!
la langue que vous faites??
hors de propos
Je vais la mettre en œuvre en PHP, pour calculer le Volume total de la .Fichier STL en.wikipedia.org/wiki/STL_(file_format)
Je pensais que ce gars-là est de trouver le problème avec le code que cette question est simple. Il suffit d'appliquer la formule.
hors de propos
Je vais la mettre en œuvre en PHP, pour calculer le Volume total de la .Fichier STL en.wikipedia.org/wiki/STL_(file_format)
Je pensais que ce gars-là est de trouver le problème avec le code que cette question est simple. Il suffit d'appliquer la formule.
OriginalL'auteur Ivan Seidel | 2012-03-26
Vous devez vous connecter pour publier un commentaire.
Dire si vous avez 4 sommets a,b,c,d (3-D vecteurs).
Maintenant, le problème se résume à l'écriture de code qui résout produit vectoriel et produit scalaire de vecteurs. Si vous êtes de python, vous pouvez utiliser NumPy ou autre chose que vous pouvez écrire du code sur votre propre.
Le lien Wikipédia devrait certainement vous aider. LIEN
Regardez-le bien, ce n'est pas déterminant. Son mod. Le produit scalaire de deux vecteurs donne lieu à un nombre. donc, comme son volume, on ne peut pas assigner des nombres négatifs.. Donc le mod a été conservé.
Maintenant je l'ai eu! merci!
Si vous parlez de la croix du produit. Disons que vous disposez de 2 vecteurs, Un & B. Créer 2 tables chacune ayant 3 chiffres. Ainsi, la croix du produit doivent être écrites directement en tant que <br/>
iDir = (vectA[0] * ( (vectA[1]*vectB[2]) - (vectA[2]*vectB[1]) ) ) jDir = - ( vectA[1] * ( (vectA[0]*vectB[2]) - (vectA[2]*vectB[0]) ) ) kDir = (vectA[2] * ( (vectA[0]*vectB[1]) - (vectA[1]*vectB[0]) ) ) productAB = [iDir, jDir, kDir]
vous pouvez toujours aller pour un meilleur algorithme, mais c'est un basique à aller pour.
OriginalL'auteur Surya
Une façon pour le calcul de ce volume est: est-ce
Cela implique l'évaluation d'un 4×4 déterminant. Elle généralise bien pour simplices de dimensions supérieures, le 6 étant un cas particulier de n!, la factorielle de la dimension. Le volume résultant sera orienté, c'est à dire peut être négatif, selon l'ordre des points. Si vous ne voulez pas que, de prendre la valeur absolue du résultat.
Si vous avez une bibliothèque de mathématiques à portée de main, l'énoncé ci-dessus peut être parmi les plus faciles à écrire, et le logiciel peut prendre à partir de là. Si pas, vous pouvez simplifier les choses d'abord par la soustraction de la d coordonnées de un par c. Cela ne changera pas le volume, mais tourner la colonne la plus à droite dans
(0, 0, 0, 1)
. Comme un résultat, vous pouvez calculer la valeur de la matrice simplement comme le déterminant de la partie supérieure gauche de 3×3 submatrix. Et à l'aide de l'équationvous vous retrouvez avec la formule de Surya réponse.
Dans le cas où vous n'avez pas les coordonnées pour les points, mais seulement les distances entre eux, regardez La Formule de Tartaglia qui est des essentually un carré de version de ce qui précède, bien qu'il n'est pas aussi simple qu'il y paraît à première vue.
Je n'ai pas de référence à portée de main tout à l'heure. Le Wikipédia article sur Parallelotopes ne donne aucune référence. Si je devais prouver à moi-même maintenant, j'aimerais commencer par observer que la valeur est invariante par les translations et les rotations, et de démontrer que, dans le cas particulier où le coin supérieur gauche de 3×3 submatrix est triangulaire, le résultat est ce que vous obtenez si, pour chaque vecteur vous venez de prendre la composante orthogonale à toutes les vecteurs. Grâce à la invariance, qui déjà coveres le cas général.
Ok, merci! .
OriginalL'auteur MvG
Ivan Seidel exemple, en Python (la réponse est 1.3333...)
OriginalL'auteur ideasman42
Voici le code en PHP, qui calcule le Volume d'un Tétraèdre donné 4 points:
OriginalL'auteur Ivan Seidel