dthuler
Messages postés121Date d'inscriptiondimanche 9 mars 2003StatutMembreDernière intervention29 avril 2009
-
16 mars 2007 à 23:00
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 2009
-
17 mars 2007 à 12:00
Bonjour,
Je cherche la distance entre 2 points définis par les coordonnées cartésiennes. Pour ce faire, j'utilise la formule suivante :
Comme c'est dans une itération (une boucle quoi), vous aurez vite compris que ce n'est pas ce que l'on peut appeler "optimisé"...
Quelqu'un sait-il si on peut faire (beaucoup) mieux ? Et question subsidiaire; ce serait cool si cette solution fonctionne avec la prochaine version contenant les coordonnées 3D...
Merci pour votre aide...
~~ Brainiax ~~ [8D]
~~ Brainiax ~~ [8D]
A voir également:
Calculer un azimut entre deux points
Calcul azimut entre 2 points gps - Meilleures réponses
Calcul d'azimut entre deux points - Meilleures réponses
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 17 mars 2007 à 08:50
Bonjour,
Il va bien falloir extraire la recine carrée d'une somme de 2 carrés (c'est inévitable).
2 possibilités alors :
1) utiliser le passage à la puissance 2 avec ^2 pour chaque côté puis utiliser SQR ou 1/2 pour extraire la racine carrée desde la somme des deux carrés obtenus (celle déjà mise en oeuvre ici)
2) travailler avec les fonctions Log et Exp (le log du carré d'un nombre est = 2 * le log de ce nombre et appliguer ensuite Exp au log ainsi obtenu)
Franchement : je ne vois pas le temps qui serait ainsi gagné, sauf si Windows possède déja en mémoire une table des logarithmes, ce qui supprimerait un calcul (remplacé par une lecture).
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 17 mars 2007 à 12:00
Salut,
Attention, en VB.Net (et je crois me rapeller que c'est pareil en VB6) le symbole exposant ^ ne fais pas la différence d'algorithme pour faire ^2 ou ^1354.354135 et donc le temps de faire a^2 est de l'ordre de 100 fois plus lent que a*a.
Sinon pour ce qui est de la racine, regarde si tu ne peux pas utiliser la distance au carrée, ou la valeur absolue de la somme de la différence des composantes s'il s'agit uniquement de comparaisons.
(En effet si a est plus loin de b que c nous avons
dist(a,c)>dist(b,c)
et donc forcément
dist(a,c)^2>dist(b,c)^2
ou encore
|a-c|>|b-c|)