IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Mathématiques Discussion :

Dessiner une conique


Sujet :

Mathématiques

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 53
    Points : 93
    Points
    93
    Par défaut Dessiner une conique
    Bonjour à tous !

    J'ai un petit soucis et j'espère que vous pourrez m'aider :

    J'essaie de dessiner une conique. Je n'ai pas de soucis quand j'ai son équation réduite ( ex : y²=2px pour une parabole ), mais je ne vois pas comment faire via l'équation générale ( ax²+bxy+cy²+dx+ey+f = 0 ), n'étant pas un très bon matheux, ça me dépasse un peu

    J'ai bien la solution de parcourir mon espace de dessin point par point et de vérifier si le point résout l'équation, mais niveau vitesse, c'est vraiment pas la joie... Et les équations réduites ne m'arrangent pas non plus, à moins de trouver comment passer de celles-ci à l'équation générale...

    Donc voilà, si quelqu'un peut m'aider, je lui en serais extrêmement reconnaissant ^^ Merci d'avance !


    PS : histoire d'être honnête, tout ceci se passe dans le cadre d'un projet de fac. Les coniques ne sont pas le point central du projet, mais sont suffisamment important pour m'empêcher d'avancer...

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Il faut que tu lises un cours de math de spécialité math de terminale S. Il t'expliquera que quand on coupe un cône, on peut obtenir:
    • 2 droites
    • Un cercle
    • Une ellipse
    • Une parabole
    • Une hyperbole


    Facile à vérifier avec une lampe, un abat-jour, et un carton qui sert de plan de coupe.

    Le cours te donnera surtout les formules pour calculer centre, foyers, excentricité, etc... et savoir dans quel cas tu te places.

    Pour tracer, tu auras intérêt à prendre les équations paramétriques de la conique

    J'espère ne pas avoir été trop laconique
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 53
    Points : 93
    Points
    93
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Il faut que tu lises un cours de math de spécialité math de terminale S. Il t'expliquera que quand on coupe un cône, on peut obtenir:
    • 2 droites
    • Un cercle
    • Une ellipse
    • Une parabole
    • Une hyperbole


    Facile à vérifier avec une lampe, un abat-jour, et un carton qui sert de plan de coupe.
    Jusque là, ça va, j'arrivais à m'en sortir ^^

    Citation Envoyé par Flodelarab Voir le message
    Le cours te donnera surtout les formules pour calculer centre, foyers, excentricité, etc... et savoir dans quel cas tu te places.

    Pour tracer, tu auras intérêt à prendre les équations paramétriques de la conique
    C'est ce point là qui m'embête : est-ce que je dois obligatoirement savoir dans quel type de conique je suis pour pouvoir la tracer ? J'avais pensé à des équations paramétriques pour le dessin, mais impossible d'en trouver une générale... Est-ce que ça veut dire ce que je crains : il n'y en a tout simplement pas ?

    Si c'est bien ça, il faut donc, en partant de l'équation générale que je trouve dans quel cas je suis pour la tracer. Seulement ça m'arrange pas du tout xD
    Ça voudrait dire que
    - soit je spécialise mes objets ( Java, POO, toussa toussa ) coniques à la construction, peut-être en allant voir du côté du design pattern Décorateur ( je découvre les DP, faut pas m'en vouloir si je dis n'importe quoi )
    - soit ma classe Conique obtient une fonction dessin() par type ( c'est trop dégeulasse comme façon de faire, ça ? )

    Dans les deux cas, faut que je trouve donc une paramétrique par cas, comment trouver dans quel cas je suis, et comment passer de l'équation générale à la paramétrique ( et l'inverse aussi, tant qu'à faire :p ).

    On est bien d'accord ?

    Citation Envoyé par Flodelarab Voir le message
    J'espère ne pas avoir été trop laconique

  4. #4
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Fais une recherche google pour voir la représentation graphique de chacun des types que je t'ai donné.

    Une parabole a 2 branches infinies.
    Une hyperbole a 4 branches infinies.
    Une ellipse ou un cercle est une courbe fermée. Tu ne vas pas la tracer à l'infini (à moins de vouloir tourner en rond et creuser la table ).

    Donc, oui, tu vas devoir séparer les cas.


    Pour les courbes paramétriques, prenons l'ellipse: (x:abscisse, y ordonnée)
    x=r1.cos(t)
    y=R2.cos(t)
    Tu fais varier t et tu as tes coordonnées de point. C'est pas insurmontable.

    Est-ce pour dessiner sur un graphique de ton choix?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 53
    Points : 93
    Points
    93
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Fais une recherche google pour voir la représentation graphique de chacun des types que je t'ai donné.

    Une parabole a 2 branches infinies.
    Une hyperbole a 4 branches infinies.
    Une ellipse ou un cercle est une courbe fermée. Tu ne vas pas la tracer à l'infini (à moins de vouloir tourner en rond et creuser la table ).

    Donc, oui, tu vas devoir séparer les cas.
    Et bah on va faire avec alors ^^

    Citation Envoyé par Flodelarab Voir le message
    Pour les courbes paramétriques, prenons l'ellipse: (x:abscisse, y ordonnée)
    x=r1.cos(t)
    y=R2.cos(t)
    Tu fais varier t et tu as tes coordonnées de point. C'est pas insurmontable.
    Non, c'est sûr que passer du paramétrique au dessin est loin d'être mon problème principal ^^ Passer de ax²+bxy+ ... à l'équation paramétrique m'embête un peu plus :p

    Citation Envoyé par Flodelarab Voir le message
    Est-ce pour dessiner sur un graphique de ton choix?
    Je suis pas sûr de ce que tu entends par là, donc je vais répondre large : je dois pouvoir dessiner en openGL différentes figures, dont des coniques, définies par l'utilisateur. Grosso modo, c'est un clone de GeoGebra. Dans le cas des coniques par exemple, à partir de 5/6 points donnés par l'user, je dessine la conique correspondante.
    Ça répond à ta question ?


    Dans tous les cas, merci de t'intéresser à mon cas ^^

  6. #6
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Pour la géométrie, j'utilisais kig (logiciel libre), du projet KDE. Il permet de tracer des coniques. Tu as peut-être des choses à glaner dedans. (code python j'imagine)

    Je posais des questions pour le traçage car il faut se méfier des trous. Prendre l'hyperbole y=1/x pour des x de 1 en 1 fera disparaître les branches verticales.

    Pour ta forme générale, Il suffit de mettre sous la forme ± (x - x0)²/a ± (y-y0)² /b= e , de faire un changement de repère et d'étudier les cas. En fait, tout ton boulot va consister à trouver le repère dans lequel les 5-6 points ont du sens pour une conique. La nature de la conique ne peut-elle pas être donnée par l'utilisateur?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  7. #7
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 53
    Points : 93
    Points
    93
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Pour la géométrie, j'utilisais kig (logiciel libre), du projet KDE. Il permet de tracer des coniques. Tu as peut-être des choses à glaner dedans. (code python j'imagine)
    Je vais regarder ce que je peux en faire

    Citation Envoyé par Flodelarab Voir le message
    Pour ta forme générale, Il suffit de mettre sous la forme ± (x - x0)²/a ± (y-y0)² /b= e , de faire un changement de repère et d'étudier les cas. En fait, tout ton boulot va consister à trouver le repère dans lequel les 5-6 points ont du sens pour une conique. La nature de la conique ne peut-elle pas être donnée par l'utilisateur?
    Malheureusement non, car elle n'a pas d'importance pour lui, seul le fait que ce soit une conique compte. Pour entrer dans les détails, après le côté GeoGebra, une fois que j'ai des figures, je tente d'appliquer des théorèmes entrés par l'user. Certains d'entre eux pourront utiliser les hexamys de Pascal, d'où les coniques. Et à côté de ça, j'affiche le tout.

  8. #8
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Bonjour.

    Généralement, quand on travaille avec des coniques, on surveille de près leur excentricité. À zéro, on a un cercle ; entre zéro et un une ellipse ; à un, une parabole ; au dessus de un, une hyperbole, et à l'infini une droite.

    S'il est question de tracer cette conique, il est préférable de la mettre sous une forme paramétrée , calculer , et tracer des points en faisant des sauts de inversement proportionnels à v(t).

    Bon courage.
    -- Yankel Scialom

  9. #9
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 53
    Points : 93
    Points
    93
    Par défaut
    Bonjour !

    Le truc, c'est que mes seules entrées sont des points de la conique. De là, je peux donc avoir mon équation générale. Pour déterminer le type de la conique, je suis donc passé par là : http://fr.wikipedia.org/wiki/Conique...e_discriminant en partant du principe que c'était fiable ^^

    Pour les équations paramétriques, y'a rien à faire... J'ai beau chercher, je ne trouve pas comment passer de ax²+bxy+cy²+dx+ey+f=0 à une équation paramétrique... En passant par un foyer et une directrice, oui, mais dans mon cas, j'en ai pas... Ces fichues coniques vont me tuer

  10. #10
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Le lien que tu cites est bon. Sauf qu'il parle d'équation réduite sans dire comment faire.

    Effectivement, les termes en x et y ne sont pas un problème car ils sont le résidu d'un dévelopement de (x + k)² = x² + 2kx + k² où k est une constante. On peut toujours faire rentrer le x dans le carré et simplifier en considérant un changement de repère par translation.

    Mais avant d'arriver là, il faut se débarasser du terme en xy ! Celui-là est le résultat d'une rotation.
    Ce lien me paraît assait bon pour faire disparitre xy. (il faut lire juste en dessous des 3 cas)
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  11. #11
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    J'ai fini par trouver. Mais c'est violent !

    Voici comment procéder. On part de l'équation générale suivante :



    Étape 1, déterminer



    Étape 2, déterminer



    Étape 3, utiliser l'algorithme fourni par l'auteur de la page donnée plus haut. Attention, il utilise une notation légèrement différente de nous. À cette étape, on se retrouve avec une équation d'une des formes suivantes (voir ce tableau).


    Étape 4, en déduire le semi-latus rectum (voir le même tableau).


    Étape 5, utiliser l'équation suivante pour obtenir une équation paramétrique de la courbe.



    Étape 6, calculer la dérivée de l'abscisse curviligne (ou vitesse) de la conique en tout point :



    Étape 7, tracer (enfin !) la courbe en prenant :

    avec à déterminer selon le besoin (c'est le pas).

    Tracer les points .


    -- Yankel Scialom

  12. #12
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 53
    Points : 93
    Points
    93
    Par défaut
    Hé bah... Merci à tout les deux ! Je pense que je vais enfin pouvoir m'en sortir avec ça ( du moins, j'espère xD ) !

    Je vais voir si je m'en sors et je vous tiens au courant. Encore un grand merci !

  13. #13
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Alfrodull Voir le message
    J'ai bien la solution de parcourir mon espace de dessin point par point et de vérifier si le point résout l'équation, mais niveau vitesse, c'est vraiment pas la joie...
    Tu peux utiliser une grille adaptative pour déterminer les zero-crossing d'une fonction implicite f(x,y)=0.

    Dans ton cas particulier, ce n'est pas aussi "propre" que de passer par les équation réduites + transformations (rotation/translation), mais ca accélère énormément l'affichage. Et ca fonctionne pour la plupart les fonctions implicites.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Discussions similaires

  1. [Swing][Graphics2D] dessiner une flèche
    Par Galima dans le forum 2D
    Réponses: 13
    Dernier message: 03/12/2011, 23h31
  2. [Image]Dessiner une ligne en dynamique
    Par Bugmaster dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 02/08/2004, 11h56
  3. Dessiner une ligne
    Par Bugmaster dans le forum 2D
    Réponses: 6
    Dernier message: 29/07/2004, 08h36
  4. Dessiner une image en arrière plan d'1 MDI Main Frame
    Par Yacine95000 dans le forum MFC
    Réponses: 3
    Dernier message: 14/06/2004, 10h22
  5. Dessiner une ligne dans un cube transparent ?
    Par Muetdhiver dans le forum OpenGL
    Réponses: 4
    Dernier message: 04/05/2004, 11h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo