Forum » » Création-Développement » » Question math 3D
Posté : 05-09-2013 15:04
GRANDS MERCIS
J'avais vu qque chose de similaire sur wikipedia mais là c'est bien mieux fait
OK on remets tout en C et ça devrais donner ça :
==================================
Vertex3D A,B,V;
Vertex3D AV,AB,P;
float h2,h,x;
AV.x =V.x - A.x;
AV.y =V.y - A.y;
AV.z =V.z - A.z;
AB.x =B.x - A.x;
AB.y =B.y - A.y;
AB.z =B.z - A.z;
P.x=AV.y*AB.z - AV.z*AB.y;
P.y=AV.z*AB.x - AV.x*AB.z;
P.z=AV.x*AB.y - AV.y*AB.x;
h2 =( P.x*P.x + P.y*P.y + P.z*P.z) / (AB.x*AB.x + AB.y*AB.y +AB.z*AB.z);
h = sqrt(h2);
x = sqrt( AV.x*AV.x + AV.y*AV.y + AV.z*AV.z - h2)
if( ( AV.x*AB.x + AV.y*AB.y + AV.z*AB.z ) <0)
x=-x;
=====================================
C'est moi ? ou alors le language C parais plus clair que celui des maths ? ;-P
A noter que AB est constant puisque c'est la longueur de l'os (bone) au repos (et on fait la "skin" sur le bonhomme au repos) donc on peut le précalculer (valable pour tout les Vs) et que dès que h2 est connu on peut savoir si le point V n'appartient pas à ce bone car trop éloigné de l'os
x ne sert en fait qu'à calculer la "force" à appliquer à ce point V
Ca devrait marcher
Alain
Message édité par : thellier / 05-09-2013 15:14
Message édité par : thellier / 05-09-2013 15:15
Cet article provient de Le site des utilisateurs francophones actuels et futurs d'AmigaOS 4.x
https://amiga-ng.org/viewtopic.php?topic=1651&forum=14