Boutique Cinema 4D
Affichage des résultats 1 à 8 sur 8

Discussion: Point d'intersection entre un vecteur et un polygone

  1. #1
    Gourou Avatar de César Vonc
    Date d'inscription
    avril 2006
    C4D version
    Autre
    OS
    Windows 10
    Messages
    2 483

    Point d'intersection entre un vecteur et un polygone

    Bonjour,


    Je cherche à calculer l'éventuel point d'intersection entre un vecteur et un polygone.

    J'ai effectué des recherches sur la toile mais je ne comprends vraiment pas les formules proposées (comme ici où dès la seconde ligne ne je pige pas ce qu'est la valeur « d »), notamment au sujet de l'équation du plan, j'ai juste les coordonnées des points du polygone, et non un truc du genre ax+by+cz+d=0 comme j'ai vu sur beaucoup de sites.

    Je sèche vraiment sur le coup... quelqu'un sait-il comment s'y prendre ? Peut-être y a-t-il une méthode miracle en COFFEE.

  2. #2
    Gourou Avatar de valkaari
    Date d'inscription
    mai 2009
    C4D version
    Autre
    OS
    OSX / windows
    Messages
    2 949
    Si c'est pour c4d pas besoin de se prendre la tête plus que ça, il suffit d'utiliser c4d.utils.GeRayCollider

    un init, intersect et un getIntersection. Pour la longueur du rayon tu peux éventuellement prendre la distance entre le centre de l'objet et le point de départ du rayon et ajouter la taille de l'objet.


    edit :
    Sinon pour cette histoire de d ondirait que c'est la distance entre la projection du point perpendiculairement au plan et le point réellement projeté. Je crois hein, j'suis pas certain j'y comprends rien à ces trucs. y a bien un vrai matheux qui vas passer dans le coin ^^



    edit2 :
    Sauf que tu veux le faire en coffee et qu'en coffee ces fonctions n'existent pas ^^


    Par contre on dirait qu'il y a une solution sur le forum c4dcafé (c'est juste un peu plus long -_-')
    http://www.plugincafe.com/forum/foru...s.asp?TID=5811
    Dernière modification par valkaari ; 09/12/2011 à 20h24.

  3. #3
    Gourou Avatar de César Vonc
    Date d'inscription
    avril 2006
    C4D version
    Autre
    OS
    Windows 10
    Messages
    2 483
    Par contre on dirait qu'il y a une solution sur le forum c4dcafé (c'est juste un peu plus long -_-')
    http://www.plugincafe.com/forum/foru...s.asp?TID=5811
    Ah oui en effet, c'est plus long d'une centaine de lignes, en plus d'être en C++.


    J'étais parti pour faire ça en COFFEE, j'ai en plus déjà fait un script pour calculer les normales des sommets et polygones.


    La solution c4d.utils.GeRayCollider est en Python, c'est ça ?

    Si en plus le Python peut récupérer les normales des sommets en une fonction, je crois que je vais devoir dire adieu au Coffee...

  4. #4
    Gourou Avatar de valkaari
    Date d'inscription
    mai 2009
    C4D version
    Autre
    OS
    OSX / windows
    Messages
    2 949
    C'est pas important qu'il soit en c++ ça reste lisible ^^

    Pour la version 11.5 le module python (qui n'est plus dispo officiellement) n'était pas complet.
    C'était mieux avec la R12.

    Avec la R13, il y a presque toutes les fonctions du sdk c++ et avec toutes les fonctions qui viennent déjà avec python.
    Donc oui abandonner le coffee est une bonne idée.

  5. #5
    Pilier Avatar de paspas
    Date d'inscription
    février 2004
    Messages
    990
    hello

    j' avais en coffee fait le code qui calcul une intersection d'un plan ( un polygone ) et une droite .

    faut que je retrouve ca .

    il traine déjà sur ce forum mais faut le retrouver
    je regarde et je repasse si je trouve

    paspas

  6. #6
    Gourou Avatar de César Vonc
    Date d'inscription
    avril 2006
    C4D version
    Autre
    OS
    Windows 10
    Messages
    2 483
    C'est pas important qu'il soit en c++ ça reste lisible ^^
    Oui, pour ce cas ci, je craignais qu'il n'utilise des fonctions que le Coffee ne gère pas.

    J'ai essayé son code, il a l'air de marcher une fois sur deux, ceci dit je l'ai peut être mal interprété, certaines lignes ne me parlent pas beaucoup, comme :
    Code:
    if (res < 1)    continue;
    Que signifie continue, exactement ?

    Ou bien :
    Code:
    if (fabs(b) < SMALL_NUM)
    Je ne connais pas le C++, mais si SMALL_NUM est le plus petit réel qui soit, ce qui y est inférieur est forcément zéro ou un nombre négatif, non ?


    j' avais en coffee fait le code qui calcul une intersection d'un plan ( un polygone ) et une droite .
    Ah, cela ne serait pas de refus, paspas !

  7. #7
    Gourou Avatar de valkaari
    Date d'inscription
    mai 2009
    C4D version
    Autre
    OS
    OSX / windows
    Messages
    2 949
    le continue est utilisé dans une boucle. Contrairement au break, qui casse et sort de la boucle, le continue lui arrête la boucle et passe à l'itération suivante. Cela évite de mettre tout un gros bloc de code dans un if quoi. Dans l'exemple, si res est inférieur à 1, on passe à la boucle suivante sans exécuter le reste du code.


    Pour le SMALL_NUM c'est une constante définie à

    Code:
    #define SMALL_NUM    0.00000001f
    C'est une façon de définir des constantes sans qu'elles appartiennent à des classes ou à des fonctions.

  8. #8
    Gourou Avatar de César Vonc
    Date d'inscription
    avril 2006
    C4D version
    Autre
    OS
    Windows 10
    Messages
    2 483
    Ah d'accord, merci pour ces précisions, Valkaari.


    On dirait bien que cette solution fonctionne !

    Il faut cependant noter qu'elle s'applique à un triangle, car elle n'utilise que les points a b et c d'un polygone, donc dans le cas d'un quadrangle (lorsque p->c != p->d) il est bon de vérifier à nouveau la collision du rayon mais avec les points a c et d du polygone.
    Dernière modification par César Vonc ; 26/12/2011 à 12h39.

Discussions similaires

  1. [Résolu] remplir un trou entre les différent point
    Par farnots dans le forum Nouveaux membres
    Réponses: 5
    Dernier message: 10/09/2011, 21h37
  2. Accrocher un point de spline à un point d'ancrage d'un polygone
    Par gentilrom1 dans le forum Nouveaux membres
    Réponses: 6
    Dernier message: 21/11/2007, 12h07
  3. récuperer la normale d'un point ou d'un polygone
    Par paspas dans le forum Programmation
    Réponses: 5
    Dernier message: 25/01/2007, 01h52
  4. céer un polygone a partir d'un contour en point ?
    Par Exta dans le forum Nouveaux membres
    Réponses: 3
    Dernier message: 14/07/2006, 15h04
  5. progression de vecteur
    Par clement dans le forum Modélisation
    Réponses: 40
    Dernier message: 29/08/2003, 11h35

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  
Mediaworks - Logiciels 3D | Design Internet - Creation site internet