Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 01-10-2021 17:27:56

Noha
Invité

Trouver la hauteur d'un point situé entre trois coordonées

Bonjour,

Je butte depuis ce matin sur un problème, j'espère sincèrement trouver de l'aide ici :)

J'ai trois coordonnées qui forment un triangle, à l'intérieur de ce triangle, sur le même plan, j'ai un point. Je connait X et Y de mon point, je cherche à obtenir Z.

Voici un exemple: Mes trois cotés du triangle A,B et C. Je veux obtenir PZ.

AX = -11.78;           BX = 7.41;          CX = 16.57;
AY = -6.01;             BY = 22.26;         CY = -20.2;
AZ = -2.17;             BZ = 1.37;          CZ = 3.06;


PX = 4.25;
PY = -1.68;
    //PZ = 0.78

J'ai fait une simulation sur en modélisation 3d, il me dit que pour ces données PZ = 0.78. J'ai essayé dix milles solutions et retourné le problème dans tout les sens je n'arrive pas à trouver la formule dont j'ai besoin.... Il faut dire que je suis hyper loin d'être un crack en mathématiques :p

Au plaisir de lire vos suggestions j'espère que sa ne sera pas trop compliqué :)

#2 01-10-2021 17:42:45

Paco del Rey
Invité

Re : Trouver la hauteur d'un point situé entre trois coordonées

Bonjour Noha.

Je te propose la méthode suivante :

1 - Tu calcules les coordonnées des vecteurs $\overrightarrow{AB}$ et $\overrightarrow{AC}$.
2 - Tu détermines un vecteur normal $\vec n = \overrightarrow{AB} \wedge\overrightarrow{AC}$.
3 - Tu détermines $P_Z$ pour que le produit scalaire $\vec n \cdot \overrightarrow{AP}$ soit nul.

Paco.

#3 01-10-2021 17:54:30

Noha
Invité

Re : Trouver la hauteur d'un point situé entre trois coordonées

Merci Paco, quel réactivité :) :)

Je me pencherai dessus plus tard quand les petits serons au lit !

#4 01-10-2021 23:57:09

Noha
Invité

Re : Trouver la hauteur d'un point situé entre trois coordonées

Re-Bonsoir,

Je reviens bredouille... Je crois que je suis un peu largué.. J'ai beau connaitre le Pz réel je ne parviens pas à faire en sorte que mon produit scalaire soit nul, et je ne suis même pas sûr du résultat du vecteur normal que j'ai défini. Je pensais pas que définir Pz soit si compliqué vu tout les nombres connus!
Enfin bon j'y ai déjà passé une bonne partie de la journée il me faudra attendre d'avoir une aide plus accompagnée à mon niveau je crain.

Merci en tout cas pour les tuyaux, je sais au moins un peu plus dans quelle direction chercher maintenant.

Bonne soirée

#5 02-10-2021 00:36:50

Noha
Invité

Re : Trouver la hauteur d'un point situé entre trois coordonées

En fait ce que je cherche à faire est de calculer une des trois coordonnées d'un point coplanaire à trois autres point dont je connait les coordonnées, je trouve énormément d'explications pour définir si 4 point sont coplanaires mais aucun détails sur comment calculer une coordonnée manquante.

#6 02-10-2021 07:44:17

Paco del Rey
Invité

Re : Trouver la hauteur d'un point situé entre trois coordonées

Bonjour Noha.

J'ouvre une session Xcas.

Je pose successivement :
A:=[-11.78,-6.01,-2.17]
B:=[7.41,22.26,1.37]
C:=[16.57,-20.2,3.06]
P:=[4.25,-1.68,z]

Puis je calcule les vecteurs:
u:=B-A
--> [19.19,28.27,3.54]
v:=C-A
--> [28.35,-14.19,5.23]
et leur produit vectoriel
n:=cross(u,v)
--> [198.0847,-0.00469999999768,-1073.7606]
On remarque que la deuxième coordonnée est fausse pour des raisons d'arrondi. Il faudrait lire -0.0047.
Pour éviter ces erreurs, il vaudrait mieux travailler avec des entiers, donc multiplier toutes les coordonnées par 100.
w:=P-A
--> [16.03,4.33,z+2.17]
Je calcule le produit scalaire de n par w. C'est aussi le produit mixte de u, v et w, c'est-à-dire au signe près le volume du parallélépipède construit sur A, B, C et P. Ce volume est nul si les quatre points sont coplanaires.
f:=n*w
--> 3175.27739-1073.7606*(z+2.17)
Je cherche z pour que ce produit scalaire/volume f soit nul. C'est une équation du premier degré :
solve(f=0,z)
--> 0.787155803631

Ce qui nous donne $z=0,79$ à $0,01$ près.

Paco.

#7 02-10-2021 12:50:25

Noha
Invité

Re : Trouver la hauteur d'un point situé entre trois coordonées

Re Bonjour,

Sa Maaaaarche!!!!! Merci beaucoup vraiment Paco vous avez été super!! Votre programme est super intéressant je l'ai téléchargé :)

Voici donc mon code final:

    double AX;
    double AY;
    double AZ;

    double BX;
    double BY;
    double BZ;

    double CX;
    double CY;
    double CZ;

    double PX;
    double PY;


    double AB[3] = { BX - AX, BY - AY, BZ - AZ };
    double AC[3] = { CX - AX, CY - AY, CZ - AZ };


    double N[3] = { (AB[1] * AC[2]) - (AB[2] * AC[1]) , (-AB[0] * AC[2]) + (AB[2] * AC[0]) , (AB[0] * AC[1]) - (AB[1] * AC[0]) };

    double AP[3] = { PX - AX, PY - AY, 0 - AZ };

    double Pr[3] = { (N[0] * AP[0]), N[2] };

    double PZ = (-Pr[0] / Pr[1] - AP[2]);

Je suis en train d'écrire un petit programme qui à pour fonction d'ajuster les niveaux Z d'un Gcode (opération d'usinage CNC) en fonction d'une opération de palpage (et donc un nuage de point).
J'ai presque fini grâce à toi :)

Belle continuation

Noé.

#8 02-10-2021 15:57:00

Noha
Invité

Re : Trouver la hauteur d'un point situé entre trois coordonées

J'ai fait une erreur, autant pour moi :)

    double AB[3] = { TriangulationX[1] - TriangulationX[0], TriangulationY[1] - TriangulationY[0], TriangulationZ[1] - TriangulationZ[0] };
    double AC[3] = { TriangulationX[2] - TriangulationX[0], TriangulationY[2] - TriangulationY[0], TriangulationZ[2] - TriangulationZ[0] };


    double N[3] = { (AB[1] * AC[2]) - (AB[2] * AC[1]) , (-AB[0] * AC[2]) + (AB[2] * AC[0]) , (AB[0] * AC[1]) - (AB[1] * AC[0]) };

    double AP[3] = { *PX - TriangulationX[0], *PY - TriangulationY[0], 0 - TriangulationZ[0] };

    *PZ = ((((N[0] * AP[0]) + (N[1] * AP[1])) * -1) / N[2]) - AP[2] ;

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
soixante dix-huit moins sept
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums