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

3D Java Discussion :

Savoir si on est dans un volume


Sujet :

3D Java

  1. #1
    Membre du Club
    Savoir si on est dans un volume
    Bonjour,
    j'aimerais savoir si il y avait une class qui existe ou en fournissant une liste de Vector3d elle puisse nous dire si on est dans un volume ou a l'extérieur ? la class Polygon a l'air de faire ce que je veux mais pas de param z, elle a juste x et y. Par contre elle a des param w et h:

    contains(double x, double y, double w, double h)

    Donc j'ai du mal a savoir si cela peut m'aider ou non

    C'est pour minecraft, je voulais donner la liste de chaque angle de la zone, le bas et le haut et savoir si un joueur est dedans ou dehors. Cela permettrait de faire des zone autre que carré ou rectangulaire.
    Merci

  2. #2
    Modérateur

    Salut,
    Citation Envoyé par Lprofessionnelle Voir le message
    Bonjour,
    j'aimerais savoir si il y avait une class qui existe ou en fournissant une liste de Vector3d elle puisse nous dire si on est dans un volume ou a l'extérieur ? la class Polygon a l'air de faire ce que je veux mais pas de param z, elle a juste x et y.
    La classe Polygon représente un polygône, une figure forcément 2D. En 3D, ça s'appelle un polyèdre donc la classe de représentation pourrait s'appeler Polyhedron. Mais java2D, une api pour dessiner en 2D, ce n'est pas java3D.

    Citation Envoyé par Lprofessionnelle Voir le message

    Par contre elle a des param w et h:

    contains(double x, double y, double w, double h)

    Donc j'ai du mal a savoir si cela peut m'aider ou non
    Il suffit de regarder la javadoc de la classe pour voir que ça teste si un rectangle est contenu dans le polygône.



    Citation Envoyé par Lprofessionnelle Voir le message

    C'est pour minecraft, je voulais donner la liste de chaque angle de la zone, le bas et le haut et savoir si un joueur est dedans ou dehors. Cela permettrait de faire des zone autre que carré ou rectangulaire.
    Merci
    Peut-être qu'une API 3D aurait une classe qui permet de faire ça (ou une API comme OpenCV, bien que ça fait un peu lourd juste pour ça) . Tu peux implémenter aussi ta propre méthode utilitaire ou chercher une implémentation dédiée sur le web. On en trouve facilement pour des polyèdres convexes en tout cas. Il y a même des discussions sur ce forum qui y font allusion (comme par exemple).

    PS S'il s'agit de déterminer la position d'un personnage dans un décor, on utilise d'autres types d'algorithmes beaucoup plus performants, comme les quadtrees. Tu trouveras sur ce forum de nombreux tutoriels, discussions, blogs à ce sujet. A cemmencez par lui et celui-ci, pour la 2D, mais l'idée y est.
    Regarde également les tutoriels plus dédiées aux collisions également, comme celui-ci.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre du Club
    Merci pour ta réponse, a causes des paramètres supplémentaire(double w, double h) j'étais pas sur, mais il me semblait bien que ça n'irait pas et pour le moment je n'ai rien trouvé de concluent.

    Moi ce que j'aimerais c'est juste fournir une liste de vecteur ce qui formerait une zone comme ça par exemple:


    Je fournis le haut et bas en y et donc chaque point de la zone j'utilise juste x et z.

    Donc je vais regarder tout ça et continuer a chercher

  4. #4
    Modérateur

    Citation Envoyé par Lprofessionnelle Voir le message

    Moi ce que j'aimerais c'est juste fournir une liste de vecteur ce qui formerait une zone comme ça par exemple:


    Je fournis le haut et bas en y et donc chaque point de la zone j'utilise juste x et z.
    Hum, tu veux dire qu'en fait tu cherches à savoir si un point (x,y,z) est dans une zone polygonale 2D horizontale de hauteur h ?

    Dans ce cas, ça ramène le problème à tester si le polygone contient la projection du point, soit que le polygone contient le point (x,z), et si le y est compris entre 0 et h. Ce qui n'empêche pas de faire du quadtree pour optimiser, ou au moins de faire une première passe en testant si les bounds du polygone contiennent le point.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.