#1 Thu 08 November 2007 11:42
- Miss T.
- Participant assidu
- Lieu: En pleine amazonie...
- Date d'inscription: 17 Oct 2005
- Messages: 294
Faisons un peu de trigo...
Bonjour à tous,
J'essaie de calculer l'angle entre 2 points et tous les points d'un MNT. Pour celà, je calcule les longueurs puis j'utilise le théorême d'Al Kashi (qui est en gros le théorême de Pythagore appliquable à tous les triangles, même non rectangles) (c'est loin tout ça, hein?)
Ce qui me donne: (je vous ai joint un jpg explicatif)
Calcul des longueurs avec la formule L = racine carrée de [(Xa - Xb)² + (Ya - Yb)²]
Code:
Update MNT Set Long_a = ( ((Xb - Xmnt)^2) + ((Yb - Ymnt)^2))^0.5 /1000 , Long_b = ( ((Xa - Xmnt)^2) + ((Ya - Ymnt)^2))^0.5 /1000 , Long_c = ( ((Xb - Xa)^2) + ((Yb - Ya)^2))^0.5 /1000
Calcul de l'angle Angle_Sensib (avec conversion radians ==> degrés) avec Al Kashi AngleC = arcCos((a²+b²-c²)/2ab)
Code:
Update MNT Set angle_Sensib = aCos((Long_a ^2 + Long_b ^2 - Long_c ^2) / (2 * Long_a * Long_b) * 180 / Pi
Jusqu'ici, vous ne voyez pas le problème?
Normalement, je devrais avoir, par exemple, pour tous points du MNT entre les points A et B, un angle d'environ 180°, non? Je devrais avoir une symétrie des angles par rapport à l'axe au milieu de A et B.
Donc je ne comprend pas pourquoi j'obtiens le résultat suivant (voir jpg joint).
Quelqu'un peut m'expliquer le pourquoi du comment? J'avoue que ma trigo est TRES TRES lointaine...
Merci d'avance...
Hors ligne
#2 Thu 08 November 2007 11:51
Re: Faisons un peu de trigo...
Pas de réponse mon neurone trigo est en panne, mais en revanche, une info à toutes fins utiles : nous avons mis à votre dispo un outil pour écrire des formules de math en LaTeX : des précisions ici.
Ca demande de bricoler un peu mais ca donne des jolis résultats
Robin.
Hors ligne
#3 Thu 08 November 2007 12:47
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Faisons un peu de trigo...
Bonjour
Loin de moi l'idée de contester Al Kashi ... la formule est sûrement juste. Mais le résultat n'est-il pas directement en radians ??
- si oui: Set angle_Sensib = aCos((Long_a ^2 + Long_b ^2 - Long_c ^2) / (2 * Long_a * Long_b))
- si non: Set angle_Sensib = aCos((Long_a ^2 + Long_b ^2 - Long_c ^2) / (2 * Long_a * Long_b)) * 180 / Pi
Dans les deux cas il y a (à mon sens) un problème de parenthèse dans votre formule originale
Pour les longueurs: pourquoi diviser tout par 1000 ??
Un petit Set CoordSys Table ma_table, suivi d'un Set Distance Units "m" seraient judicieux à placer avant tout
Hors ligne
#4 Thu 08 November 2007 13:54
- Miss T.
- Participant assidu
- Lieu: En pleine amazonie...
- Date d'inscription: 17 Oct 2005
- Messages: 294
Re: Faisons un peu de trigo...
Mais le résultat n'est-il pas directement en radians ??
Si. Mais le fait de faire *180 / pi le transforme en degres. Ce qui est plus lisible pour mes neurones formatés à l'européenne...
Dans les deux cas il y a (à mon sens) un problème de parenthèse dans votre formule originale
Oups, c'est une erreur de recopiage/simplifiage lors de la rédaction du message pour le forum...
Pour les longueurs: pourquoi diviser tout par 1000 ??
Parce que j'ai besoin que ces données soient en km pour la suite des traitements.
J'avoue quand même que j'ai parfois du mal avec les degres/radians et cos/acos/sin et autres maths barbares...
Robin ==> La solution Latex ne fait que mettre en forme des formules maths, non?
Hors ligne
#5 Thu 08 November 2007 14:15
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Faisons un peu de trigo...
... j'ai besoin que ces données soient en km pour la suite des traitements...
Dans ce cas, j'insiste, commencer par Set CoordSys Table ma_table, suivi d'un Set Distance Units "km" ne peut que faire du bien !
Hors ligne
#6 Fri 09 November 2007 08:41
Re: Faisons un peu de trigo...
Robin ==> La solution Latex ne fait que mettre en forme des formules maths, non?
oui Ca permet d'écrire des formules complexes que le texte seul ne pourrait pas reproduire efficacement et/ou difficilement.
Mais en fait je me dis que ce que tu as besoin c'est de formules qui vont dans Mapinfo, donc ce n'est pas forcément pratique dans ce cas précis. En revanche, pour des sujets comme celui-ci, ca peut commencer à devenir utile
Hors ligne