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

API standards et tierces Java Discussion :

Comment savoir si un point est à l'intérieur d'une forme 3D complexe (fichier .ply)


Sujet :

API standards et tierces Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Comment savoir si un point est à l'intérieur d'une forme 3D complexe (fichier .ply)
    Bonjour à tous

    Je travaille actuellement sur un projet Java qui commence à m'embêter sérieusement. Après plusieurs jours de recherche sur les différentes façons de faire ce que je veux vraiment, je viens à vous.

    Mes données : Un fichier .ply (contenant une forme 3D constituée de multiples triangles) et un point (coordonées 3D)

    Je souhaiterais savoir si ce point est contenu à l'intérieur de la forme 3D.

    J'aurais décomposé ce problème en plusieurs sous-problèmes :
    • Comment représenter la forme complexe 3D en mémoire? (j'ai trouvé plusieurs librairies, mais ça me semble bien complexe pour ce que je veux faire : java3D, Jbullet, JME3...) sachant que je ne veux pas l'afficher dans mon application pour le moment.

    • Comment savoir si ce point est contenu ou pas dans la forme 3D? (je pensais faire un vecteur et compter le nombre d'intersections avec la forme, mais je ne vois pas comment faire et quelle librairie utiliser... Il y a peut-être plus simple à faire)


    Je suis vraiment dans une impasse en ce moment et je voudrais vraiment savoir si des solutions existent?

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Si ton mesh est bien fermé et pas trop complexe, tu pourrais simplement tracer une ligne du centre de gravité, a un point arbitraire hors du mesh et regarder si la ligne intersect avec un des triangles. Apres pour une lib tout faite, aucunes idées....
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Justement, le mesh est fermé mais plutôt complexe (environ 14000 points) du coup je vais devoir me taper tous les polygones pour savoir si le vecteur traverse une des faces?
    C'est pour ça que je voulais utiliser une librairie à part entière...

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Je connais rien de tout fait magique.

    Par contre tu peux toujours naïvement dans un premier temps tester tout les polygones jusqu'à une intersection (ou non dans le pire des cas ce qui n'est normalement pas possible vu que la forme est fermée).

    Ensuite tu pourras accélérer cela en divisant la forme en 8 cubes (1 direction de rayon = un cube contenant n polygones) ou même mieux afin de ne pas tester tout les polygones a chaque coup.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre actif Avatar de Gaillac
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Points : 209
    Points
    209
    Par défaut
    Citation Envoyé par theodiablo Voir le message
    Justement, le mesh est fermé mais plutôt complexe (environ 14000 points) du coup je vais devoir me taper tous les polygones pour savoir si le vecteur traverse une des faces?
    C'est pour ça que je voulais utiliser une librairie à part entière...
    Pour une "forme 3D" fermée vraiment quelconque une demie-droite peut traverser plusieurs de tes faces en fait.
    Des mathématiciens célèbres se sont creusés la tête la dessus, et encore ils ne bossaient qu'en 2D...
    http://fr.wikipedia.org/wiki/Th%C3%A...A8me_de_Jordan

    Par contre, pour peu que tu ne passe pas par une arrête de tes faces, il suffis d'une demi droite et de compter les intersections.
    Du coup ça devrait être faisable :
    Tu choisi un vecteur et tu compte le nombre d'intersection. A chaque intersection tu t’assure que tu ne tape pas une arrête, sinon tu recommence avec un nouveau vecteur.

    Enfin je propose ça comme ça à la va-vite...

Discussions similaires

  1. [3D] Comment savoir si un point est dans mon champ de vision
    Par patmaba dans le forum Développement 2D, 3D et Jeux
    Réponses: 10
    Dernier message: 04/11/2018, 13h20
  2. Comment savoir si un point est a l intérieur d un cercle (Urgent SVP)
    Par the rost dans le forum SIG : Système d'information Géographique
    Réponses: 2
    Dernier message: 12/05/2013, 23h29
  3. Calcul vectoriel (savoir si un point est à l'intérieur d'un triangle)
    Par Invité dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/10/2008, 22h46
  4. Réponses: 8
    Dernier message: 17/07/2007, 11h33
  5. savoir si 1 point est a l'intérieur d'un cercle ...
    Par skarladevobsy dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 23/05/2002, 18h14

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