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

Algorithmes et structures de données Discussion :

[GEOMETRIE] creation de rectangle avec 3 pts


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 35
    Points : 19
    Points
    19
    Par défaut [GEOMETRIE] creation de rectangle avec 3 pts
    bonjour,

    je cherche a connaitre un algo optimisé pr créer un rectangle a partir de 3 points.
    les deux premiers points représentent les extremités d'un meme coté
    le 3 points représente un point situé sur le coté opposé.

    En gros, les 2 premiers points A et B fixe la longueur d'un coté et le dernier point C la largeur du rectangle.

    Ces 3 points sont utilisés pour calculer les points A' et B' qui sont les 2 derniers angles du rectangles.

    A la fin, les 3 premiers point (A,B,C dont les coord. sont connues ) nous ont permis de calculer les coord de A' et B'.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    N.B.
     
       A--------------B
       |              |
       |              |
       A'-----C-------B'
    Merci de votre aide ....

  2. #2
    Membre éclairé
    Avatar de Kangourou
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 859
    Points
    859
    Par défaut
    Salut,

    cherche la methode de calcul de la distance d'un point a une droite (site de P. Bourke par exemple), apres ce sera facile.

    - calculer eq droite (AB)
    - calculer distance entre (AB) et C => longeuer du petit cote
    - calculer angle de la droite (AB)
    - coord point A' : xa" = xa + cote*cos(angle), ya' = ya + cote*sin(angle)
    - pareil pour B'

    A+

  3. #3
    Membre régulier Avatar de hamster
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 137
    Points : 123
    Points
    123
    Par défaut
    à noter que deux point suffisent pour définir un rectange
    dans ton cas : A et B' par exemple.

  4. #4
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Citation Envoyé par Kangourou
    Salut,

    cherche la methode de calcul de la distance d'un point a une droite (site de P. Bourke par exemple), apres ce sera facile.

    - calculer eq droite (AB)
    - calculer distance entre (AB) et C => longeuer du petit cote
    - calculer angle de la droite (AB)
    - coord point A' : xa" = xa + cote*cos(angle), ya' = ya + cote*sin(angle)
    - pareil pour B'

    A+
    Le rouge n'a pas de sens!!!

    Il y a plus simple (j'exclue le cas ou AB est parallèle à l'axe des X ou des Y, très facile à traiter):

    1) (AB) admet pour vecteur directeur V=(xv;yv)=(xb-xa;yb-ya)
    2) Un vecteur perpendiculaire à (AB) est W=(-yv;xv)
    3) Tu calcules alors les eq. des droites

    Eq1: - passant par A et de vecteur directeur W
    Eq2: - passant par B et de vecteur directeur W
    Eq3: - passant par C et de vecteur directeur V

    Alors les 2 points qui te manquent sont donnés par les systèmes (Eq1 Eq3) et (Eq2 Eq3)


    Y a milles autres méthodes, dont certaines surement encore plus rapide...
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  5. #5
    Membre habitué Avatar de PINGOUIN_GEANT
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 149
    Points : 155
    Points
    155
    Par défaut
    Personnellement, je calculerais le vecteur C'C où C' est le projecteur orthogonal de C sur (AB).
    D'après mes calculs (je ne garantis rien sur leur exactitude), on trouve :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ax+by+c=0 // équation de (AB)
    V=(a b) vecteur orthogonal à (AB)
    C'C=lambda*V
    avec lambda=(a*xC+b*yC+c)/(a^2+b^2)
    avec xC et yC coordonnées de C
    tu n'as plus qu'à effectuer :
    A'=A+C'C
    B'=B+B'B
    " Tout homme est digne d'un parapluie." Stavroguine dans Les Démons de Dostoïevski.

  6. #6
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 150
    Points : 180
    Points
    180
    Par défaut
    Pff..

    Ax, Ay => A
    Bx, By => B
    Cx, Cy => C

    A'x = Ax
    A'y = Cy

    B'x = Bx
    B'y = Cy

    ????

  7. #7
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par mtopoloff
    Pff..

    Ax, Ay => A
    Bx, By => B
    Cx, Cy => C

    A'x = Ax
    A'y = Cy

    B'x = Bx
    B'y = Cy

    ????
    Ca marche quand tu dessines ton rectangle comme au-dessus (avec AB parallèle à Ox)... dès que tu prends AB quelconque, et surtout non parallèle à Ox, ça ne marche plus!
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  8. #8
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 150
    Points : 180
    Points
    180
    Par défaut
    autant pour moi.

    Dans ce cas l'utilisation de la trigo, serait plus approptiée que les multiplications (²) car on peut stocker des tables de cos/sin...

  9. #9
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    J'invite à relire mon post ci-dessus: pas besoin de trigo

    3 systèmes d'eq 2*2, c'est trop easy...
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  10. #10
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Je souligne les vecteurs :

    AA' = AC + aAB

    or AA'.AB = 0
    AB.AC+aAB^2 = 0

    soit a = - (AB.AC)/AB^2 (avec AB2 = 0, il n'y a pas de rectangle)

    AA' = AC - (AB.AC)/AB^2
    et comme A'B' = AB ...
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

Discussions similaires

  1. Newbie PgSQL->Probleme Creation de table avec FOREIGN KEY
    Par ralkif dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 07/03/2006, 21h59
  2. Réponses: 9
    Dernier message: 13/04/2005, 22h08
  3. [Graphics] rectangle avec épaisseur
    Par Galima dans le forum 2D
    Réponses: 2
    Dernier message: 10/06/2004, 20h06
  4. [C#] Probleme de creation de fichier avec Stream
    Par freddyboy dans le forum C#
    Réponses: 7
    Dernier message: 07/06/2004, 11h41
  5. Dessiner un rectangle avec bords et texte ...
    Par Djedjeridoo dans le forum Composants VCL
    Réponses: 3
    Dernier message: 16/06/2003, 17h17

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