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 :

clipping, comment obtenir un rendu fidèle?


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 120
    Par défaut clipping, comment obtenir un rendu fidèle?
    Bonsoir, voila maintenant quelques jours que je cherche un moyen d'obtenir un rendu fidèle pour le clipping de lignes.

    Je m'explique mieux : lorsque je clippe une ligne par un rectangle (avec Cohen-sutherland en l'occurence), j'obtiens (généralisons) 2 nouveaux points.

    Avec ces deux points, j'appelle mon algo incrémental de Bresenham mais je n'obtiens pas un rendu exact de ligne découpée!

    Je pense que le problème est bien connu des gens qui connaissent les méthodes de clipping, et pourtant je n'ai rien trouvé sur le net! (si, j'ai trouvé un article écrit par un russe sur plusieurs sites américains mais l'accès est payant : premier résultat sur google pour "Bresenham’s Line Generation Algorithm with Built-in Clipping").

    Y a-t-il un moyen réalisable d'arranger ça? Comment dois-je initialiser mon algo de bresenham? Est-ce que cela a une influence seulement sur le début du tracé? L'ensemble du tracé?

    D'avance merci, je dois résoudre ce problème :-)

  2. #2
    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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    A cause du clipping (et de la discrétisation) la pente de la nouvelle droite n'est pas forcément la meme que l'ancienne. Pour compenser cela, il suffit de calculer la pente avec les coordonnées originales (avant clipping).

    Suivant ton algo de bresenham il peut y avoir également des problèmes liés à la valeur initiale de l'erreur ("decision value"). Il vaut mieux utiliser la technique du midpoint.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 120
    Par défaut Merci, mais une petite précision
    Bonjour, entendu, je vais une première fois essayer
    de changer la pente pour celle d'origine.

    Par contre, je n'ai pas compris le second point.

    J'utilise l'algorithme incrémental de Bresenham qui n'utilise que des entiers.

    S'agit-il du midpoint dont tu parles? Ou est-ce que le midpoint agit toujours sur des reels?

    Sinon est-ce impossible d'obtenir le rendu fidele avec l'algo incrémental sur les entiers?

  4. #4
    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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par franklin626 Voir le message
    Par contre, je n'ai pas compris le second point.
    Lors du clipping, les nouvelles coordonnées "idéales" des point de départ/arrivée ne sont pas forcément entières.

    Si la ligne (x0,y0)-(x1,y1) est clippée par le bord gauche du rectangle (xmin,ymin,xmax,ymax) => le point de départ de la droite "clippée" est de la forme (xmin, yclip).

    La valeur de yclip "ideale" est un rationnel et pas un entier => la valeur initiale de l'erreur n'est pas zéro, comme dans le cas classique de l'algo de bresenham.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 120
    Par défaut
    D'accord, merci, là je vois le problème.
    Maintenant, comment résoudre :-)

    Dans mon cas d'algorithme sur les entiers, je ne vois pas bien comment initialiser mon erreur à autre chose que 0.

    Je n'arrive pas à distinguer les cas lors de mon appel à mon algo de Bresenham.

    Pouvez-vous me donner encore des pistes?

    Merci!

  6. #6
    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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par franklin626 Voir le message
    D'accord, merci, là je vois le problème.
    Maintenant, comment résoudre :-)

    Dans mon cas d'algorithme sur les entiers, je ne vois pas bien comment initialiser mon erreur à autre chose que 0.

    Je n'arrive pas à distinguer les cas lors de mon appel à mon algo de Bresenham.

    Pouvez-vous me donner encore des pistes?

    Merci!
    Je ne me suis jamais amusé a faire les calculs, mais en repartant de la formulation de base de l'algo de Bresenham ca doit etre possible.

    Au fait, pourquoi tu fais tout cela ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 09/07/2011, 23h06
  2. [Question débutant] Comment obtenir le rendu visuel de plant vs zombie ou castle crashers
    Par Brotherarmy dans le forum Développement 2D, 3D et Jeux
    Réponses: 4
    Dernier message: 08/05/2010, 09h09
  3. comment obtenir un polynome de regression
    Par evariste_galois dans le forum Mathématiques
    Réponses: 17
    Dernier message: 19/01/2007, 15h06
  4. Comment obtenir l'heure du serveur avec flash ?
    Par Michaël dans le forum Flash
    Réponses: 9
    Dernier message: 23/12/2003, 17h50
  5. Comment obtenir la liste des paramètres d'une SP ?
    Par Le Gritche dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/03/2003, 16h54

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