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 :

Redimensionnement de polygone, polygone incrusté


Sujet :

Algorithmes et structures de données

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    ingénieur en automatique
    Inscrit en
    Avril 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur en automatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 59
    Par défaut Redimensionnement de polygone, polygone incrusté
    Bonjour,

    Je planche sur un problème de géométrie dans le cas d'une problématique industrielle (réelle).
    Nous avons un tracé (contour fermé) à réaliser, ce tracé est modélisé par un ensemble de points, qui au final forment un polygone.

    Dans le cadre d'une adaptation de ce tracé, je dois décaller l'ensemble à l'intérieur du polygone père, d'une distance x par rapport à chaque côté, prenons ici 1cm pour l'exemple.

    J'ai déjà pas mal avancé sur la conception de l'algorithme, et je voudrais savoir si ma logique est bonne, ou si vous avez des solutions plus simples car cela me parait quand même être une usine à gaz...

    J'obtiens mes points dans un tableau on ne peut plus normal avec des coordonnées par rapport à l'origine. Je parcours le tracé dans l'ordre où il m'arrive.

    Tout d'abord, la fonction de décalage:
    Pour chaque segment, connaissant le point de début et de fin, je peux le modéliser par une fonction affine (avec un traitement spécifique dans le cas où on est avec une droite parallèle à l'un des axes) en définissant correctement les bornes d'utilisation tout est correct. Ayant alors une équation cartésienne, je cherche à décaler ma droite d'une distance de 1cm ici.

    Pour cela, je calcule le plus simple vecteur normal à ma droite, puis je le redimensionne pour qu'il ai une norme de 1. Ayant ses coordonnées, je peux calculer l'équation de ma nouvelle droite décalée: Droite d'origine -> Vecteur normal -> Vecteur normal de norme 1 -> Droite décalée.

    Je souhaite faire cela avec l'ensemble de mes segments du polygone. A la fin je n'aurai qu'a résoudre les équations des nouvelles droites, ce qui me donne l'endroit où elles se coupent, pour avoir la position de mes nouveaux points donc du polygone incrusté. (PJ, rouge polygone incrusté, bleu portions des droites décalées)

    On pourrait s'arrêter là, mais cela serait trop simple. En effet, pour chaque segment, on peut placer le nouveau segment décalé soit à sa droite, soit à sa gauche. Pour déterminer pour le segment courant dans quelle direction doit on se décaler, je souhaite utiliser le produit scalaire. Je détermine le vecteur associé à mes 2 points constituant le segment courant, et je fais de même avec le segment le précédent, ainsi en appliquant le produit scalaire, je peux déterminer l'angle formé entre ces 2 segments (Par exemple pour AB je regarde AB et AH). La le tour est simple, s'il est inférieur à 180° degrés je place mon décalage à droite, sinon à gauche.

    Mon problème est que j'ai depuis toujours un problème avec les angles, je sais que mon logiciel travaille en radians, et que dans ce cas on compte positivement dans le sens anti-horaire (trigo). Je pense donc qu'il faut que je fasse attention aux signes dans mon interprétation des résultats.

    Deuxièmement, j'ai peur que ma méthode avec le produit scalaire ne donne pas les résultats que j'espère.
    Si on regarde en pièce jointe le cas pour le segment DE, où on calcule l'angle D (et de manière générale, ce sera la même chose partout où on tourne à gauche), ma règle ne fonctionne plus.

    AveZ vous une idée sur comment déterminer la direction gauche/droite de décalage à partir des éléments donnés?

    Si vous avez d'autres idées je suis aussi preneur, un redimensionnement via une homotéthie me parait trop complexe, et je n'ai pas d'autres idées.

    Merci
    Images attachées Images attachées  

Discussions similaires

  1. Créer un objet polygone redimensionnable
    Par Gimly dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 26/12/2014, 02h48
  2. Comment detecter un polygon sous le curseur
    Par FreshVic dans le forum OpenGL
    Réponses: 2
    Dernier message: 04/07/2003, 10h48
  3. Triangulation de Polygones
    Par seb_lisha dans le forum DirectX
    Réponses: 1
    Dernier message: 01/07/2003, 12h40
  4. [Algo] Point à l'intérieur d'un polygone ?
    Par kebby dans le forum C++Builder
    Réponses: 5
    Dernier message: 23/05/2003, 13h22
  5. une ligne et un polygone convexe
    Par rekam dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 20/12/2002, 10h39

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