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 :

comment détecter les faces d'un mur


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2003
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 22
    Points : 18
    Points
    18
    Par défaut comment détecter les faces d'un mur
    Dans mon soft, l'utiliasteur dessine des murs en indiquant 2 pts et l'épaisseur.Avec cette épaisseur, je ressort les coordonnées des points et le prog trace le mur (donc un long rectangle).Ce mur peut etre horizonatl, vertical ou incliné.Mon pb est que je cherche à détecter la position des faces cad savoir ,quel est la face (ou si vous voulez le trait) placée à gauche, à droite, en face, en arrière.Ex:Lorsque le mur est horizontal,les face avant et arrière sont formées par la longeur et les faces gauches et droites son formées par l'épaisseur du mur.Ces positions sont inversées lorsque le mur est vertical.Le pb se pose quant le mur est incliné (sur la vue en plan).Je pense à faire pivoter le mur soit sur l'orizontal ou la vertical et je ne sais plus.J'ai quelques idées mais non seulement je me perd mais en plus je ne sais pas si ça pourrais résoudre mon pb.Alors aider moi.je signle que je développe en delphi.
    Merci

  2. #2
    Membre habitué
    Profil pro
    Enculeur de mouches
    Inscrit en
    Septembre 2003
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Enculeur de mouches

    Informations forums :
    Inscription : Septembre 2003
    Messages : 133
    Points : 161
    Points
    161
    Par défaut
    Tu aurais pu être plus explicite sur ta méthode..

    A priori tu dispose d'un vecteur de deux points, et tu cherche un autre vecteur, perpendiculaire, qui a une longueur égale à l'épaisseur (ou plutôt la moitié...).

    Si V=(Vx, Vy) est le vecteur définissant le mur donné par l'utlisateur, et que X=(Xx, Xy) le vecteur que tu cherche, on a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <V,X> = Vx*Xx + Vy*Xy = 0 
    Xx*Xx + Xy * Xy = (e*e) / 4
    C.à.d :
    - Le produit des deux vecteurs est égal à zéro,
    - La norme de X est égale à l'épaisseur divisée par 2

    équations, deux inconnues, ça se résout...

    Ensuite tu applique X et -X au deux points donné par l'utilsateur pour obtenir les 4 points de la bounding box du mur...

    [edit]
    J'avais pas vu mais en plus c'est un re-post.
    Tu peux changer le titre et le message à n'importe quel moment en utilisant le boutton "editer"
    Je mets des balises "edit" autours de mes propres modifs, mais celà n'a rien d'obligatoire...
    [/edit]
    Gaïa n'est pas une marchandise.

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2003
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Merci bcp, mais je pense qu'on ne s'est pas compris!
    En fait j'arrive à tracer parfaitement le bounding box pour répresenter mon mur;Le vrai problème est que lorsque je trace le mur, je souhaiterais détecter quel trait est à gauche, ou à droite ou en haut à gauche ou en bas à droite (ds la cas d'un mur incliné).Cela me permettra de connaitre la position des différentes faces du mur afin d'en sortir les aires et affichger un message à l'utilisateur:
    Face avant:12m²
    face gauche:13m² et ainsi de suite.
    J'espère etre clair cette fois ci
    Ex:mur horizontal:
    ---------------------------------------------------
    |-------------------------------------------------|

    Les cotés gauche et droit du mur sont donnés par l'épaisseur et les coté face et arrière sont donnés par la longueur.Ce qui est inverse quand le mur est vertical. ça je peux le programmer car c'est un cas particulier du vrai pb.Cependant quand le mur est incliné comment reconnaitre la face qui est à gaucheou à droite ou en face etc...

    Merci pour tout

  4. #4
    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 638
    Points
    7 638
    Par défaut
    Salut,

    Vu que ton utilisateur définit le mur grâce à deux points, ton problème est résolu. Par rapport à la droite joignant tes deux points, les faces avant et arrière sont à droite et à gauche de la droite (ou inversement... ça dépend où tu places l'intérieur), et les faces droite et gauche sont au niveau du premier et de second point (ou inversement).
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2003
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Merci bcp plegeat car tu viens de me donner un coup de pouce.sincèrement j'avais pas vu ça.Donc les 2 points definit constitue efffectivement les petits cotés(épaisseur du mur) donc gauche ou droite et les 2 autres sont les facesavant et arière.Un chose est sur est que les faces auront 2 à 2 les même aires.Cependant parmi ces faces 2 à 2 semblables, je dois savoir effectivement qui est à gauche et qui est à droite et qui est en face et qui est en arrière car l'utilisateur doit definir des paramètres différents pour chaque face.alors il faudrait que l'utilisateur et le prog soit d'acord sur la position des faces.
    Quant le mur est horizontal ou vertical, c'est simple mais cela devient ambigu(pour moi)quand le mur est incliné(forme un angle aigu ou obtus avec l'horizontal).C'estvraiment là mon problème.
    Merci encore et j'attends des suggestions

  6. #6
    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 638
    Points
    7 638
    Par défaut
    C'est aussi compliqué pour un mur horizontal (ou vertical) que pour un mur incliné. Il ne faut pas (enfin... je te force pas ) à raisonner en "gauche", "droite", ... par rapport à ce que toi tu vois à l'écran. Il vaut mieux que tu places tout par rapport aux deux points définissant le mur (à coup de produit scalaire comme l'a suggéré SKZ81).
    Pour savoir qui est qui dans tes faces, tu peux faire une méthode que l'on trouve dans quelques logiciels d'archi "bon marché" (pour les robustes, pas les moyens de me les offrir, donc je ne connais pas les méthodes utilisées). L'utilisateur choisit dans les options quel type de mur il veut tracer: un avec l'intérieur à droite quand il va du point départ au point fin, ou l'inverse. Avec éventuellement une option pour inverser l'intérieur et l'extérieur ensuite si c'était pas ça.
    En gros, à partir du moment où tu construis ton mur en partant d'un point, et en allant vers un autre, c'est comme en voiture: tu sais où est la droite, la gauche, l'avant et l'arrière. Ensuite à toi de choisir si tu veux une voiture française (volant à gauche), ou une anglaise (volant à droite).
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  7. #7
    nkd
    nkd est déconnecté
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 38
    Points : 29
    Points
    29
    Par défaut
    salut einegel
    je crois que tu as déjà posé ce problème, sauf que tu as remplacé le terme rectangle par mur.

    vois la solution que je te propose ici
    http://www.developpez.net/forums/viewtopic.php?t=284982

    un detail que j'ai omis, il faudrait te fixer par convention un sens de rotation positif , cela t'aidera à vite retrouver la face à gauche/droite/avant/arrière en fonction des différents cas.

    merci

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

Discussions similaires

  1. [Excel]Comment détecter les paramètres régionaux
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/09/2006, 11h01
  2. Réponses: 11
    Dernier message: 03/09/2006, 21h25
  3. Réponses: 13
    Dernier message: 18/07/2006, 15h07
  4. Comment détecter les dimensions d'un cadre?!!
    Par insane_80 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/03/2006, 18h18
  5. Comment détecter les dimensions d'un cadre?!!
    Par insane_80 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 13/03/2006, 16h57

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