Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1653 connectés 

  FORUM HardWare.fr
  Programmation

  [Math] calculer la distance entre 2 points

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Math] calculer la distance entre 2 points

n°104141
gogoprog
/* - */
Posté le 24-02-2002 à 11:04:57  profilanswer
 

c'est koi encore la formule?

mood
Publicité
Posté le 24-02-2002 à 11:04:57  profilanswer
 

n°104143
Alload
Posté le 24-02-2002 à 11:09:52  profilanswer
 

Soit un point P1 (x1, y1) et un point P2(x2, y2):
 
distance entre P1 et P2 = sqrt( (x2 - x1)^2 + (y2 - y1)^2 )
 
Voilà, ça marche pour toutes les dimensions, suffit de rajouter de façon analogue les autres coordonnées.

n°104144
gogoprog
/* - */
Posté le 24-02-2002 à 11:11:02  profilanswer
 

merci!

n°104176
deathsharp
Posté le 24-02-2002 à 15:10:19  profilanswer
 

c pythagore ca


---------------
What butter and whiskey won't cure, there is no cure for.
n°104177
z0rglub
Posté le 24-02-2002 à 15:13:07  profilanswer
 

deathsharp a écrit a écrit :

c pythagore ca  




 
oui, c'est pythagore, on peut tjs considérer que 2 points sont en fait 2 sommets d'un triangle rectangle dans un plan. Connaissant les coordonnées des 2 points, c facile.


---------------
Ma galerie photo créée avec Piwigo et hébergée sur Piwigo.com
n°104197
flo850
moi je
Posté le 24-02-2002 à 16:04:37  profilanswer
 

c la distance euclidienne .
et x^2 n'existe pas en §C je crois , il faut utiliser pow(x,2)
voila


---------------

n°104292
Kristoph
Posté le 24-02-2002 à 21:31:47  profilanswer
 

Euh, pour x^2 aussi appelé pow(x,2), il serait pas plus malin de faire x*x ? Non perso, je pense pas que pow(x, 2) soit plus rapide que simplement x*x :)

n°104331
LeGreg
Posté le 24-02-2002 à 23:52:20  profilanswer
 

x*x est toujours plus rapide que pow(x,2)
(ca doit etre le cas pour x*x*x aussi).
 
pow permet d'obtenir une puissance arbitraire
donc des trucs genre x puissance 1.43
 
A+
LEGREG

n°104332
Krueger
tout salaire demande dutravail
Posté le 24-02-2002 à 23:53:12  profilanswer
 

Même avis. Ou alors une petite macro ou une fonction inline en C++ et basta! ;)


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°104336
LeGreg
Posté le 25-02-2002 à 00:03:04  profilanswer
 

Pour le plaisir,  
autres tricks classiques :
 
pour normaliser un vecteur
on ne fait pas  
x = x/norme;
y = y/norme;
z = z/norme;
mais  
inv = 1.0 / norme;
x = x * inv;
y = y * inv;
z = z * inv;
 
deux divisions en une seule:
x = a/b; y = c/d;
devient
inv = 1.0 / (b*d);
x = a * d * inv;
y = c * b * inv;
 
Modulo une puissance de deux (n = 2 ^ k) et x >= 0;
remplacer x = x % n;
par x = x & (n-1); //(and logique)
 
On ne compare pas un float a 0 mais on teste
le bit de signe.
 
Etc..
 
A+
LEGREG

mood
Publicité
Posté le 25-02-2002 à 00:03:04  profilanswer
 

n°104338
trueslash
(╯°□°)╯︵ MMM
Posté le 25-02-2002 à 00:09:31  profilanswer
 

legreg a écrit a écrit :

Pour le plaisir,  
autres tricks classiques :
 
pour normaliser un vecteur
on ne fait pas  
x = x/norme;
y = y/norme;
z = z/norme;
mais  
inv = 1.0 / norme;
x = x * inv;
y = y * inv;
z = z * inv;
 
deux divisions en une seule:
x = a/b; y = c/d;
devient
inv = 1.0 / (b*d);
x = a * d * inv;
y = c * b * inv;
 
