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

C++Builder Discussion :

Créer une ellipse


Sujet :

C++Builder

  1. #1
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 62
    Points : 43
    Points
    43
    Par défaut [Resolu] Créer une ellipse
    Bonjour

    Je souhaite dessiner sur un canvas une ellipse.
    Mais pas aligné sur les axes X et Y. Elle devrait pouvoir pivoter donc aligné dans n'importe quelle direction.
    Je peux également connaitre les grands axes et petit axes.

    J'ai vu dans l'aide deux méthodes Ellipse,
    - la première est directement alignée sur les axes X et Y
    - la seconde n'apparait pas dans la classes TCanvas, (mais elle apparait dans l'aide), je dispose pourtant de BC++6Entreprise edition

    J'ai également essayé avec les méthodes arc, mais c'est le même problème.

    Je solicite donc votre aide si quelqu'un avait la solution

  2. #2
    JEG
    JEG est déconnecté
    Membre éclairé
    Avatar de JEG
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 211
    Points : 727
    Points
    727
    Par défaut
    essaye en utilisant les courbes de bezier.

    sinon il faut calculer et dessiner point par point.

  3. #3
    Membre chevronné
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Points : 1 911
    Points
    1 911
    Par défaut
    Il existe la fonction Ellipse des Canvas (surface de dessin des composants), par exemple pour créer l'ellipse correspondant aux dimensions d'un PaintBox on écrira :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PaintBox1->Canvas->Ellipse(0,0,PaintBox1->Width,PaintBox1->Height);
    À bientôt
    Gilles

  4. #4
    JEG
    JEG est déconnecté
    Membre éclairé
    Avatar de JEG
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 211
    Points : 727
    Points
    727
    Par défaut
    Je crois que cela ne lui convient pas car alexthomas cherche à pouvoir donner une orientation à l'ellipse (d'apres son message)

  5. #5
    Membre chevronné
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Points : 1 911
    Points
    1 911
    Par défaut
    Autant pour moi, j'avais lu le tout en diagonale, j'espère que l'internaute trouvera une solution.

    À bientôt
    Gilles

  6. #6
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 62
    Points : 43
    Points
    43
    Par défaut
    Salut

    Gilles : thanks mais c'est exacte, je cherche à donner une orientation (une rotation à mon ellipse)
    merci quand meme

    JEG : Je vais regardé avec les courbes de bezier, j'y avais pensé, mais j'espérais qu'il y ai un moyen mieux fait...C'est quand meme limité les fonctions de dessin sur BC++
    Je te tiens au courant

  7. #7
    Membre chevronné
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Points : 1 911
    Points
    1 911
    Par défaut
    J'ai bien peur comme l'a dit JEG qu'il vous faille faire ce calcul vous même.

    Je vous donne une idée (à l'improvisade), celle de créer l'ellipse proposée par le Canvas (donc droite ou alignée) dans un bitmap donc hors écran et d'appliquer pour chaque point du bitmap (dans un autre bitmap qui contiendrait la solution) une rotation avec les fonctions sinus et cosinus. C'est un peu lourd mais il est certain que ça marche et de plus, comme c'est vous qui appliquez la rotation, vous maîtrisez les axes. L'algorithme serait donc du genre : pour chaque point noir (x1,y1) de Bitmap1, calculer la position (x2,y2) après rotation d'un certain angle et écrire ce point dans Bitmap2.

    À bientôt
    Gilles

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 390
    Points : 1 777
    Points
    1 777
    Par défaut
    Salut !

    Tu peux partir du calcul d'un cercle à l'aide de 60 points. Ca fera
    dont 6° par point, ce qui est suffisant pour dessiner un cercle.
    - appliquer un angle de vision lors du calcul de chaque point.
    Celà aura pour effet d'agir sur les y. Par exemple, lorsque l'angle
    sera 0°, le cercle sera vu comme un segment de droite.
    - appliquer une rotation sur chacun des points. Celà aura pour
    effet d'agir sur les y et les x.
    - relier de point en point.

    A plus !

    PS j'ai une class JEllipse dans mes archives !

  9. #9
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Salut, peut être peut tu tout simplement utiliser le paramètrage de l'ellipse.
    En gros tu va faire varier un paramètre t par exemple en fonction du nombre de points que tu veux. Plus l'ellipse est grande plus il te faudra de points.

    Dans ce paramétrage l'ellipse est caractérisée par son demi-grand axe noté a et son demi-petit axe noté b.
    En gros 2a est la largeur du rectangle dans lequel est inscrit l'ellipse et 2b sa hauteur.

    Voila les équations qui te permettent d'obtenir l'ellipse, tu remarqueras qu'elles ne sont vraiment pas compliquées :

    x = a * cos t
    y = b * sin t

    EDIT : évidemment j'ai mal lu ce que tu as écrit. Alors il suffit de faire un changement de repère. Disons que l'angle entre l'axe x et le grand axe de ton ellipse est noté d.

    Donc dans ce cas les équations deviennent :

    x = (a * cos t ) * cos d - (b * sin t) * sin d
    y = (a * cos t ) * sin d + (b * sin t ) * cos d

    Ton t varie entre 0 et 2*Pi. A toi de découper cet intervalle en fonction du nombre de points que tu veux créer.

    Voilà normalement avec cela tu devrais pouvoir faire une ellipse sans problème. Si tu veux un exemple plus précis, demande le et dès que j'ai un peu de temps je t'en écrit un.

    Bon courage !

  10. #10
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 62
    Points : 43
    Points
    43
    Par défaut
    Merci pour les messages...
    J'ai essayé ce matin avec les courbes de beziers.
    En fait je fait 4 courbes de bezier, pour chacun des 4 quartiers de l'ellipse.

    Vu que j'ai quelque chose comme ca deja
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
             |
    ----------------
             |
    Je relie les 4 courbes de beziers avec les les 4 extrémités des axes de l'ellipse...
    Donc ca marche, alors c cool
    Merci à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer une ellipse avec matlab
    Par dardiration dans le forum MATLAB
    Réponses: 6
    Dernier message: 09/02/2011, 15h07
  2. Créer une ellipse de tendance
    Par docteuriout dans le forum MATLAB
    Réponses: 1
    Dernier message: 13/10/2008, 22h30
  3. [Réseau] Créer une connexion Internet
    Par Tranber dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 17/10/2002, 17h01
  4. Créer une fenêtre flottante qui ne peut avoir le focus
    Par BestofMac dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/07/2002, 10h46
  5. Peux t'on créer une copie locale de l'objet partagé?
    Par Anonymous dans le forum CORBA
    Réponses: 8
    Dernier message: 16/04/2002, 16h20

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