Pages: 1
- Sujet précédent - Détemination du Z d'un point M connu en XY appartenant à un triangle3D - Sujet suivant
#1 Thu 13 June 2013 23:00
- JFBOIZET
- Participant actif
- Lieu: FREJUS
- Date d'inscription: 23 Jul 2012
- Messages: 145
Détemination du Z d'un point M connu en XY appartenant à un triangle3D
Bonjour
Ayant réalisé la triangulation de DELAUNAY sur un semis de points TN en xyz,
Je recherche la méthode mathématique pour définir l''altitude d'un point I connu en XY appartenant à un triangle 3D (donc un plan 3d) dont les 3 points A B et C sont connus en xyz.
Sachant que les 3 points du triangle A B et C sont définis en X Y Z
Que le point I est défini en XY
Déterminer le Z du point M à partir des données connues….
Cela afin de programmer la détermination de l’altitude d’un point dans un triangle…
soit Z du point I = fonction de { A xyz B xyz C xyz et I xy }
vous remerciant de votre aide
Cordialement
Jean François BOIZET
Dernière modification par JFBOIZET (Thu 13 June 2013 23:03)
Hors ligne
#2 Fri 14 June 2013 08:47
Re: Détemination du Z d'un point M connu en XY appartenant à un triangle3D
pourquoi ne pas avoir choisi une méthode d'interpolation classique, par exemple de distance inverse (inverse distance weighted)?
geodata au cerema et petits billets en géomatique
Hors ligne
#3 Fri 14 June 2013 09:29
- Renaud
- Membre
- Lieu: Ploemeur (56)
- Date d'inscription: 9 Mar 2006
- Messages: 2315
Re: Détemination du Z d'un point M connu en XY appartenant à un triangle3D
Bonjour,
Il doit exister plus rapide, mais on peut repartir des équations :
Le triangle est dans un plan. Le plan a une équation de la forme "Z = aX + bY + c"
Il faut donc déterminer les équations donnant a, b et c en fonctions des (X,Y) de A, B et C
On obtient alors Z=f(A, B, C, I)
Rien de très compliqué, mais l'équation finale est un peu longue
Si personne ne propose mieux, je vérifierai mes calculs avant de les poster.
Renaud Mouche
Hors ligne
#4 Fri 14 June 2013 10:05
- Bapt
- Participant occasionnel
- Date d'inscription: 6 Jan 2011
- Messages: 29
Re: Détemination du Z d'un point M connu en XY appartenant à un triangle3D
Bonjour,
Réponse courte, sur ArcGIS: http://resources.arcgis.com/fr/help/mai … 0077000000
L'outil propose deux méthodes d'interpolation: linéaire (de base, qui correspondrait sauf erreur à la réponse de Renaud) ou "voisins naturels", qui aura l'intérêt de donner un poids aux surfaces de vos "triangles 3D". Explication ESRI ici: http://help.arcgis.com/fr/arcgisdesktop … 003r000000
Mais voir aussi la réponse de Baobazz! En repartant de votre semis de points, vous pouvez créer directement un MNT raster, avec pour ça plusieurs méthodes d'interpolation possibles. Ce serait j'imagine l'option la plus naturelle si vous travaillez avec du libre (GRASS GDAL, R...). Du coup, IDW est la plus classique, mais le champ des possibles est large (krigeage...) et il n'y a pas forcément UNE méthode mathématique qui s'impose aux autres comme la bonne. Voir ici pour une discussion similaire: http://gis.stackexchange.com/questions/ … -csv-files.
Bon courage!
Hors ligne
#5 Fri 14 June 2013 12:57
- JFBOIZET
- Participant actif
- Lieu: FREJUS
- Date d'inscription: 23 Jul 2012
- Messages: 145
Re: Détemination du Z d'un point M connu en XY appartenant à un triangle3D
Bonjour Renaud Mouche,
Merci pour votre réponse aussi je suis preneur de l'équation finale du type Z du pt I =f(Axyz, Bxyz, Cxyz, Ixy).
Bien cordialement
Jean François BOIZET
Dernière modification par JFBOIZET (Fri 14 June 2013 13:40)
Hors ligne
#6 Fri 14 June 2013 14:06
- Yves Egels
- Participant assidu
- Lieu: Paris
- Date d'inscription: 29 Sep 2011
- Messages: 268
- Site web
Re: Détemination du Z d'un point M connu en XY appartenant à un triangle3D
Pour ceux qui ont des souvenirs de géométrie vectorielle:
Point donné I, triangle ABC
On calcule les produits vectoriels suivants (dans le plan, c'est à dire x1y2-x2y1)
V1 = IB^IC
V2 = IC^IA
V3 = IA^IB
D = V1+V2+V3
Si D est nul, le triangle est dégénéré (en fait, D est le double de la surface du triangle), sinon :
ZI = (V1*ZA+V2*ZB+V3*ZC)/D
En prime, le code Pascal de la fonction correspondante dans le logiciel Cumulus que j'ai développé pour le traitement de scans laser :
Function TDelaunay.InterpoleZ(var P : TPointDelaunay) : boolean;
var
t : integer;
A,B,C,D : extended;
begin
T := QuelTriangle(P);
if T < 0 then begin
InterpoleZ := false;
P.Z := 0
end
else with triangle[T],ListePoint do begin
InterpoleZ := true;
A := PVect(P,Sommet[TrSommet[1]],Sommet[TrSommet[2]]);
B := PVect(P,Sommet[TrSommet[2]],Sommet[TrSommet[0]]);
C := PVect(P,Sommet[TrSommet[0]],Sommet[TrSommet[1]]);
D := A+B+C;
if D <> 0 then
P.Z := (A*Sommet[TrSommet[0]].Z+
B*Sommet[TrSommet[1]].Z+
C*Sommet[TrSommet[2]].Z)/D
else P.Z := -1;
end;
end;
Dernière modification par Yves Egels (Fri 14 June 2013 14:16)
Ingénieur géographe honoraire
École nationale des sciences géographiques
Société française de photogrammétrie et télédétection
Hors ligne
#7 Fri 14 June 2013 17:25
- JFBOIZET
- Participant actif
- Lieu: FREJUS
- Date d'inscription: 23 Jul 2012
- Messages: 145
Re: Détemination du Z d'un point M connu en XY appartenant à un triangle3D
Bonjour Yves Egels
vous indiquer
ZI = (V1*ZA+V2*ZB+V3*ZC)/D
sans indiquer V1=? V2=? et V3=? au sens de programmation la touche ^ n'est pas en langage C ou ASL APIC ou encore python ESRI !
Or
l' équation finale est du type Z du pt I =f(Axyz, Bxyz, Cxyz, Ixy).
Merci de bien vouloir préciser votre réponse au sens mathématique programmable.
Merci pour la prime en Pascal mais comme nombreux le Pascal n'est pas utilisé par les éditeurs de SIG (Star-Apic, ESRI, Bentley, etc..)
En revanche j'ai eu fait du Pascal et aussi Turbo Pascal mais dans les années 80.... sourire
Bien cordialement
JF BOIZET
Dernière modification par JFBOIZET (Fri 14 June 2013 17:32)
Hors ligne
#8 Fri 14 June 2013 17:45
- Yves Egels
- Participant assidu
- Lieu: Paris
- Date d'inscription: 29 Sep 2011
- Messages: 268
- Site web
Re: Détemination du Z d'un point M connu en XY appartenant à un triangle3D
Mais si, c'est indiqué au début de ma réponse, ce sont des produits vectoriels en dimension 2.
https://fr.wikipedia.org/wiki/Produit_vectoriel
J'aurai dû écrire en Latex, mais c'est trop long...
en développant complètement :
V1= IB^IC se calcule le la façon suivante :
V1 = (XB-XI)(YC-YI) - (XC-XI)(YB-YI) idem mutatis mutandis pour V2 et V3
Ingénieur géographe honoraire
École nationale des sciences géographiques
Société française de photogrammétrie et télédétection
Hors ligne
Pages: 1
- Sujet précédent - Détemination du Z d'un point M connu en XY appartenant à un triangle3D - Sujet suivant