Bonjour à tous,
Je cherche à calculer la nouvelle position d’un point qui se déplace sur un arc elliptique de rayons RY et RX, sur une distance D ?
Images ci-dessous
Merci, Thierry
-----
Bonjour à tous,
Je cherche à calculer la nouvelle position d’un point qui se déplace sur un arc elliptique de rayons RY et RX, sur une distance D ?
Images ci-dessous
Merci, Thierry
Puisque vous devez résoudre cela avec un programme, vous pouvez peut-être faire une boucle qui calcule la longueur de l'arc comme une somme de ds avec un pas suffisament petit sur le paramètre, et le critère de sortie de boucle = la longueur à obtenir, ce qui vous donne la valeur du paramètre, donc x et y.
Je suis Charlie.
J'affirme péremptoirement que toute affirmation péremptoire est fausse
La longueur de l'arc s'obtient en intégrant l'abscisse curviligne s entre un point fixe (le haut de l'ellipse ici) et le point courant M.
Les coordonnées de M seront : x = a sin(u) et y = b cos(u) où u varie de 0 à pi/2, semble-t-il.
(ds/du)² = a² cos²(u) + b² sin²(u)
Il faut donc intégrer la racine du terme de droite entre 0 et t et ça donnera la longueur de l'arc AM.
Pour calculer numériquement une intégrale, le plus rapide est la méthode de Gauss :
http://mathworld.wolfram.com/Legendr...uadrature.html
En pratique, avec 5 points, on a déjà une approximation excellente.
Le plus simple est de se ramener à une intégrale entre -1 et +1 et de dire que l'intégrale de f(u) entre -1 et +1 vaudra (voir la référence) :
0.2369 f(-0.90618) +0.4768 f(-0.538)+0.56889 f(0) +0.4768 f(0.538) + 0.2369 f(0.90618)
Les coefficients sont expliqués dans la référence. f(u), c'est ds/du, la racine de ce qui est écrit plus haut.
A programmer, c'est trivial.
Ca donne donc la longueur de AM en fonction de u. On peut interpoler pour avoir les points intermédiaires.
Merci pour votre réponse.Puisque vous devez résoudre cela avec un programme, vous pouvez peut-être faire une boucle qui calcule la longueur de l'arc comme une somme de ds avec un pas suffisament petit sur le paramètre, et le critère de sortie de boucle = la longueur à obtenir, ce qui vous donne la valeur du paramètre, donc x et y.
Il m'est déjà arrivé de traiter des calculs de cette façon. Mais là, je ne comprends pas "ds" (...une somme de ds).
Je pourrais rechercher la bonne valeur d'angle pour la distance à atteindre, en incrémentant l'angle de façon grossière puis de plus en plus fine (dans la boucle). Ça me donnerait les xy du point à chaque fois, mais je ne vois pas comment je pourrais en déduire une distance que je comparerais à celle que je veux atteindre, puisque je n'ai pas de formule pour ça. (je n'ai peut-être pas tout compris dans votre proposition ?).
Le ds est un petit accroissement de la longueur de la courbe, dans le cas d'une courbe paramétrée on a , en reprenant les notations de Jean-Paul, avec :
x = a sin(u) donc dx = acos(u) du
y = b cos(u) donc dy = -bsin(u) du
où du est très exactement votre pas de calcul.
Dans la boucle vous devez calculer le nouveau u (u = u + du), et le nouveau s (longueur de l'arc, s = s + ds).
Dernière modification par Médiat ; 07/12/2010 à 05h22. Motif: Correction faute de frappe et de signe
Je suis Charlie.
J'affirme péremptoirement que toute affirmation péremptoire est fausse
Merci Jean Paul.La longueur de l'arc s'obtient en intégrant l'abscisse curviligne s entre un point fixe (le haut de l'ellipse ici) et le point courant M.
Les coordonnées de M seront : x = a sin(u) et y = b cos(u) où u varie de 0 à pi/2, semble-t-il.
(ds/du)² = a² cos²(u) + b² sin²(u)
Il faut donc intégrer la racine du terme de droite entre 0 et t et ça donnera la longueur de l'arc AM.
Pour calculer numériquement une intégrale, le plus rapide est la méthode de Gauss :
http://mathworld.wolfram.com/Legendr...uadrature.html
En pratique, avec 5 points, on a déjà une approximation excellente.
Le plus simple est de se ramener à une intégrale entre -1 et +1 et de dire que l'intégrale de f(u) entre -1 et +1 vaudra (voir la référence) :
0.2369 f(-0.90618) +0.4768 f(-0.538)+0.56889 f(0) +0.4768 f(0.538) + 0.2369 f(0.90618)
Les coefficients sont expliqués dans la référence. f(u), c'est ds/du, la racine de ce qui est écrit plus haut.
A programmer, c'est trivial.
Ca donne donc la longueur de AM en fonction de u. On peut interpoler pour avoir les points intermédiaires.
Je crois que vous m'avez pris pour un mathématicien !
Désolé j'aurais du indiquer mes compétences. Je veux bien faire l'effort d'apprendre, mais j'ai peur que ça prenne quelques années pour ce niveau de difficulté !
Est-ce que "a" et "b" sont les deux rayons de l'ellipse ?
mais "abscisse curviligne s", "ds" (comme pour la réponse de Médiat), "du", "...le terme de droite", "t", les intégrales...
Je comprends une chose tout de même, vous parlez de u, qui apparemment est un angle en radians (de 0 à 90°).
A programmer c'est trivial, donc c'est rassurant.
Cela permet de calculer une distance entre deux points sur l'arc. Je suppose que l'on peut faire l'inverse, calculer le nouveau point après déplacement sur une distance connue ? (A' dans ma question N°1 initiale).
Le ds est un petit accroissement de la longueur de la courbe, dans le cas d'une courbe paramétrée on a , en reprenant les notations de Jean-Paul, avec :
x = a sin(u) donc dx = acos(u) du
y = b cos(u) donc dy = -bsin(u) du
où du est très exactement votre pas de calcul.
Dans la boucle vous devez calculer le nouveau u (u = u + du), et le nouveau s (longueur de l'arc, s = s + ds).
OUF, il m'a fallu du temps pour tout comprendre. Ça y est c'est dans la machine et ça fonctionne très bien. Merci beaucoup Médiat.
C'est une solution que j'utiliserai à défaut d'une formule mathématique miracle (non informatique). Ce qui veut dire que je suis toujours preneur pour une formule mathématique. Peut-être que Jean Paul était sur la voie ? Mais là, je ne suis pas prêt de comprendre quoi que ce soit !
Dernière modification par Médiat ; 07/12/2010 à 05h23. Motif: Correction faute de frappe et de signe (pas d'impact puisque utilisé au carré)
Il existe une série qui donne l'angle (en fait le paramètre) en fonction de la longueur d'arc, voir ici:
http://groups.google.com/group/sci.m...3cd4eb79b8e86e
c'est la formule de Out[4]:=etc...
où d = longueur d'arc/a,
m = excentricité^2,
a = demi-axe majeur
le hic c'est que cette formule converge pour des angles près de 0 car c'est une série qui est l'inverse d'un développement limité de l'intégrale elliptique de seconde espèce autour de 0. Alors plus on s'éloigne de 0 moins la série est précise. Je dirais qu'elle est utilisable pour des longueurs correspondant à des points dans le premier quadrant de l'ellipse, mais pour des points dans les autres quadrants, on pourrait utiliser par exemple les propriétés de symétrie de l'ellipse. Mais je sais pas si c'est plus efficace que la méthode que tu as déjà.
Merci Sylvain.Il existe une série qui donne l'angle (en fait le paramètre) en fonction de la longueur d'arc, voir ici:
http://groups.google.com/group/sci.m...3cd4eb79b8e86e
c'est la formule de Out[4]:=etc...
où d = longueur d'arc/a,
m = excentricité^2,
a = demi-axe majeur
le hic c'est que cette formule converge pour des angles près de 0 car c'est une série qui est l'inverse d'un développement limité de l'intégrale elliptique de seconde espèce autour de 0. Alors plus on s'éloigne de 0 moins la série est précise. Je dirais qu'elle est utilisable pour des longueurs correspondant à des points dans le premier quadrant de l'ellipse, mais pour des points dans les autres quadrants, on pourrait utiliser par exemple les propriétés de symétrie de l'ellipse. Mais je sais pas si c'est plus efficace que la méthode que tu as déjà.
J'essaie de tout comprendre, mais j'ai du mal. En suivant ton lien, et quelques liens plus loin, j'ai tout de même trouvé une formule pour une approximation de la circonférence de l'ellipse :
h = (a-b)^2/(a+b)^2
cir3 = PI*(a+b)*(1+3*h/(10+SQR(4-3*h)))
Sinon, je ne comprends pas le terme exentricité. Est-ce le rapport axe majeur/axe mineur ? (ou largeur/hauteur ellipse).
Si la formule Out[4] fonctionne sur une partie de l'ellipse, quelle est l'autre formule pour le reste de l'ellipse et comment les relier ?
Je dispose en effet d'une solution qui fonctionne, que Médiat m'a proposée. Vu l'utilisation que je vais en faire (interactivité 2D, sans rentrer dans les détails, ce serait un peu long), cette solution va occasionner de nombreux calculs et tests en continu. C'est pour ça que je suis toujours intéressé par une solution mathématique.
JeanPaul a proposé aussi une solution, mais je n'ai pas pu en faire grand-chose vu mon niveau en math !
L'excentricité, c'est le rapport c/a où 2 c est la distance entre les 2 foyers et 2a le grand axe. Il est facile de calculer c car a² = b² + c².
La formule calcule la valeur du paramètre phi pour la longueur d'arc L (attention: L est mesurée à partir de phi=0):
z := L / a;
m := 1 - (b/a)^2;
phi:= z
+ (m*z^3)/6
+ (-4*m + 13*m^2)*z^5 /120
+ ((16*m - 284*m^2 +493*m^3)*z^7)/5040
+ ((-64*m + 4944*m^2 - 31224*m^3 + 37369*m^4)*z^9)/362880
+ ((256*m - 81088*m^2 + 1406832*m^3 - 5165224*m^4 + 4732249*m^5)*z^11)/39916800
+ (z^13*(-1024*m + 1306880*m^2 - 56084992*m^3 + 474297712*m^4 - 1212651548*m^5 + 901188997*m^6))/6227020800
Mais elle diverge plus on s'éloigne de phi=0 alors je l'utiliserais seulement pour des points dans le premier quadrant.
Pour les autres quadrants j'utiliserais la symétrie de l'ellipse comme ceci:
Premièrement, calculer le périmètre total C de l'ellipse avec une des formules trouvées ici:
http://local.wasp.uwa.edu.au/~pbourk...y/ellipsecirc/
http://www.numericana.com/answer/ellipse.htm
Ensuite:
si 0<=L<=C/4:
le point est dans le quadrant 1. Utiliser L directement: z:=L/a, phi:=...etc..., puis X=a cos(phi), Y=b sin(phi)
si C/4<L<=C/2:
le point est dans le quadrant 2. z:=(C/2-L)/a, phi:=...etc..., puis X= -a cos(phi), Y=b sin(phi)
si C/2<L<=3C/4:
le point est dans le quadrant 3. z:=(L-C/2)/a, phi:=...etc..., puis X= -a cos(phi), Y= -b sin(phi)
si 3C/4<L<=C:
le point est dans le quadrant 4. z:=(C-L)/a, phi:=...etc..., puis X= a cos(phi), Y= -b sin(phi)
La formule elle-même peut être optimisée, les puissances de m devraient être calculées une seule fois, etc. Mais il reste à voir si c'est plus efficace comme cà.
Ok pour l'excentricité.
Je crois que je vais me contenter de la solution de Médiat, qui fonctionne et qui est dans mes cordes.
Merci à Médiat, Jeanpaul et Sylvainc2
le résultat ci-dessous en image.
Je n'ai pas tenu compte des symétries. Quelque soit L, ou le quadrant, les points restent bien sur le tracé de l'ellipse. Mais, alors que l'incrémentation de L est régulière, la progression sur l'ellipse est exponentielle (ou dans le genre).