Modulo une puissance de deux (n = 2 ^ k) et x >= 0;
remplacer x = x % n;
par x = x & (n-1); //(and logique)
 
On ne compare pas un float a 0 mais on teste
le bit de signe.
 
Etc..
 
A+
LEGREG  




 
 :jap: j'aime bien ce genre d'optimisation
 
dans le même genre, on ne teste pas sqrt(x) < y mais x < y*y
 
etc etc etc

n°104339
Krueger
tout salaire demande dutravail
Posté le 25-02-2002 à 00:15:55  profilanswer
 

Z'avez pas un site qui recense ce genre de petites astuces? :D


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°104345
Jar Jar
Intaigriste
Posté le 25-02-2002 à 00:34:40  profilanswer
 

Krueger a écrit a écrit :

Z'avez pas un site qui recense ce genre de petites astuces? :D



Bof, il s'agit surtout de réfléchir.
Et la moitié des optimisations citées plus haut sont suffisamment triviales pour être effectuées par le compilateur.

n°104346
LeGreg
Posté le 25-02-2002 à 00:35:39  profilanswer
 

http://www.flipcode.com/
http://www.stereopsis.com/
http://www.codercorner.com/Pierre.htm
 
attention tout de meme a ne pas
devenir obsede du petit cycle qui t'echappe
parce que la recherche d'optimisations
peut prendre plus de temps
que le developpement de nouvelles features
et que plus de temps tu passes sur ton  
projet plus les optimisations perdent
de leur sens (exemple ceux qui ont
suroptimise leur moteur de rendu software
quand les cartes 3D ont fait leur apparition,
ca a fait pas mal de code qui a valse a la  
poubelle).
mais bon le coup de x*x c'est un truc
qui sera vrai tout le temps donc il faut
juste ne pas prendre de mauvaises habitudes.
quelques regles claires:
- les divisions, modulo etc.. sont couteuses.
- Enlever tous les calculs redondants
de la boucle principale
 
Une derniere: parfois des idees preconcues
sur l'optimisation se revelent fausses et
seul le profiling permet de distinguer
les solutions qui permettent un gain en performance
et parfois revelent des effets contradictoires.
 
A+
LEGREG

n°104347
LeGreg
Posté le 25-02-2002 à 00:38:25  profilanswer
 

Jar Jar a écrit a écrit :

 
Bof, il s'agit surtout de réfléchir.
Et la moitié des optimisations citées plus haut sont suffisamment triviales pour être effectuées par le compilateur.  




ton compilateur il remplace
de lui-meme deux divisions
par une division et 5 multiplications
en instanciant une variable intermediaire?
 
A+
LEGREG

n°104357
Jar Jar
Intaigriste
Posté le 25-02-2002 à 00:53:07  profilanswer
 

Il faudrait faire des essais, mais ça ne m'étonnerait guère. En plus de ça, les processeurs actuels doivent être capables de voir qu'on leur fait faire 3 fois la même division.

n°104360
LeGreg
Posté le 25-02-2002 à 01:03:50  profilanswer
 

