Calcul de distance

Discussion générale entre passionnés et amateurs de mathématiques sur des sujets mathématiques variés
Thorgaal
Messages: 7
Enregistré le: 13 Sep 2012, 14:20

Calcul de distance repère non-orthonormé

par Thorgaal » 13 Sep 2012, 14:50

Bonjour à tous,

Je vais essayer d'énoncer le plus clairement mon problème. Tout d'abord, pour situer la chose, c'est en rapport avec un jeu sur Iphone/Android (Lords and Knight).
Il y a une carte et des chateaux sur cette carte. Les coordonnées d'un chateau se présentent sous cette forme X=16721 Y=16612.
La carte ressemble à un héxagone, je dis ressemble car un chateau situé à 100 champs (unité de distance du jeu) peut aussi bien se situer en "pointe" de l'héxagone que sur un bord.

Pour vous donner un exemple, voici les coordonnées de deux chateaux éloignés de 100 champs :
Chateau 1 : X1=16721 Y1=16612
Chateau 2 : X2=16718 Y2=16512

Deuxième exemple pour un chateau situé à 50 du même chateau :
Chateau 1 : X1=16721 Y1=16612
Chateau 3 : X3=16752 Y3=16574

D'aprés ce que j'ai pu voir, un point de coordonnée correspond à un champ.

Le but de ma question est de savoir comment calculer le nombre de champs par rapport aux coordonnées des deux chateaux?

Si vous avez besoin de compléments d'information ce sera avec plaisir; :lol3:
En espérant vous avoir donné tous les éléments nécessaires et avoir été assez clair.



Nightmare
Membre Légendaire
Messages: 13817
Enregistré le: 19 Juil 2005, 19:30

par Nightmare » 13 Sep 2012, 15:41

Hello,

c'est simplement la distance à vol d'oiseau :



:happy3:

Thorgaal
Messages: 7
Enregistré le: 13 Sep 2012, 14:20

par Thorgaal » 14 Sep 2012, 22:47

Nightmare a écrit:Hello,

c'est simplement la distance à vol d'oiseau :



:happy3:


Merci de ta réponse, mais cela ne fonctionne malheureusement pas... Le repère n'est pas orthonormé...
Les informations dont je dispose sont les coordonnées des chateaux et les distances en nombre de champs. Est-il possible d'en déduire la formule appliquée?

Nightmare
Membre Légendaire
Messages: 13817
Enregistré le: 19 Juil 2005, 19:30

par Nightmare » 15 Sep 2012, 03:50

Pourtant, la formule marche pour les deux exemples cités!

Thorgaal
Messages: 7
Enregistré le: 13 Sep 2012, 14:20

par Thorgaal » 17 Sep 2012, 20:04

Nightmare a écrit:Pourtant, la formule marche pour les deux exemples cités!


En effet, aprés pas mal de test je me suis rendu compte que cette formule fonctionne pour tous les chateaux sur le même axe (vertical ou horizontal) mais pas si je me décale de ces axes...

Je joint la carte pour que ce soit plus clair. Les héxagones donnent les valeurs en "champs" calculées par le jeu, les cercles les valeurs retournées par la formule.

Image


Voici les coordonnées du point de base (centre de la carte) soit A:
X1 =16122.5
Y1 = 16449
Celles d'un point test situé en pointe haut-droit de l'héxagone à 20 champs soit B :
X2 = 16132.5
Y2 = 16429
Dans ce cas-là la formule ne fonctionne pas.
J'ai remarqué que si j'applique la formule pour les coordonnées du point situé à 10 champs sur l'axe AB cela me donne
Distance = si je le divise par 10 (puisque je suis à 10 champs) pour avoir le rapport entre l'unité formule et l'unité champs et que je le multiplie au résultat donné par la formule, ça fonctionne pour toute la droite (AB).

Ce qui donne pour l'axe AB : Distance =

J'ai aussi remarqué que pour tous les chateaux situés sur cet axe le rapport R=(X2-X1)/(Y2-Y1) est de 1/2, ce qui me permet dans la macro de mettre :

If (X2-X1)/(Y2-Y1) = 1/2 then
[INDENT]X=[/INDENT]
end if

Distance =

J'ai fais plusieurs autres tests sur le même raisonnement, ça fonctionnne mais il y a trop de possibilités pour tous se les faire à la main...
En voici quelques-uns pris à 10 champs et qui fonctionnent sur leurs axes respectifs, des fois que ça aide:
- Pour R = 3/4
X =
- Pour R = 2
X =
- Pour R = 11/18
X =
- Pour R = 13/14
X =

Je me dis qu'il y a forcément un truc mais mes maigres capacités en mathématique ne m'aident pas... :mur:

Si il manque des infos je suis prêt à tout vous communiquer. :lol3:

Un petit défi à relever pour vous ? Ou c'est simple quand on sait?

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

par fatal_error » 17 Sep 2012, 20:57

salut,

tu peux chercher sur le net sous le nom d'hexagon map.

il est nécessaire de connaitre dans quel hexagone se situe tes points (idem comment tu quadrilles).

Ca se fait assez facilement en définissant ton repère avec deux vecteur u, v, avec l'angle (u,v)=360/6
et la norme de u, qui vaut la distance entre deux hexagones adjacents (idem pour v).

Bref, commence par donner ces vecteurs, ainsi que ton repère représentant X,Y (les points de coordonnées que tu as filé), idéalement suivi d'un schéma montrant les deux repères...

le reste est assez trivial!
la vie est une fête :)

Thorgaal
Messages: 7
Enregistré le: 13 Sep 2012, 14:20

par Thorgaal » 17 Sep 2012, 21:27

:cry: Ca paraît simple pour toi... mais j'ai du mal à te suivre...
Je me souviens effectivement avoir entendu parler de vecteur en cours il y a un paquet d'années...
Je vais essayer de me remémorer ça, mais si tu as la possibilité et l'aimabilité d'essayer de m'éclairer, ce serait avec plaisir. :we:

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

par fatal_error » 17 Sep 2012, 22:45

je ne peux pas faire le travail de définition à ta place.

Es-tu capable de fournir un exemple de map? avec deux points dont tu veux connaitre la distance?
la vie est une fête :)

Thorgaal
Messages: 7
Enregistré le: 13 Sep 2012, 14:20

par Thorgaal » 17 Sep 2012, 23:13

Ca oui je peux!


Revoici la map :

Image

Chaque point de couleur est un chateau, le centre de l'héxagone (A) est le chateau de départ, le point B le chateau de destination (pointe de l'héxagone en haut à droite de la map).

Les coordonnées de A X1 = 16122,5 Y1 = 16449
Les coordonnées de B X2 = 16132,5 Y2 = 16429

Je sais que ces deux points sont éloignés de 20 champs.

Je cherche la formule me permettant d'avoir le nombre de champ en rentrant les coordonnées.

J'ai cherché les calculs de distance sur map hexagonale, je ne pensais pas que c'était aussi complexe, je n'abordais vraiment pas le problème de la bonne manière.

Merci de ton aide en tous cas!!

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

par fatal_error » 17 Sep 2012, 23:21

est-ce nécessaire de foutre autant de points verts et jaune?

Que représente tes cercles? sont-ils nécessaires à la compréhension?

qu'est-ce qu'un champ? il ne sont même pas représentés sur ta map?

que se passe-til si B n'est pas sur un sommet? idem sur une arete? La distance est la même que si B est sur l'extremité de l'arrete? idem dans la surface délimitée par deux hexagone?

edit: tu peux également nommer les sommets d'hexagone avec des lettres.
la vie est une fête :)

Thorgaal
Messages: 7
Enregistré le: 13 Sep 2012, 14:20

par Thorgaal » 17 Sep 2012, 23:57

Désolé pour la multitude de points, la map est telle quelle...

Les cercles c'est un ajout de ma part, ils correspondent aux résultats données par la formule que tu m'as donné

Voici la carte donnée par le jeu :

Image

1 champ est l'unité de mesure du jeu, 1 champ = 1 déplacement sur un des deux axes. On ne les voit pas sur la map.

Pour tout point placé sur [BC] la distance est de 20 par rapport au point A, même chose pour un point placé sur [CE].

[BC] = 20 champs

Non, ils ne sont pas à 20 champs dans la surface délimitée par deux hexagones, 1 champ, puis 2 champs, 3 champs etc.
Les hexagones sont donnés pour donner une idée de l'échelle, tout point situé sur l'hexagone "10" est à 10 champs, tout point situé sur l'hexagone "20" est à 20 champs.

Cela répond à tes questions?

Si cela peut aider, je dois pouvoir 'faire' le quadrillage avec les graduations?

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

par fatal_error » 18 Sep 2012, 08:29

Désolé pour la multitude de points, la map est telle quelle...

Ben ouais mais on s'en tape nous des points, autant faire un schema simple (genre a main levée avec paint, c'est tout aussi clair)

1 champ = 1 déplacement sur un des deux axes. On ne les voit pas sur la map.

Idem de rajouter l'information si elle est importante

Cela répond à tes questions?

ouais, ca répond qd même à mes questions, je vais essayer d'y réfléchir
la vie est une fête :)

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

par fatal_error » 18 Sep 2012, 08:58

Image

Le but c'est de trouver la distance AHp, P représentant un point quelconque.
On note en particulier, si P est sur [HB] alors AP=20

On considère que dans un premier temps que P est dans le secteur délimité par les demi droites [AH) et |AB).
Il suffit de projeter P sur le segment AH en un point nommé Hp, et de récupérer cette distance projetée.

En l'occurrence,
On prend un vecteur unitaire de direction (AH) et de sens A vers H; u(1,0)

Et la distance est donc donnée par Ahp.

Maintenant dans le cas où P peut se balader dans le plan, il faut trouver dans quel secteur se trouve P.
On cherche alors l'angle orienté HAP. Je passe comment trouver l'angle entre deux points...

l'hexagone est en 6 secteurs, si l'angle vaut entre
-30 et 30 : secteur 1 (celui qu'on a traité)
30 et 60: secteur 2 etc...
a chaque changement de secteur le vecteur (s de 1 à 6) à considérer (subit une rotation de 360/6) est donné par

idem


Maintenant il reste à faire l'échelle, idem ton repère X,Y que tu n'as pas précisé,..., vers tes coordonnées "hexagonales".
Pour ca tu considères le point H (que vaut il avec les valeurs de ta souris)
et un autre point (axe vertical, que tu n'as pas non plus donné).
se trouvant idem sur un bord. La différence de leur ordonnées donnera l'échelle sur X, de leur abscisse sur Y.
Enfin l'offset sur X et Y est donné par leur différence par rapport à 0...
la vie est une fête :)

Thorgaal
Messages: 7
Enregistré le: 13 Sep 2012, 14:20

par Thorgaal » 18 Sep 2012, 10:42

Oulala !!! :doh:
Quand même... Je pouvais me casser la tête longtemps avec mes pauvres calculs de cancre.
Je vais essayer de comprendre ça et de le mettre en pratique.

Je te remercie beaucoup de ton aide et du temps que tu m'as consacré, je te dirais si j'ai réussi à mettre ça au point.

Merci encore et désolé du manque d'information que je t'ai fourni...

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

par fatal_error » 18 Sep 2012, 10:52

n'hesite pas a poser des questions precises si necessaires, en reprenant les points ou je suis eventuellement pas clair
la vie est une fête :)

utwa
Messages: 4
Enregistré le: 13 Sep 2012, 12:05

par utwa » 18 Sep 2012, 12:49

Bonjour.

Le but est de provoquer l'illusion décrite par l'image ci-dessous, c'est à dire de faire croire qu'il y a un hexagone régulier et des cercles comme le cercle bleu.

Image

La réalité... est qu'il s'agit d'un jeu sur téléphone, et qu'il n'est donc pas question d'extraire une racine carrée par "chateau" ! On constate que *sur l'image originelle* le nombre de pixels horizontaux entre le sommet le plus à gauche et le sommet le plus à droite est exactement le meme que le nombre de pixels entre le coté du bas et le coté du haut. Les droites bleues obliques sont tout simplement des droites à 45°, et le régionnement du plan se calcule en nombres entiers.

Les deux chateaux [16122.5,16449] et [16132.5,16429] sont à 20 champs de distance parce que la différence des deux est [-10;+20]. La formule voulue s'en déduit.

Cordialement.

Benjamin
Modérateur
Messages: 2327
Enregistré le: 14 Avr 2008, 12:00

par Benjamin » 18 Sep 2012, 14:24

Bonjour,

On peut le voir comme un problème purement topologique. Il faudrait trouver la norme dont la boule unité est un hexagone puis calculer cette norme.

Je n'y connais rien en typo, mais je sais qu'il existe des boules unité de forme carré donc pourquoi pas hexagonal ? Quelqu’un a la réponse ?

 

Retourner vers ⚜ Salon Mathématique

Qui est en ligne

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

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