determiner les utilisateurs donnant les coordonnees les plus

Invité
Invité n'ayant pas de compte PHPfrance

07 avr. 2010, 11:56

bonjour,

j'ai un petit casse tete qui a mon avis doit se resoudre facilement si on a garde l'esprit matheux! ;)

voila j'ai un point de coordonnees X et Y (on va dire X = 100 et Y = 100)
j'ai des utilisateurs qui donnent les coordonnees (100,101), (101,100), (99,102)...

comment faire en sorte que je puisse retrouver les utilisateurs ayant les coordonnees les plus proches de (100,100) ?
je n'ai pas trop d'idees sur comment m'y prendre...

si qq un peut m'eclairer ca serait super!
merci!

ViPHP
ViPHP | 1136 Messages

07 avr. 2010, 12:30

L'opération est simple ,


Imaginons le point A( 100 , 100 ) , Le point B(110,120) et le point C(50,150).

Tu souhaites connaitre les point le plus proche de A .. il faut donc le prendre comme référence , ( point 0 ) , et mettre à jour les coordonnées des autres point ..

B( 110-100,120-100 ) => B( 10,20 )
C( 50-100,150-100 ) => C(-50,50)

Ensuite , est bien , il suffit de calculer la distance entre les points ..

distance entre A et B => AB = racineCarre(10²+20²) = 22.3
distance entre A et C => AC = racineCarre(50²+50²) = 70.7

Conclusion le point B est le plus proche de A ...

Tu n'as plus qu'à traduire ça en algo .. et roulez jeunesse ...

Ch

Invité
Invité n'ayant pas de compte PHPfrance

07 avr. 2010, 12:58

super merci! (si j'avais un peu mieux suivi mes cours de geometrie aussi!)

tres sympa de m'avoir file ce coups de main!

ViPHP
ViPHP | 5462 Messages

07 avr. 2010, 13:23

par contre ca marche pas si les coordonnées sont negatives...

ViPHP
ViPHP | 1136 Messages

07 avr. 2010, 13:59

par contre ca marche pas si les coordonnées sont negatives...
Exacte , à prendre en compte dans l'algo au moment du changement d'origine .
Modifié en dernier par stopher le 07 avr. 2010, 14:04, modifié 1 fois.

ViPHP
ViPHP | 5462 Messages

07 avr. 2010, 14:03

ouai, c'est plus compliquer que ca les algos de points les plus pres, y'a quelque exemple sur le net
http://en.wikipedia.org/wiki/Kd-tree :wink:

ViPHP
ViPHP | 1136 Messages

07 avr. 2010, 14:17

Arf ...

Ca me rappel lorsque j'ai étudié les algos utilisés par les routeurs pour prendre les chemins les plus cours ..
Un casse tête , mais sacrément intéressant ..

Sinon , il y a un article dans un php solutions ( il y a quelques mois ) qui explique différents algorithmes bien connus dans le monde du jeu pour le positionnement dans l'espace ...
Super intéressant .. mais bon , n'ayant encore jamais dû utiliser ce genre d'algo , j'avoue ne pas en savoir beaucoup plus sur le sujet .

Cependant , pour une simple représentation X,Y , Pythagore nous donne une formule plus compacte , qui résout le problème des point aux coordonnées négatives dans un repère orthonormé/

Distance entre un point A et un point B = racinecarre( (Xb - Xa)² + (Yb - Ya)² )




Edit: mouarf ... ba en fait c'est la même formule que j'ai cité plus haut ... mais en une seule ligne .. donc elle fonctionne bien même si les points sont négatifs ! :D .... houuuu c'est loin ...