Trouvez le point d'un cercle

Olympiades mathématiques, énigmes et défis
drastos
Messages: 9
Enregistré le: 25 Juin 2012, 18:13

Trouvez le point d'un cercle

par drastos » 25 Juin 2012, 18:25

Bonjour à tous!
Je suis nouveau sur le forum donc excusez moi si je ne suis pas dans la bonne section.
A vrai dire je suis sur la création d'un jeu vidéo de type Space Invader / R-type et je m'occupe de la gestion des tirs.
Simple intro pour situer le contexte si j'ai mal expliquez par la suite.

Voila le problème, j'ai une équation de type y = ax + b, un point A qui est le centre d'un cercle et un rayon.

Le but est de trouver une formule me permettant de déterminer les coordonnées du point B sur le cercle.

Si vous souhaitez d'autres infos, je ferais régulièrement des tours sur le forum et je testerais les formules dans mon programme pour savoir si elles marchent.

Merci à vous



Mortelune
Membre Irrationnel
Messages: 1445
Enregistré le: 22 Sep 2010, 14:27

par Mortelune » 25 Juin 2012, 18:34

Bonjour, il manque déjà quelques données : qu'est ce que représente le point B, comment A est censé l'influencer et à quoi sert l'équation de droite ?

On peut imaginer qu'il y a un tir issu de A selon l'équation de la droite définie et on cherche une intersection avec le cercle mais ...

drastos
Messages: 9
Enregistré le: 25 Juin 2012, 18:13

par drastos » 26 Juin 2012, 09:43

Bonjour,

Donc pour t’éclairer d'avantage Mortelune.
Un vaisseau tire un missile, avec les coordonnées du point de départ du tir et des points destinations, j'ai déterminé l’équation y = ax + b. Jusque là tout va bien. Le rayon r est une valeur que je donne pour chaque vaisseau, qui correspond a la vitesse du tir.

Donc A est la position du tir initiale et B est la position suivante.
En gros, on cherche une intersection avec le cercle. ;)

Mortelune
Membre Irrationnel
Messages: 1445
Enregistré le: 22 Sep 2010, 14:27

par Mortelune » 26 Juin 2012, 12:56

Ok.

Donc on va poser on a donc l'équation du cercle :
.

Et on cherche alors à résoudre le système (qui aura deux solution comme la droite passe par le centre du cercle) :


On s'intéresse à(2) qui devient :

En développant on trouve deux solutions à l'équation (polynôme du second degré) et on réinjecte dans (1) pour avoir les deux couples solution.
(2) devient donc :
On pose alors et comme il y a deux solutions. Et les deux valeurs possibles de sont donc :
et

Et les deux couples solutions sont normalement donnés par : et

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 26 Juin 2012, 14:09

Bonjour,
Je ne suis pas sûr d'avoir compris.
C'est le vaisseau qui tire le missile dans une certaine direction et un sens déterminé.
On veut savoir sa position au bout d'un certain temps, matérialisé par le paramètre r rayon du cercle.
Si c'est cela, un simple petit schéma devrait montrer que le problème peut se résoudre avec le théorème de Thalès, et un peu de Pythagore.
Autrement dit, ce n'est pas une bonne idée d'établir l'équation de la droite de trajet du missile, qui serait d'ailleurs plutôt une parabole si on est soumis à la gravitation.

Par contre, si la vitesse du vaisseau qui a tiré le missile est non négligeable par rapport à la vitesse de celui-ci, alors la résolution du système est justifiée.

drastos
Messages: 9
Enregistré le: 25 Juin 2012, 18:13

par drastos » 26 Juin 2012, 14:45

Merci pour ta réponse Mortelune, je vais essayer de comprendre et de l'appliquer.

Dlzlogic:
Les tirent sont indépendant de la vitesse du vaisseau et la gravité n'est pas prise en compte.
Le calcul que j'aurais avec vos réponses me permettras de déterminé la position du tire lors de ma prochaine boucle (10 millième de seconde plus tard).

Ci dessous un schéma explicatif de la situation:
Image

Le point C est le point de départ du tire.
Le point D est le point de destination.
Le point A est le point de coordonnée du missile.
Le point B est le point de coordonnée à calculer.

Nous avons également le rayon du cercle qui correspond a la distance que va parcourir le tire lors de la prochaine boucle. Le tire peux très bien aller vers la droite vers la gauche, etc... Cependant, il garde la même trajectoire du début à la fin. Sa direction est déterminé lors de la création du tir.

J'espère que j'ai bien définis le problème ;)

PS: je suis pas un expert en math, et les calculs auxquelles je peux penser ne sont pas forcement optimales, c'est pour ça que je fait appel à vous ;)

Mortelune
Membre Irrationnel
Messages: 1445
Enregistré le: 22 Sep 2010, 14:27

par Mortelune » 26 Juin 2012, 14:53

Ah mais l'objectif final est de faire avancer le missile à une certaine vitesse (incrémentation de r) sur une droite pour trouver le point de coordonnées suivant ?
Si c'est le cas il y a sans doute plus simple et ça se rapproche plus de la trigonométrie avec l'utilisation d'un cosinus.

drastos
Messages: 9
Enregistré le: 25 Juin 2012, 18:13

par drastos » 26 Juin 2012, 14:58

Pour ça que j'ai fait un schéma, en cas de doute, toujours faire un schéma.

Donc oui c'est pour faire avancer un missile, mais je sais pas quel formule utiliser avec les données que je possède.

Sans doute que c'est un simple problème de trigonométrie, mais je ne sais pas comment l'utiliser efficacement.

Mortelune
Membre Irrationnel
Messages: 1445
Enregistré le: 22 Sep 2010, 14:27

par Mortelune » 26 Juin 2012, 15:19

On a une droite y=ax+b, donc de pente a, le cosinus de son angle avec l'axe des ordonnées est donc donné par : .
Ainsi avancer/reculer d'une unité sur la droite revient à aller de à .

drastos
Messages: 9
Enregistré le: 25 Juin 2012, 18:13

par drastos » 26 Juin 2012, 16:21

T'as formule est niquel si on a déjà x, je me trompe?

En l’occurrence le problème est que l'on ne connais ni x, ni y du point B car un ennemi peux bien tirer tout droit comme il peux tirer en diagonale. L'angle de tire est de 180 degré vers le bas.
Par conséquent la formule doit être flexible le plus possible avec seulement quelques données. Normalement je vous ai donné les uniques données dont on dispose à savoir, le rayon, les coordonnées de départ (C), les coordonnées d'arrivé (D) et les coordonnées actuelles du tire (A).

Mais si vous voyez des données qui serais utile pour réaliser la formule, demandez moi et je vous dirais si c'est possible de les récupérer.

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 26 Juin 2012, 16:38

J'ai l'impression que le problème serait plus clair si vous l'exposiez tel qu'il est et non tel que vous l'avez déjà interprété avec des fonctions mathématiques.
Du genre :
"Un vaisseau se trouve en C, il vise le point D et lance un missile.
Je dois dessiner le trajet de ce missile en l'affichant tous les 1/1000 s.
Pendant ce temps (1/1000 s;), il a parcouru une distance r, fonction de sa vitesse qui est connue.
Comment réaliser cela ?"

drastos
Messages: 9
Enregistré le: 25 Juin 2012, 18:13

par drastos » 26 Juin 2012, 17:13

Ok ok ;)

Le jeu de type R-type que je conçoit est un jeu dans lequel on contrôle un vaisseau spatial. Celui ci peux se mouvoir sur la totalité de la surface de jeu grâce aux flèches droite, gauche, haut, bas.
Un ennemi en face tire des missiles. Ces missiles visent l'emplacement du héros au moment où ils sont lancés (important car une fois lancé, ils gardent la même trajectoire).

L'ennemi possèdent une variable qui est la vitesse du tir => r.
Les images sont rafraichis toute les 20/1000 seconde et à chaque nouvelle image, le tir avance de r et suit la droite.

Image

Quels formule me permettrais de déterminer x ET y, du futur emplacement du tir?

Mortelune
Membre Irrationnel
Messages: 1445
Enregistré le: 22 Sep 2010, 14:27

par Mortelune » 26 Juin 2012, 17:28

Donc à on connait les coordonnées du joueur J(u,v) et de l'ennemi E(m,n) (ou si ce n'est pas localisé, on sait où est le centre de gravité du joueur et l'endroit d'où est issu le tir donc on se ramène à deux points). On connait donc deux points et ainsi on a une droite y=ax+b où en résolvant le système on a et donc .
une fois qu'on a la droite la tir part de E et on incrémente en se dirigeant sur la droite d'après la dernière formule que j'ai donné (on se déplace de 1 sur la droite mais on peut adapter pour se déplacer de r en multipliant par r le pas des abscisses).

S'il y a un tir vertical (droite de la forme x=k où k est une constante), il faudra sans doute le traiter à part mais c'est facile puisque l'abscisse est fixée il suffit d'ajouter ou d'enlever r à l'ordonnée précédente selon qu'on veuille le faire monter ou descendre.

drastos
Messages: 9
Enregistré le: 25 Juin 2012, 18:13

par drastos » 26 Juin 2012, 18:06

Le problème d'incrémenter X (ou Y) est que l'on oblige le déplacement de x ou y, hors dans le cas où l'on aurais une droite quasi verticale, le fait d'incrémenter ce nombre serais problématique.

Sur un plan vertical, je vais utiliser le même principe que vous mais en incrémentant Y:

Image

Imaginez j'ai un tir qui suit la droite B, le fait d'incrémenter Y va marcher à la perfection, et trouver X ne poseras pas spécialement de problème et cela rejoins le cas auquel répond votre analyse.

Maintenant en regardant la droite A, si on essaye de faire la même chose, c'est ici que ça pose un souci. Si on augmente Y, le point d'intersection avec X seras hors du cadre, car la droite est écrasé.

Si j'ai bien compris votre analyse et le résultat auquel vous êtes arrivé, vous en êtes arrivé au même point que moi ;)
Si j'ai mal interprété votre analyse, je m'en excuse et je souhaiterais être éclairé ;)

Mortelune
Membre Irrationnel
Messages: 1445
Enregistré le: 22 Sep 2010, 14:27

par Mortelune » 26 Juin 2012, 18:27

Tu as du mal me comprendre ou alors je te comprends mal : je ne vois pas de différence significative de structure entre les droites A et B.Quand je parle de coordonnées (x;y) elles dépendent bien du repère (pour pouvoir les localiser) mais il n'y a pas de recherche de point d'intersection avec les axes du repère (même si on peut facilement les trouver à partir des données de l'équation).
Après effectivement si vous pensez avoir des problèmes d'arrondis vous devez pouvoir faire l'analogue de ce que j'ai fait mais avec des droites d'équation x=ay+b.

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 26 Juin 2012, 19:43

Bon, je vois deux choses à dire.
1- il ne faut pas incrémenter une position, mais calculer chaque position à partir de la position de départ. La raison en est que si on additionne des valeurs petites, on perd de la précision. Ceci est d'autant plus vrai si vous travaillez avec des entiers, ce qui est probable, puisqu'il s'agit de dessin, donc de pixels.
2- la valeur à incrémenter n'est pas un X ou un Y, mais une distance par rapport à l'origine.

Le point de départ est C [Xc,Yc] le point d'arrivée, en tout cas le point visé est D [Xd,Yd]. le point cherché est B [Xb,Yb].
Le point B cherché est à la distance t*r, t le nombre de millisecondes écoulées depuis le lancement r la distance parcourue pendant 1 milliseconde.
On dessine le triangle rectangle d'hypoténuse CD, les côtés étant (Xd-Xc) et (Yd-Yc).
Le point B cherché est sur CD, à une distance t*r.
Il est facile de calculer les coordonnées du point B.
On remarque que la formule comporte un dénominateur qui est (Xd-Xc) ou (Yd-Yc). Il faut que le programme comporte 2 traitements, en choisissant le cas où le dénominateur est le plus grand en valeur absolue.
En mathématique, cette opération s'appelle l'interpolation.
Naturellement, je vous laisse écrire les formules vous mêmes. Vous remarquerez que quelque soit le sens, ça marche toujours, à condition bien-sûr qu'on traite les deux cas.
Si vous souhaitez plus tard faire une jolie courbe, ce n'est pas très difficile.

drastos
Messages: 9
Enregistré le: 25 Juin 2012, 18:13

par drastos » 26 Juin 2012, 20:30

C'est exactement le principe ;)

Maintenant le tout est d'en découler une formule, je vais plancher dessus =)

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 26 Juin 2012, 22:28

Faites un dessin, appliquer Thalès et Pythagore et vous verrez, c'est pas difficile.
L'intérêt que vous le fassiez vous-même est que ça vous paraitra parfaitement simple.
Naturellement, le sujet reste ouvert.
Bonne soirée.

hammana
Membre Relatif
Messages: 477
Enregistré le: 24 Avr 2012, 21:26

par hammana » 28 Juin 2012, 13:39

drastos a écrit:Ok ok ;)

Le jeu de type R-type que je conçoit est un jeu dans lequel on contrôle un vaisseau spatial. Celui ci peux se mouvoir sur la totalité de la surface de jeu grâce aux flèches droite, gauche, haut, bas.
Un ennemi en face tire des missiles. Ces missiles visent l'emplacement du héros au moment où ils sont lancés (important car une fois lancé, ils gardent la même trajectoire).

L'ennemi possèdent une variable qui est la vitesse du tir => r.
Les images sont rafraichis toute les 20/1000 seconde et à chaque nouvelle image, le tir avance de r et suit la droite.

Image

Quels formule me permettrais de déterminer x ET y, du futur emplacement du tir?


Bonjour à tous

J'ai suivi avec intérêt toute la discussion à ce sujet. Si j'ai bien compris, il s'agit de programmer un missile qui va à vitesse constante d'un point de tir x0, y0 pour atteindre une cible x1, y1. Je suppose qu'on veut rafraichir l'image 1000 fois au cours de son trajet, cela me paraît suffisant pour ne pas donner l'mpression d'un mouvement saccadé. Je propose un programme ayant la strructure suivante:

Code: Tout sélectionner
xp=x0:yp=y0
Dessiner le missile centré en x0,y0
For i=1 to 100
x=x0+i*(x1-x0)/1000
y=y0+i*(y1-y0)/1000
effacer le missile centré sur xp,yp
dessiner un missile centré sur x,y
xp=x:yp=y
Attendre une durée choisie dont va dépendre la vitesse du missile
next i

On vérifie bien que pour i=1000 on atteint la cible.
Peut-être on aura une meilleure impression de continuité en dessinant le missile centré en x,y avant d'effacer celui centré en xp,yp. Essayer les deux!

Est-ce bien le but que vous cherchez?

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 28 Juin 2012, 13:58

Bonjour Hammana,
C'est peut-être aussi ce que j'aurais fait, mais la question était posée clairement en tenant compte de la distance parcourue pendant la période de durée élémentaire.

 

Retourner vers ⚔ Défis et énigmes

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 19 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