begin process at 2010 02 09 20:38:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Algorithme

 > 

Maths

 > 

Distance entre 2 points


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Distance entre 2 points

vendredi 16 mars 2007 à 23:00:53 | Distance entre 2 points

dthuler

Bonjour,

Je cherche la distance entre 2 points définis par les coordonnées cartésiennes. Pour ce faire, j'utilise la formule suivante :

Sqr((Longi - !CoordX) ^ 2 + (Latit - !CoordY) ^ 2)

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...

~~ [i]Brainiax[/i] ~~ [8D]

~~ [i]Brainiax[/i] ~~ [8D]
vendredi 16 mars 2007 à 23:28:52 | Re : Distance entre 2 points

Gobillot

pas mieux Sqr est assez rapide

Sqr((Longi - CoordX) ^ 2 + (Latit - CoordY) ^ 2 + (Azimut - CoordZ) ^ 2)



    Dim i  As Long
    Dim j  As Long
    Dim Lx As Single
    Dim Ly As Single
    Dim d  As Double
    Dim x  As Single
    Dim y  As Single
    Dim Tp As Long
   
    Lx = Line1.x2 - Line1.x1
    Ly = Line1.Y2 - Line1.Y1
   
    Tp = GetTickCount
    For i = 1 To 1000000
        d = Sqr(Lx * Lx + Ly * Ly)
        Next
    Tp = GetTickCount - Tp
    MsgBox "temps=" & Tp
    MsgBox "distance=" & d
   
    Tp = GetTickCount
    For i = 1 To 1000000
        x = Lx * Lx + Ly * Ly
        CopyMemory j, x, 4&
        j = &H5F375A86 - j / 2
        CopyMemory y, j, 4&
        d = y * x
        d = (d + x / d) / 2
        Next
    Tp = GetTickCount - Tp
    MsgBox "temps=" & Tp
    MsgBox "distance=" & d

Daniel
samedi 17 mars 2007 à 08:50:11 | Re : Distance entre 2 points

jmfmarques

Membre Club
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).

Voilà ....
samedi 17 mars 2007 à 09:11:48 | Re : Distance entre 2 points

jmfmarques

Membre Club
Euh...(je vais mal, ce matin, moi... en additionnant des logs !...)

Correction : on ne pourrait "grignoter" que pour l'extraction de la racine carrée de la somme des carrés ..

 Private Sub Command3_Click()
   a = 2
   b = 5
   n = a ^ 2 + b ^ 2
   MsgBox Sqr(n)  & "  " & Exp(Log(n) / 2)    ' égalité des 2 résultats)
End Sub
samedi 17 mars 2007 à 12:00:16 | Re : Distance entre 2 points

Julien237

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|)


Julien.


Cette discussion est classée dans : points, 8d, distance, coordonnées, brainiax


Répondre à ce message

Sujets en rapport avec ce message

Boucle pour avoir tous les points d'une ligne [ par Elektordi ] J'ai un problème plus logique/mathématique que de prog, mais voila:j'ai 4 vars (int) qui sont xa, ya, xb, yb => les coordonnées de deux points sur un Calcul de distance entre 2 points géodésiques [ par fred2355 ] Bonjour,Qui aurait une routine qui permet de calculer la distance entre deux points géodésiques en degré, minute, seconde.? Et l'azimut entre ces deux créer un dessin à parptir de coordonnées de points dans Excel [ par fofone ] Salut !J'ai des coordonnées de points (x,y,z) dans une feuille excel et j'aimerais affichier ces points et les relier par des droites ...Est-ce possib Coordonnées d'un point d'un graphique Microsoft Graph 2000 [ par livan128 ] Bonjour, j'ai fait des graphiques de synthèse (sur 200 moteurs) en nuage de points à l'aide de Microsoft Graph 2000 et mon maître de stage m'a demandé graphisme-mathématique nuage de points en coordonnées x,y [ par filou26 ] bonsoir à tousje récupère dans un picture box en millimètres  des points mathématiques en coordonnées axiales (x,y) et je zoome  en faisantpicture.sca fichier dxf [ par lolowilou69 ] BonjourJ'utilise un logiciel qui s'appel autocad qui enregistre les dessins que je fait dessus en format dxf. Dans autocad j'ai créer une macro qui me réalisation d un programme de transport de torseur [ par kenzaaix ] Je souhaite réaliser un programme de transport de torseurobjectif du travail: le code réalisé doit permettre de transporter un torseur donné d'un poin spline cubique [ par fabrice2205 ] Bonjour,j'aurais besoin d'un peu d'aide pour réaliser une interpolation par splines cubique 2d; j'ai un fichier excel où se trouve dans la première co Courbe à partir de coordonnées avec MSCHART [ par briwax ] Salut à tous,voilà mon problème : je dispose d'une série de coordonées (x,y) représentant évidemment des points et j'aimerais tout simplement afficher Je cherche les coordonnées d'un point sur un graph [ par jmel ] Bonjour,j'ai tracé un graph sous excel et je cherche à mettre des flèches sur mes points dirigés selon une certaine orientation. Mon problème est que


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales