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 :

Rastérisation de disque, la case appartient-elle au disque ?


Sujet :

Algorithmes et structures de données

  1. #1
    Invité
    Invité(e)
    Par défaut Rastérisation de disque, la case appartient-elle au disque ?
    Bonjour,

    Les maths n'étant pas mon point fort, je viens ici pour vous demander un peu d'aide pour décider si une case du cadrillage appartient au disque ou non. Un petit schéma :


    L'espace est découpé en cases (carrées). Le centre d'une case correspond à un point du plan (un point avec des coordonnées entières). La case dont on se s'occupe est la case 1. Le centre de la case 1 correspond au point de coordonnées (x = 0 ; y = 0).

    Pour déterminer si la case 2 appartient au disque de rayon 4 du schéma, je n'arrive pas à me décider entre deux solutions :
    - regarder si le centre de la case 2 apartient au disque
    - regarder si le disque "occupe" plus de la moitié de la case

    Déjà, à votre avis, c'est quoi le plus logique entre les deux ?

    Ensuite, pour la première solution, c'est pas trop difficile, il faut calculer la distance entre le centre de la case 1 et celui de la case 2, puis regarder si cette distance est plus petite que le rayon du cercle. Par contre, je vois pas bien comment calculer la surface commune à la case 2 et au disque. Quelqu'un à une idée ?

  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 : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par hellfoust Voir le message
    Pour déterminer si la case 2 appartient au disque de rayon 4 du schéma, je n'arrive pas à me décider entre deux solutions :
    - regarder si le centre de la case 2 apartient au disque
    - regarder si le disque "occupe" plus de la moitié de la case

    Déjà, à votre avis, c'est quoi le plus logique entre les deux ?
    "Logique", je ne sais pas. Mais on utilise très fréquemment la méthode 1 (midpoint).

    Par contre, je vois pas bien comment calculer la surface commune à la case 2 et au disque. Quelqu'un à une idée ?
    Tu peux déjà faire des approximation :
    - en calculant les 4 distances aux 4 coins du carré et en faire la moyenne.
    - en approximant l'arc de cercle dans le carré par une droite
    - ...
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    la case appartient-elle au disque ?
    Tout dépend de la définition que tu donnes du verbe appartenir et cette définition est arbitraire; elle dépend de ce que tu veux faire avec le résultat.
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Déjà, merci de votre intérêt !

    @Jean-Marc Blanc : dans la case du centre se trouve un personnage, le rayon du cercle correspond à la distance jusqu'à laquelle il voit. Donc une case appartient au disque si le personnage peut voir les objets ou les autres personnages qui se trouvent dessus.

    Pour ce qui est des approximations, j'ai l'impression que faire la moyenne des quatres coins de la case vas me donner le même résultat qu'avec la technique du centre de la case. Pour la deuxième approximation, elle à l'air plutôt satisfaisante, mais je suis un peu maniac et je voudrais avoir un résultat exact.

    J'ai trouvé une solution un peu lourde mais qui marche :


    - calculer les deux intersections entre la case et le cercle (intersec1 et intersec2)
    - calculer l'angle <intersec1 - centre - intersec2>
    - calculer l'aire (aire 1 + aire 2 + aire 3) en faisant : (aire_disque / 360) x angle <intersec1 - centre - intersec2>
    - trouver l'aire 3 par soustraction des aires 1 et 2 qui sont faciles à calculer (car ce sont des triangles)

    Dans le cas où il y aurait deux sommets de la case à l'intérieur du cercle :
    (j'en ai mis trois à l'intérieur pour qu'on voit mieux, mais il faut considérer qu'il n'y en a que deux)


    Pour obtenir l'aire a6, on fait pareil, on calcule (a4 + a5 + a6) en faisant (aire_disque / 360) x angle, puis on obtient a6 en déduisant a4 et a5 qui sont des triangles.

    Cette solution marche, mais il y a surement un moyen plus efficace.
    On considère uniquement le quart de disque nord-est :


    Lorsqu'on déplace le segment S vers la droite, l'aire qui est initialement égale à la surface du disque divisée par quatre diminue. Il faudrait arriver à exprimer l'aire restante en fonction du déplacement vers la droite du segment S.

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Si ton cercle est beaucoup plus grand que ton carré, il y a 3 cas d'intersection possibles :
    • 1 point à l'extérieur du cercle
    • 2 points à l'extérieur du cercle
    • 3 points à l'extérieur du cercle


    La surface commune peut se décomposer en un polygone (à 3, 4, ou 5 sommets) + un segment circulaire.

    L'aire du polygone se calcule aisément (par géométrie ou intégration).
    L'aire du [ame]http://fr.wikipedia.org/wiki/Segment_circulaire[/ame] est une formule connue.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Merci
    En fait le segment circulaire c'est tout ce qu'il me manquait. Topic résolu.

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

Discussions similaires

  1. Les disques SSD vont-ils balayer les disques durs classiques ?
    Par Gordon Fowler dans le forum Hardware
    Réponses: 21
    Dernier message: 11/08/2012, 14h47
  2. Réponses: 6
    Dernier message: 31/10/2006, 10h55
  3. Fonction non définie (alors qu'elle l'est) - Cocher toutes les cases
    Par navis84 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 22/09/2006, 12h02
  4. disque SATA reconnu en lecteur de disque
    Par netah25 dans le forum Windows XP
    Réponses: 2
    Dernier message: 31/10/2005, 15h37
  5. 2 disques physiques vu comme un seul disque
    Par sohnic dans le forum Administration système
    Réponses: 4
    Dernier message: 28/01/2005, 11h27

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