equation d'ellipse - C++ - Programmation
Marsh Posté le 13-04-2005 à 15:06:56
En cherchant sur le net j'ai trouvé cette équation :
Ellipse : x = a.cos t , y = b.sin t
Savez vous comment l'utiliser?
Marsh Posté le 13-04-2005 à 15:36:19
J'ai trouvé mieux : x(t) = x0 + a.cos(t), y(t) = y0+ b.sin(t).
x0 et y0 sont les coordonnées du centre, a et b sont les distances du centre par rapport à la largeur et à la hauteur de l'image. Par contre t, ça représente quoi???
Marsh Posté le 13-04-2005 à 15:37:25
tu confonds avec un cercle... une eclipse a deux foyers...
Marsh Posté le 13-04-2005 à 15:38:47
http://www.telelearning-pds.org/co [...] param.html
http://fr.wikipedia.org/wiki/Ellip [...] 9matiques)
Marsh Posté le 13-04-2005 à 15:39:17
non je ne confond pas, mais c'est une équation paramètrique... le seul truc qui coince c'est que je ne sais pas ce que représente 't' ...
Marsh Posté le 13-04-2005 à 15:40:55
La formule que tu a fourni est a utiliser ainsi :
X0 et Y0 : les coordonnees du centre de l'ellipse.
A : la moitie de la longueur de l'axe horizontal de l'ellipse
B : la moitie de la longueur de l'axe vertical de l'ellipse
Tout les points de l'ellipses ont pour coordonnees :
X = X0 + (A * Cos(t))
Y = Y0 + (B * Sin(t))
Ainsi pour dessiner une ellipse, il suffit de connaitre X0, Y0, A et B.
Ensuite dans une boucle on fait varier t de 0 à 2*PI (PI = 3.1415), on utilise les formules précédentes pour calculer les coords de chaque point et on les affiche.
Remarque 1 : L'interval [0 ; 2*PI] permet de tracer l'ellipse entiere. Mais utiliser l'interval [PI/2 ; 3*PI/2] ne permet de tracer que la partie gauche de l'ellipse.
Remarque 2 : Les formules sont applicable dans un repere cartesien, il faut effectuer un changement de coordonnes pour obtenir la position des points sur un ecran ou une image.
Marsh Posté le 13-04-2005 à 15:47:37
merci pour ta réponse, et pour utiliser cette équation :
x²/a² + y²/b² = 1 ?
Comment avoir le rayon? que représentent chaque membre? comment ajouter un centre?
Marsh Posté le 13-04-2005 à 15:57:06
Cette seconde equation est dite cartesienne. C'est a dire que les variables x et y sont liees dans une meme equation.
a et b represente le meme chose que dans les equations parametriques precédentes.
Cependant cette equation est un peu particuliere car elle ne represente que des ellipses centrees sur (0,0). (Il est toutefois possible de la modifier pour choisir un autre centre)
Ainsi de memoire :
((X-X0)/A)² + ((Y-Y0)/B)² = 1
edit : correction formule
Marsh Posté le 13-04-2005 à 17:17:17
il ne manquerait pas un rayon ou quelque chose dans le genre? j'obtiens des résultats étranges : au lieu de tracer une ellipse, ça me trace une croix très épaisse...
Si on se base sur l'équation d'un cercle, ((X-X0)/A)² + ((Y-Y0)/B)² = r² : c'est correct ou je dis une grosse connerie lol?
Marsh Posté le 13-04-2005 à 17:20:16
L'equation n'est pas celle d'un cercle mais d'une ellipse. En fait meme pas.
Ellipse :
((X-X0)/A)² + ((Y-Y0)/B)² = 1
X = X0 + (A * Cos(t))
Y = Y0 + (B * Sin(t))
Cercle :
(X-X0)² + (Y-Y0)² = R² (R = rayon du cercle)
X = X0 + (R * Cos(t))
Y = Y0 + (R * Sin(t))
Remarque :
Pour l'ellipse, si A = B, alors c'est un cercle.
De plus en general pour la programmation on utilise les equations parametriques qui permettent de tracer la figure avec une simple boucle.
Marsh Posté le 13-04-2005 à 17:41:20
Voila ce que je fais : au lieu de me faire une ellipse, ça me trace une grosse croix! je comprends pas pourquoi
A cause d'une approximation peut-être? vous avez une idée?
Citation : |
Marsh Posté le 13-04-2005 à 17:47:10
joeleclems a écrit : Voila ce que je fais : au lieu de me faire une ellipse, ça me trace une grosse croix! je comprends pas pourquoi
|
elle est où ta boucle for :
Code :
|
Marsh Posté le 13-04-2005 à 17:51:51
J'ai rien compris .
Poste un vrai code avec les balises C++ et un algo clair. En fait je vois meme pas l'utilisation des formules.
Marsh Posté le 13-04-2005 à 17:53:02
oups, je n'avais pas vu les balises de codes, désolé...
Ma boule for? ben elle est ligne 7-8!
Code :
|
Marsh Posté le 13-04-2005 à 17:56:07
oki mais t'as deux boucles for ??? et normalement tu n'en as qu'une
Marsh Posté le 13-04-2005 à 17:58:05
parce que je parcours une image (donc deux dimensions), c'est pourquoi j'ai besoin d'une boucle for pour parcourir les lignes (l) et une pour parcourir les colonnes (c).
Marsh Posté le 13-04-2005 à 18:00:39
Bah en fait le principe c'est de faire varier un angle de 0 a 2*PI. Avec les equations parametriques on calcule la position du point correspondant et on l'affiche sur l'image. Mais on ne parcoure pas toute l'image pour dessiner les pixels sur l'ellipse, c'est une perte de temps !
Marsh Posté le 13-04-2005 à 18:04:14
Le problème c'est que j'ai besoin de parcourir toute l'image pour faire la somme de tous les pixels qui ne se trouvent pas dans l'ellipse!
Marsh Posté le 14-04-2005 à 09:18:14
On dirait un problème de cast, et pourtant même sans le cast ça me donne le même resultat :-(
Marsh Posté le 14-04-2005 à 09:28:47
LordHarryPotter a écrit : oki mais t'as deux boucles for ??? et normalement tu n'en as qu'une |
Non
FrozenPaladin a écrit : Bah en fait le principe c'est de faire varier un angle de 0 a 2*PI. Avec les equations parametriques on calcule la position du point correspondant et on l'affiche sur l'image. Mais on ne parcoure pas toute l'image pour dessiner les pixels sur l'ellipse, c'est une perte de temps ! |
et Non.
Son algo est correct: il veut afficher la partie de l'image qui se trouve dans l'ellipse, pas afficher une ellipse comme ça (en plus, le faire en parametrique, c'est pas une bonne idée sur un écran d'ordinateur). Certes, l'algo de Bresenham pour les cercles serait plus efficace, mais passons.
joeleclems a écrit : On dirait un problème de cast, et pourtant même sans le cast ça me donne le même resultat :-( |
On voit pas le type de tes variables (recentre_x ou axe_w_ellipse par exemple). Pourquoi ne déclares tu pas la variable seulement lorsque tu lui donne sa valeur ?
Marsh Posté le 14-04-2005 à 09:33:38
oups, il me restait une variable déclarée en int...
merci pour votre aide
Marsh Posté le 13-04-2005 à 14:40:29
Bonjour,
J'ai une image représentée par un tableau et je cherche à dessiner une ellipse dans cette image... le problème c'est que je ne suis pas très fort en maths, alors les équations d'ellipse... Sauriez-vous comment utiliser une équation d'ellipse afin d'en dessiner une sur une image?
merci d'avance