Calcul de distance entre des points normalement éloignés

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
archi876
Messages: 4
Enregistré le: 20 Aoû 2017, 18:04

Calcul de distance entre des points normalement éloignés

par archi876 » 20 Aoû 2017, 18:26

Bonjour,

je voudrais faire un calculateur de distances mais je suis bloqué par mes mauvaises connaissances mathématiques.


Le jeu possède une un map de 801x801 cases.

Je sais que pour calculer la distance entre deux points, il faut utiliser :

sqrt((x1 - x2)²​ + (y1 - y2)²​)

Jusque là tout va bien ^^

Cependant, je me suis rendu compte qu'il est possible de faire le tour de la map.

Par exemple, la distance entre​ (-399|399) et (399|-399)​ est la même que (0|0) et (3|-3)​.

Distance : 4.242640687119285​ cases

Ma question est donc comment obtenir la bonne distance avec uniquement les coordonnées x et y des deux points

Merci d'avance pour votre aide !



Avatar de l’utilisateur
MJoe
Membre Relatif
Messages: 295
Enregistré le: 19 Juil 2017, 07:26
Localisation: Saint-Nazaire

Re: Calcul de distance entre des points normalement éloignés

par MJoe » 20 Aoû 2017, 18:53

archi876 a écrit:Bonjour,

Cependant, je me suis rendu compte qu'il est possible de faire le tour de la map.
Par exemple, la distance entre​ (-399|399) et (399|-399)​ est la même que (0|0) et (3|-3)​.

Distance : 4.242640687119285​ cases
Ma question est donc comment obtenir la bonne distance avec uniquement les coordonnées x et y des deux points
Merci d'avance pour votre aide !



Bonjour,
Je pense que vous avez défini une origine de votre repère.
Une fois cela fait, la formule que vous avez indiquée fonctionne.
Soient M1(X1 ; Y1) et M2(X2 ; Y2), la distance d vaut :



Application numérique :

M1(-399 ; 399) et M2(399 ; -399) alors :
M1(0 ; 0) et M2(3 ; -3) alors :

MJoe.

Razes
Membre Rationnel
Messages: 964
Enregistré le: 28 Juil 2014, 20:24

Re: Calcul de distance entre des points normalement éloignés

par Razes » 20 Aoû 2017, 22:20

MJoe a écrit:Soient M1(X1 ; Y1) et M2(X2 ; Y2), la distance d vaut :



Application numérique :

M1(-399 ; 399) et M2(399 ; -399) alors :
M1(0 ; 0) et M2(3 ; -3) alors :

MJoe.


Bonjour,

Une petite erreur de calcul de MJoe

archi876
Messages: 4
Enregistré le: 20 Aoû 2017, 18:04

Re: Calcul de distance entre des points normalement éloignés

par archi876 » 20 Aoû 2017, 22:50

Bonsoir,
merci pour vos réponses mais je me suis peut-être mal exprimé.

Ce que je n'arrive pas à trouver c'est la formule qui donne la distance entre​ (-399|399) et (399|-399) soit 4.24.

Car la formule : sqrt((x1 - x2)²​ + (y1 - y2)²​) donne 1128.54

Merci encore pour votre aide je suis à votre disposition pour toute questions supplémentaire

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

Re: Calcul de distance entre des points normalement éloignés

par fatal_error » 20 Aoû 2017, 23:08

hello, je presume que -399 correspond a -399+801=402
dou le fait que lecart entre 0et 3 est le meme que entre 402 et 399 et dc la meme distance.

si la supposition est correcte tu as juste a convertir les nombres negatifs en positif.
idem pour un x donne: (x+801)%801 qui retourne x si positif ou la valeur correspondant a x si negatif.
la vie est une fête :)

Razes
Membre Rationnel
Messages: 964
Enregistré le: 28 Juil 2014, 20:24

Re: Calcul de distance entre des points normalement éloignés

par Razes » 20 Aoû 2017, 23:18

Ne serait tu pas en train de parler des dimensions sur la map et dimensions réelles?

archi876
Messages: 4
Enregistré le: 20 Aoû 2017, 18:04

Re: Calcul de distance entre des points normalement éloignés

par archi876 » 21 Aoû 2017, 11:42

Bonjour,
La carte fait 801x801 cases.

Le centre est (0|0) et les cases les plus éloignés sont :
Au nord : (0|400)
Au sud : (0|-400)
A l'ouest : (-400|0)
A l'est : (400|0)

La case (-399|399) est située au Nord Ouest de la carte.
La case (399|-399) est située au Sud Est de la carte.
Cependant il est possible de passer directement du Nord Ouest au Sud Est sans passer par (0|0).

La formule sqrt((x1 - x2)²​ + (y1 - y2)²​) est donc incorrect car je ne sais pas lui indiquer de limite ou redéfinir sont origine.

archi876
Messages: 4
Enregistré le: 20 Aoû 2017, 18:04

Re: Calcul de distance entre des points normalement éloignés

par archi876 » 21 Aoû 2017, 12:26

fatal_error => merci pour ta suggestion cela fonctionne effectivement avec les coordonnés (-399|399) et (399|-399) ! je n'ai pas fais tout les tests mais je vous tiens au courant

Avatar de l’utilisateur
MJoe
Membre Relatif
Messages: 295
Enregistré le: 19 Juil 2017, 07:26
Localisation: Saint-Nazaire

Re: Calcul de distance entre des points normalement éloignés

par MJoe » 21 Aoû 2017, 18:21

Razes a écrit:
MJoe a écrit:Soient M1(X1 ; Y1) et M2(X2 ; Y2), la distance d vaut :



Application numérique :

M1(-399 ; 399) et M2(399 ; -399) alors :
M1(0 ; 0) et M2(3 ; -3) alors :

MJoe.


Bonjour,

Une petite erreur de calcul de MJoe


Oups ! Je ne sais même plus calculer une racine carrée ! :oops:

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

Re: Calcul de distance entre des points normalement éloignés

par fatal_error » 21 Aoû 2017, 21:14

@archi876
par rapport à ton post de 09:42
ma remarque ne marche pas si on considère
(-5;y) et (5;y) car -5 serait transformé en -5+801=796 alors que clairement la distance 796-5 est plus grande que 5--5

Tenant compte de ton post, on peut avoir l'approche suivante:

On peut regarder sur laxe des x et prendre la plus petite distance d_x correspondant à boucler ou traverser la map
Pareil sur l'axe des y
et enfin prendre pythagore avec d_finale = sqrt(d_x^2+d_y^2)


Soit A(x_A,y_A); B(x_B,y_B)
On se concentre sur l'axe des x
Tu connais la distance en traversant la map: via d=abs(x_A-x_B)
Tu peux en déduire la distance en sortant:

Tu places ton point fictif A' en (-400,y) et tu cherches le point B' qui respecte la distance d en comptant les carreaux en bouclant...

d'où x_B' = 1 + 800 - d
1 car tu comptes 1 pour boucler (sortie par la gauche et arrivée sur la droite)
800 parce que tu t'es mis tout à gauche, et que x_max = 800 ([-400;400])

La distance intéressante est donc min(d, 801-d)

On remarque trivialement que si d <= 400 alors vaut mieux traverser, sinon boucler...

du coup
abs_x = abs(x_A-x_B)
abs_y = abs(yA-y_B)
d = sqrt( min(abs_x, 801-abs_x)^2 + min(abs_y, 801-abs_y)^2)
la vie est une fête :)

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 79 invités

cron

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite