Déterminer si le point est dans le cercle
Bonjour
Avant de commencer, j'ai souvenir d'avoir déjà eu des problèmes similaire au Lycée donc si je me suis trompé de catégorie j'en suis désolé ^^'
Je programme actuellement une application d'apprentissage pour croupier contenant plusieurs exercices.
Dans l'un de ces exercices j'essaie de créer un genre de puzzle pour faire apprendre le "racetrack" car les croupier doivent apprendre par cœur les nombres de la roulette dans l'ordre.
(Exemple: "racetrack casino.jpg").
Dans l'idée, je vais prendre un racetrack sans valeur à l'intérieur puis demander à l'utilisateur de placer un nombre sur la case correspondante.
(Exemple: "shema racetrack repere.jpg")
Mon problème est de déterminer quel case l'utilisateur a touché sur l'écran du téléphone.
Pour toute les cases rectangulaire, il n'y a pas de problème je compare les coordonnées d'où l'écran à été touché par l'utilisateur avec Ymin-Ymax Xmin-Xmax pour chaque case.
En revanche pour toute les cases arrondie, je ne vois pas du tout comment faire.
Annexe : "shema racetrack annexe.jpg"
Toutes les coordonnées des points rouges sont connues.
L=h
rayon C1 = rayon C2
rayon C1 = L + L/2
Avant de commencer, j'ai souvenir d'avoir déjà eu des problèmes similaire au Lycée donc si je me suis trompé de catégorie j'en suis désolé ^^'
Je programme actuellement une application d'apprentissage pour croupier contenant plusieurs exercices.
Dans l'un de ces exercices j'essaie de créer un genre de puzzle pour faire apprendre le "racetrack" car les croupier doivent apprendre par cœur les nombres de la roulette dans l'ordre.
(Exemple: "racetrack casino.jpg").
Dans l'idée, je vais prendre un racetrack sans valeur à l'intérieur puis demander à l'utilisateur de placer un nombre sur la case correspondante.
(Exemple: "shema racetrack repere.jpg")
Mon problème est de déterminer quel case l'utilisateur a touché sur l'écran du téléphone.
Pour toute les cases rectangulaire, il n'y a pas de problème je compare les coordonnées d'où l'écran à été touché par l'utilisateur avec Ymin-Ymax Xmin-Xmax pour chaque case.
En revanche pour toute les cases arrondie, je ne vois pas du tout comment faire.
Annexe : "shema racetrack annexe.jpg"
Toutes les coordonnées des points rouges sont connues.
L=h
rayon C1 = rayon C2
rayon C1 = L + L/2
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Le point $(x,y)$ est à l'intérieur du cercle de centre $(a,b)$ et de rayon $r$ si et seulement si $(x-a)^2+(y-b)^2 < r^2$.
Je pense qu'on à résolue la moitié du problème.
Auriez-vous une formule pour déterminer dans quel part du cercle est le point?
Je pensais utiliser les angles de chaque part du cercle.
Exemple:
Case 6 compris entre 0 et 45 degré
Case 7 compris entre 45 et 90 degré
Case 1 compris entre 90 et 150 degré
etc...
La formule qui détermine le cosinus de l'angle compris entre les points $\widehat{AOB}$ est :
$(\overrightarrow{OA} × \overrightarrow{OB}) /( OA × OB) = cos(\widehat{AOB})$
Par suite on détermine la valeur de l'angle avec $arccos$.
Avec ça et l'autre formule donnée précédemment tu devrais aisément résoudre ton problème.
Note : la formule donnera toujours l'angle compris entre $0°$ et $180°$.
Par exemple dans la dernière figure, un point $(x,y)$ est dans la zone (7) et avec le repère rouge dans tes premières figures;
[Le petit cercle de centre $(a,b)$ et de rayon $r$ et le grand cercle de centre $(c,d)$ et de rayon $R$];
s'il verifie le système $\begin{cases}0\le y\le x\\0\le x\le 1.5L \\ \text{(exemple de la figure c'est l'abscisse de la verticale à droite)}\\(x-a)^2+(y-b)^2\ge r^2\\(x-c)^2+(y-d)^2\le R^2\end{cases}$.
Cordialement
J'ai cherché de mon coté comment appliquer cette formule mais ça ne marche pas
Pourriez-vous développer, comment se calcule cette formule? s'il vous plait
Attention que dans votre schéma avec les 7 partitions du disque, la moitié droite est découpée en trois morceaux de même secteur angulaire alors que la partie gauche est coupée en 4 morceaux de même secteur angulaire (forcément différent de ceux de la partie droite).
De plus, vous démarrez vos mesures d'angle principal du côté opposé à ce qui se fait d'habitude, et en allant en sens opposé de plus.
Et cela correspond en fait quasiment aux dernières valeurs (6 et 7).
Bref, je vous conseillerais de reprendre le problème en partant du point supérieur du disque comme origine et de transformer les fonctions trigonométriques pour modéliser le sens de parcours naturel (de 1 à 7, donc), ce qui supprimera de facto deux difficultés inhérentes à votre modélisation.
À bientôt.
Cherche livres et objets du domaine mathématique :
Intégraphes, règles log et calculateurs électromécaniques.
Si c'est de la formule que j'ai donné dont tu parles, il s'agit pour $\overrightarrow{OA} × \overrightarrow{OB}$ du produit scalaire du vecteur $\overrightarrow{OA}$ et $\overrightarrow{OB}$. Et pour $OA × OB$ simplement du produit des longueurs $OA$ et $OB$.
En coordonnées cartésienne cela donne pour le produit scalaire :
$(xA-xO) (xB-xO) + (yA-yO) (yB-yO)$
Et pour le produit des deux longueurs :
$\sqrt{(xA-xO)^2+(yA-yO)^2} \sqrt{(xB-xO)^2+(yB-yO)^2}$
Ne pas oublier la division et la fonction arc cos. Attention aux parenthèses.
Je vais pouvoir finir mon application
Merci encore!
Auriez vous une formule pour calculer les coordonnées de B?
Il faut un renseignement supplémentaire au moins : A, O et l'angle AOB donnent une (*) demi droite de points B.
Cordialement.
(*) pour un angle de demi-droites, dit aussi "angle orienté".
J'ai besoin pour mon application d'une formule pour calculer dans un repère orthonormé les coordonnées d'un point à l'aide de 2 points et d'un angle.
Mettons que A = (a,b), O = (c,d), l'angle AOB = xº, longueur AO = longueur BO
Quels sont les coordonnées de B ?
http://www.les-mathematiques.net/phorum/read.php?8,2264908
c'est peut être plus clair avec cette énoncé.
Il y aura deux solutions.
Mon approche est naïve. Je viens plus tard proposer mon truc.
D’ici là, peut-être qu’une personne charitable aura plié ce petit exercice d’une manière élégante.
Cordialement
J'ai modifié.
coordonnées !
Bien cordialement.
kolotoko
Si l'angle AOB est un angle orienté, mesuré dans un repère orthonormé direct, il y a une unique solution.
Le vecteur $\overrightarrow{OB}$ s'obtient par rotation à partir de $\overrightarrow{OA}$. Il suffit d'écrire la matrice de rotation.
Il serait plus judicieux de prendre le point O pour origine et de trouver les formules de la rotation qui transforme A en B, ce qui doit être possible, entre autres, par voie trigonométrique ...
Bien cordialement
JLB
Auriez-vous une documentation ou bien un exemple à me donner pour que j'y voit plus claire?
Dans un repère orthonormé d'origine O, connaissant A(xA, yA) et l'angle AOB = a, les coordonnées de B (xB, yB) sont les suivantes :
xB = yA.sin(a) + xA.cos(a) et yB = yA.cos(a) - xA.sin(a)
(formules établies à partir des formules trigonométriques donnant le sinus et le cosinus de la différence de deux angles, ici xOA et xOB, compte tenu de l'égalité OA = OB)
Quelqu'un peut-il confirmer ? Merci !
Bien cordialement
JLB
PS : Suite au message de GaBuZoMeu, je précise que ces formules sont valables, si je ne me trompe, dans tous les cas, mais à condition de tenir compte du sens de l'angle AOB, donc de son signe : je prépare une figure, pour plus de clarté.
Edit : correction de la coquille signalée par Jelobreuil.
Voici, pour Sevlacnog, les figures promises.
Bien cordialement
JLB