je crois que tu pretes trop d'intelligence
au compilateur, il est capable
de faire des optimisations "locales" et "systematiques"
sur la strategie d'allocation des registres,
sur le deroulement des boucles et
sur l'inlining des fonctions
mais pour ce qui est des optimisations
"logiques", c'est a dire corriger
un programme mal pense, ou degrader  
la precision (ce qu'aucun programmeur
au monde ne voudrait que son compilateur
fasse dans son dos mais que certains
programmeurs font parce qu'ils pensent
savoir ce qu'ils font), je ne suis
pas vraiment sur.
Par exemple: un processeur fera
toutes ses operations en double precision
et passer par une variable intermediaire
en simple precision peut donc causer
des erreurs d'arrondis supplementaires.
Un programmeur sait quand ces erreurs
d'arrondis sont acceptables, mais on demandera
au compilateur de ne pas faire de choix pour nous.
 
Un des auteurs de DirectX disait:
"jamais l'API ne fera des verifications
que le programmeur peut faire parce qu'elle
est concue pour la performance et
qu'elle part du principe que le programmeur
sait bien mieux que l'API ce que fait
son programme".
 
A+
LEGREG

n°104363
LeGreg
Posté le 25-02-2002 à 01:11:54  profilanswer
 

sinon le trick sur la division  
n'est pas de moi bien evidemment
mais de ce monsieur :
http://www.stereopsis.com/
qui est paye tres cher par des boites pour
faire les routines de "traitement d'images" les plus rapides
et je crois qu'il connait le fonctionnement
de son compilateur..
(alors que moi je fais souvent
du code non optimise, mais j'apprends
et je me consacre plutot aux features
qu'a la division rapide.)
 
A+
LEGREG

n°104368
Jar Jar
Intaigriste
Posté le 25-02-2002 à 01:22:47  profilanswer
 

legreg a écrit a écrit :

(alors que moi je fais souvent
du code non optimise, mais j'apprends
et je me consacre plutot aux features
qu'a la division rapide.)



Alors là, je suis 100 % d'accord. Vu la puissance des bécanes actuelles, on n'est pas à trois cycles près, et si en plus on perd 6 mois pour gagner 3 bugs par ligne, l'utilité de l'optimisation est assez douteuse.

n°104382
Ventilo
Ventilo? Depuis 1998!
Posté le 25-02-2002 à 04:10:49  profilanswer
 

Jar Jar a écrit a écrit :

 
Alors là, je suis 100 % d'accord. Vu la puissance des bécanes actuelles, on n'est pas à trois cycles près, et si en plus on perd 6 mois pour gagner 3 bugs par ligne, l'utilité de l'optimisation est assez douteuse.  




 
Et on se retrouve avec un jeu 3D avec des graphiques de merde qui roule à 30 image par seconde quand un autre optimiser en fait 30 aussi mais qui est beaucoup plus beau visuellement  :na:

n°104413
cycojesus
Mèo Lười
Posté le 25-02-2002 à 11:00:05  profilanswer
 

Jar Jar a écrit a écrit :

 
Alors là, je suis 100 % d'accord. Vu la puissance des bécanes actuelles, on n'est pas à trois cycles près, et si en plus on perd 6 mois pour gagner 3 bugs par ligne, l'utilité de l'optimisation est assez douteuse.  




 
http://cycojesus.free.fr/progs/openglavity/index.htm
 
=> 10 fps gagnée rien qu'en modifiant la boucle principale,  
presque autant en remplaçant une fonction par un #define
 
l'optimisation C'EST BIEN !!

 

[jfdsdjhfuetppo]--Message édité par cycojesus--[/jfdsdjhfuetppo]


---------------
Chết rồi ! ✍ ⌥⌘ http://github.com/gwenhael-le-moine/slackbuilds/
n°104476
Jar Jar
Intaigriste
Posté le 25-02-2002 à 13:18:05  profilanswer
 

cycojesus a écrit a écrit :

l'optimisation C'EST BIEN !!



Oui, mais ce n'est pas si simple. L'optimisation, c'est surtout repérer les portions de code qui mettent le plus de temps à s'exécuter. Tu peux multiplier par 10 la vitesse d'une portion de code sans que ça se voie dans le résultat final.

n°104818
Kyle_Katar​n
Posté le 26-02-2002 à 08:15:52  profilanswer
 

tout dépend quelle norme tu utilises...

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [Math] calculer la distance entre 2 points

 

Sujets relatifs
Mise a jour d'une base de données a distance ASP / IIS[Delphi] Accéder a MySQL a distance...
script pour calculer le tps de generation d'une page[c/c++] quelques questions pour avoir des points de depars:)
Administration à distance[Math] Question sur les matrices
[Java] Bon soft pour calculer des metriques ?[SQL SERVER 7.0] Administrer la base a distance
Quel sont les principaux points négatifs et positifs de ce site?[base des registres] Ecrire à distance - Os Court
Plus de sujets relatifs à : [Math] calculer la distance entre 2 points


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR