Coordinnées d'un pt dans une ellipse

Répondre
Partager Rechercher
bon j'y est passé les deux derniers jours j'ai plus de cheveux et je comprends plus rien du tout.
comment trouver la distance OZ, connaissant l'angle MÔS et les distances OR, et OM.

https://forums.jeuxonline.info/attachment.php?attachmentid=189921&stc=1&d=1365015486

Miniatures attachées
Cliquez sur l'image pour la voir en taille réelle

Nom : trigo.png
Taille : 460x344
Poids : 13,6 Ko
ID : 189921  

Dernière modification par Compte #6546 ; 04/04/2013 à 21h02.
Citation :
Publié par Neirdan
Z est situé où exactement?
a l'intersection de la droite OM et de l'ellipse
ca correspond a quoi , r, a et b sur mon dessin?
oh putain mon truc marche, thx!!!!!!
a et b c'est respectivement le demi grand axe et le demi petit axe de l'ellipse, pas om ni or

EDIT: Yes, mal regardé le schema, mea culpa

Dernière modification par Irie ; 03/04/2013 à 22h11.
Cf mon post sur les faiseurs de monde, en gros j'ai une sorte de bande en rotation, et j'ai besoin de savoir si je click bien dessus, (donc en verifiant l'angle et la distance de mon click par rapport a ceux de la bande)
Citation :
Publié par Ask
Cf mon post sur les faiseurs de monde, en gros j'ai une sorte de bande en rotation, et j'ai besoin de savoir si je click bien dessus, (donc en verifiant l'angle et la distance de mon click par rapport a ceux de la bande)
Dans ce cas c'était plus simple d'utiliser directement les coordonnées cartésiennes, non?
Tu calcules x^2/a^2+y^2/b^2, si c'est égal à 1 ton point est sur l'ellipse, inférieur c'est dedans, supérieur c'est dehors.
Ca revient au même mais ça se calcule directement avec les coordonnées de ton click.
Citation :
Publié par lezebulon
pour info c'est cette formule là:
031474cb80469619a7abff7d32dc7e4a.png
Ce qui est bizarre c'est que ton r est adimensionné alors que ça devrait être une longueur.
Il y a aussi plus simple avec la paramétrisation de l'ellipse :
a=OM et b=OR
x(t)=a cos(t)
y(t)=b sin(t)
Donc OZ=sqrt( a²cos²t+b²sin²t)
Citation :
Publié par G.Skilled
Ce qui est bizarre c'est que ton r est adimensionné alors que ça devrait être une longueur.
Il y a aussi plus simple avec la paramétrisation de l'ellipse :
a=OM et b=OR
x(t)=a cos(t)
y(t)=b sin(t)
Donc OZ=sqrt( a²cos²t+b²sin²t)
cm*cm/racine(cm*cm)=cm.

Et le problème de ta forme paramétrée c'est que le paramètre t n'est pas le bon angle sur son schéma.
Bon en fait ca marche pas du tout

je vais essayé d'expliquer ce que je fait, et ce que je veux.


ca, c'est ce que je veux dessinner, ce que j'appelle un pad, et qui tourne de facon elliptique. (en incrementant l'angle de 1 a chaque rafraichissement d'image, tout va beaucoup plus vite evidemment)

a4787072cea8de5fd9e0ef73dddc44a7.gif

le point le plus éloigné du centre, c'est a dire au milieu de la ligne extérieur du pad a comme coordonnées:

X=a*cos(angle)
Y=-b*sin(angle))

avec a le rayon du grand cercle, b le rayon du petit

pour les pts a gauche ou a droite, j'enlève ou je rajoute un petit quelque chose a angle, et pour la ligne du bas, je refais tout pareil en enlevant une constante a a et b (30 dans mon exemple)

et c'a a exactement la gueule que je veux, le problème c'est pour la détection du click donc. Je croyais avoir réussi avec votre formule mais en fait y a un petit décalage:

https://forums.jeuxonline.info/attachment.php?attachmentid=190013&stc=1&d=1365107121

grace a votre formule, et pour un angle donné, je peux check si le click s'effectue entre le point a l'extremité a gauche, et le croisement de la ligne blanche et de la ligne -on va dire interieure- du pad.

mais y'a un bout du pad qui deborde!!!


et c'est bien ca le probleme. ca doit venir de la facon dont je place mes pts qui sont sur la ligne interieure, en enlevant 30 au rayon de a et b comme je fais.

y'a surement un autre moyen, par exemple:

https://forums.jeuxonline.info/attachment.php?attachmentid=190018&stc=1&d=1365107670

mais c'est moins joli deja et en plus je suis incapable de trouver les coordinnées de ABCD. tout ce que j'arrive a faire c'est un pad qui grandit et retrecit bizarrement. par contre pour le check du click ca sera facile du coup vu que votre formule convient parfaitement.
Miniatures attachées
Cliquez sur l'image pour la voir en taille réelle

Nom : bug.png
Taille : 370x187
Poids : 1,7 Ko
ID : 190013  
Images attachées
 
Le problème de ta forme paramétrique comme je l'ai dis hier c'est que l'angle utilisé (a.cos(angle)) n'est PAS l'angle de ton point (x,y) en coordonnées polaires).
Du coup effectivement, les extrémités de tes deux arcs d'ellipse ne sont pas alignées avec l'origine.

Pour info sauf connerie de ma part tes deux arcs d'ellipse ne sont pas parallèles (la courbe parallèle à une ellipse ça doit etre un truc bien horrible de degré 4 (ou 8?)), mais on s'en fout.



Si tu es satisfait de l'aspect graphique de ta bande, et vu que tu arrives à la dessiner... pourquoi tu ne fais pas simplement un système de masque (une fois ta bande dessinée, ça revient, pour savoir si (x,y) est dedans, à regarder betement si le pixel (x,y) est vert) ? Ca sera bcp moins le bordel que d'inverser ton équation paramétrique pour retrouver les a-delta,b-delta,t en fonction de (x,y) (j'ai essayé 5min et ça se fait mais bon faut trouver une racine d'un polynome degré 4 quoi).

Sinon pour la dernière solution qui consiste à prendre une bande entre les deux ellipses délimitées par deux "rayons", il suffit de passer par l'équation sous forme polaire donnée plus haut pour tracer ton pad entre deux angles, et pour check un point si tu ne veux pas faire de masque, tu peux utiliser la formule que j'ai donné plus haut pour vérifier qu'il est en dehors de l'ellipse intérieure, à l'intérieur de l'ellipse extérieure, et ensuite son angle en coordonnées polaire doit être compris entre ceux du pad.
je sais pas comment ca se passe ailleurs, mais avec le prog que j'utilise je n'ai pas beaucoup de controle sur les masques. il faut que le masque soit un sprite deja existant, et vu que mon pad change aleatoirment de taille, de hauteur etc, c'est juste pas possible.
et pour la couleur du point clické j'y avait pensé aussi, mais dans le jeu les pads ont une certaine transparence et donc la couleur ne reste pas fixe.

j'ai pas tout compris a ton post pour etre honnete mais je vois bien que ca va pas etre facile. Tant pis, j'abandonne l'ellipse et je reste sur le cercle. j'adapterai la position en fonction de la taille du mob c'est tout

merci a toi et aux autres pour votre aide en tous cas!
Ah oui effectivement le paramétrage est bon mais ne représente pas l'angle MOS..
Le paramétrage polaire c'est p/(1+ecos(MOS))
Avec p/1-e=le demi grand axe et p/1+e le demi petit axe

Edit : assurancetourix : oui, ça commence à remonter ces souvenirs..

Dernière modification par Compte #220547 ; 05/04/2013 à 13h10.
Le truc c'est qu'on ne sait pas très bien comment sont choisis les deux segments qui relient les ellipses.
Clairement ils ne passent pas par l'origine, j'y vois plutôt une histoire de foyers, et encore c'est pas sûr, c'est peut-être la normale à l'ellipse qui serait au milieu des deux considérées.

Si tu sais comment ces segments sont construits alors la formule te donnant le critère d'appartenance à l'aire verte sera possible à déterminer avec 4 inégalités (deux pour les ellipses, deux pour les droites).

Si tu sais pas et que c'est une fonction mystère purement graphique, tu es obligé de passer par l'image, tu peux vérifier par exemple que le point cliqué est plus vert que la moyenne de l'image.

Dernière modification par kermo ; 05/04/2013 à 13h26.
Citation :
Publié par kermo
Si tu sais comment ces segments sont construits alors la formule te donnant le critère d'appartenance à l'aire verte sera possible à déterminer avec 4 inégalités (deux pour les ellipses, deux pour les droites).
.
Ha ben oui c'est tout con. A priori les segments sont construits avec les extrémités de ses arcs d'ellipse genre:

(a.cos(t-deltaT), b.sin(t-deltaT) ((a-30).cos(t-deltaT), (b-30).sin(t-deltaT) forment le segment "de droite"

(a.cos(t+deltaT), b.sin(t+deltaT) ((a-30).cos(t+deltaT),(b-30).sin(t+deltaT)) forment le segment "de gauche"
Oui ça donnera un truc de ce genre, sauf que les segments ne correspondent pas à des rayons.

Sur le graphique oui, mais sur la vraie image non : ils ne se croisent clairement pas à l'origine. En d'autre termes, les deux points du même segment ne correspondent pas au même T - de là, la notation polaire n'est pas forcément la meilleure.

Pour moi tout le problème c'est de savoir comment sont construits ces deux segments, après c'est trivial

D'ailleurs sur le gif animé je trouve qu'il y a certains patchs qui ont l'air plus "harmonieux" que d'autres, et c'est uniquement dû au choix des segments entre les ellipses.
Citation :
Publié par kermo
Oui ça donnera un truc de ce genre, sauf que les segments ne correspondent pas à des rayons.

Sur le graphique oui, mais sur la vraie image non : ils ne se croisent clairement pas à l'origine. En d'autre termes, les deux points du même segment ne correspondent pas au même T - de là, la notation polaire n'est pas forcément la meilleure.

Pour moi tout le problème c'est de savoir comment sont construits ces deux segments, après c'est trivial

D'ailleurs sur le gif animé je trouve qu'il y a certains patchs qui ont l'air plus "harmonieux" que d'autres, et c'est uniquement dû au choix des segments entre les ellipses.
Sinon tu peux les imiter avec un truc du genre y=f(a,b)x +g(a,b) empirique
Oui c'est du reverse engineering, mais c'est plus joli si on a la vraie formule.

En première approximation la normale à l'ellipse du milieu semble approcher le segment, ça sera plus précis qu'utiliser le rayon mais c'est pas encore tout à fait ça. Ça a l'air vrai quand le patch est symétrique par rapport à l'axe des abscisses ou des ordonnées, mais sur l'image avec le rayon blanc je ne vois vraiment pas comment sont construits les bords.
Citation :
Publié par kermo
Oui c'est du reverse engineering, mais c'est plus joli si on a la vraie formule.

En première approximation la normale à l'ellipse du milieu semble approcher le segment, ça sera plus précis qu'utiliser le rayon mais c'est pas encore tout à fait ça. Ça a l'air vrai quand le patch est symétrique par rapport à l'axe des abscisses ou des ordonnées, mais sur l'image avec le rayon blanc je ne vois vraiment pas comment sont construits les bords.
Les 4 patchs en haut en bas à droite et à gauche sont symétriques par rapport à l'axe des ordonnées et leurs bords forment les bords des 4 autres patchs donc tu as tout, si effectivement ton truc est correct.
Le problème c'est que j'ai tenté dans photoshop de voir si c'était bien régulier et en fait ça a l'air moche.
Pour moi les sommets des intersections des droites passant par les bords forment un hexagone au centre de l'ellipse avec deux points sur l'axe + deux points dans les zones vertes du haut et du bas
OP : tu as eu comment cette image ?
Miniatures attachées
Cliquez sur l'image pour la voir en taille réelle

Nom : hexagone.png
Taille : 676x456
Poids : 28,9 Ko
ID : 190043  

Dernière modification par Compte #220547 ; 05/04/2013 à 17h59.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés