Voir la version complète : distance point/axe
Bonjour à tous,
J'ai un axe a de direction (x, y, z)
J'ai un point p de coordonnées (x', y', z')
Je voudrais connaître la distance minimale qui s'pare p et a.
En fait je voudrais connaitre la taille du segment perpendicualaire à a, passant par p.
Y'a une fonction directx qui le fait ça ou faut bidouiller?
Merci,
A bientôt :)
grob1212
17/12/2005, 19h22
L'équation de projection :
http://membres.lycos.fr/emauvais/idm/GeoAPDisPoiDro.htm
Quand à la fonction D3DX, je n'en ai pas connaissance.
Merci Patrick, je test ça tout à l'heure ;)
A bientôt
Je vois pas trop comment adapter la formule à mon vector(x, y, z)/point (x, y, z)...
M'enfin, j'ai essayé d'adopter à mon repère 3D (puisque la formule s'applique à un repère 2d), pour commencer, en testant avec la voiture à l'origine du repère global j'ai fait
d = ((axe.x * newWheels[i].x) + (axe.z * newWheels[i].z) + (axe.y * newWheels[i].y)) / sqrtf((axe.x * axe.x) + (axe.z * axe.z) + (axe.y * axe.y));
newWheels c'est les coordonnées de chacunes de mes roues recalculées depuis la dernière mise à jour des positions.
En fait, là, mon axe (1.0, 0.0, 0.0), j'obtient les résultats comme si l'axe était égale à (0.0f, 0.0f, 1.0f)...
Je vais continuer à chercher avec des dessins... j'apprends vite, mais y me faut des dessin à moi :p
Merci :)
La distance d'un point p à un plan se calcule ainsi (Distance plan (http://homeomath.imingo.net/displan.htm)):
Distance = NormaleDuPlan.Point+Constante du plan (D=N.p+Cp)
tu as besoin d'un point d'origine sur ton axe de direction (x,y,z)
tu peux l'assimiler à un lancer de rayon ,si tu fais des recherches sur lancer de rayon tu vas trouver plein d'infos.
Pour définir un rayon , tu as besoin de connaitre son point d'origine et son vecteur directeur.
Admettons que ton point d'origine soit d0 avec ton vecteur directeur Vd(x,y,z) normé
Tu calcules la distance de la projection du point p sur le rayon à l'origine du rayon.
Dist=d0p.Vd avec d0p c'est le vecteur partant de d0 à p
Et ensuite tu appliques pythagore pour calculer la distance de ton point au rayon
D²=||d0p||²-Dist²
Ben en fait voilà le problème:
J'ai une voiture sur un plan, et j'ai trouvé l'axe local à la voiture pour l'incliner et "coller au plan".
Maintenant, je cherche l'angle d'inclinaison sur cet axe.
Alors pour ça, j'ai les coordonnées du centre de la voitures, les coordonnées des 4 roues, les heuteurs de chaque roues etc...
Bref, pour savoir sur quelles roues on se base, il faut prendre les deux roues les plus éloignées de l'axe.
Une fois ça de fait, faut calculer l'angle, et c'est maintenant là que je bloque :'(
En fait pour la distance d'un point à une droite, y'a D3DXVec3Dot qui le fait, enfin j'pense que c'est ça.
vBulletin® v.3.6.5, Copyright ©2000-2009, Jelsoft Enterprises Ltd. Tous droits réservés - Version française vbulletin-fr.org