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

2D Java Discussion :

[Géométrie]Collision


Sujet :

2D Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 10
    Points : 8
    Points
    8
    Par défaut [Géométrie]Collision
    edition: (Résolu) cet état peut changer en fonction du temps, merci de votre compréhension

    Je suis en train de modéliser un petit monde pour un programme de bateau si l'on peut dire.


    Ma classe Monde a comme attributs:

    * Un rectangle, qui représente le monde entier.
    * Une ArrayList de bateau
    * Une zone naviguable, représentée par un ensemble de Polygone, contenus dans une ArrayList


    Une classe bateau a comme attributs:

    * un rectangle, représentant le bateau SANS se soucier de son orientation
    * un angle dit "d'orientation" représentant la direction du bateau. 0= vers la droite, le sens est horloger.

    Une méthode public Shape getActuallRectangle() renvoit le rectangle auquel a été appliqué la rotation adéquate.

    Les bateaux se déplacent bien sûr, en fonction de divers choses.


    Mon souci est le suivant:

    Je veux tester qu'un bateau ne peut sortir de la zone naviguable.
    Quelle méthode me permettrait de tester qu'un Shape est bien contenu dans un des polygones de "naviguable" ?

    L'arrayList des polygones "naviguable" ne peut-elle pas être remplacée par un objet? qui représenterait une sorte de polygone non-convexe.
    (non-convexe car il peut exister des iles).


    En espérant que vous pourrez (et voudrez bien) m'aider.
    Zeil

    PS: Les épinards, c'était pour faire un titre stylé.

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 854
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 854
    Points : 22 876
    Points
    22 876
    Billets dans le blog
    51
    Par défaut
    Je veux tester qu'un bateau ne peut sortir de la zone naviguable.
    Quelle méthode me permettrait de tester qu'un Shape est bien contenu dans un des polygones de "naviguable" ?
    Tu peux faire ca assez facilement avec les méthodes contains() et intersects() de l'interface Shape. De plus n'oublie pas que ta forme même "rotationnée" avec un angle dispose quand même d'un boite englobante rectangulaire (getBounds() et getBounds2D()) ce qui permet de te simplifier grandement une partie des calculs.

    - si boite englobante (de la forme transformée) n'intersecte pas les bordures de l'ocean alors peut naviguer
    - sinon faire plus de test sur la vrai forme transformée.

    Pour plus de détail sur des algorithmes de collision je t'invite à regarder (et poser des questions sur) les forum 2D de JavaGaming.org.

    L'arrayList des polygones "naviguable" ne peut-elle pas être remplacée par un objet? qui représenterait une sorte de polygone non-convexe.
    (non-convexe car il peut exister des iles).
    Ensuite la classe Area permet EDIT - d'ajouter et de soustraire une forme à une autre. Egalement GeneralPath dispose de regles pour déterminer ce qui est ou pas à l'intérieur d'une forme. Je pense cependant que pour le calcul des collisions il est préférable de gartder quand même les formes des îles à part (en plus de la forme de l'ocean - celles des îles).

  3. #3
    Membre averti
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Points : 330
    Points
    330
    Par défaut Re: [Debutant]Géométrie, bateau et épinard.
    Citation Envoyé par Zeil
    (non-convexe car il peut exister des iles).
    En fait même si il n'y avait pas d'île, il pourrait ne pas être convexe. Convexe, ça veut dire que la région est "arrondie". Plus formellement, si deux points appartiennent au polygone, le segment les joignant aussi.
    C'était la petite parenthèse culturelle


    Pour répondre à ta question :
    http://java.sun.com/j2se/1.5.0/docs/...m.Rectangle2D)

    Citation Envoyé par Zeil
    PS: Les épinards, c'était pour faire un titre stylé.
    lol

  4. #4
    Futur Membre du Club
    Inscrit en
    Juin 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Merci pour vos réponses.

    Je vais donc utiliser les méthodes dont vous avez parlé mais je me dis que ce sera quand même bien long en temps de calcul pour juste cela

    Je ferais un test de charge avec une 10aine de clients et je viendrais râler si ca n'est pas concluant. (parce que râler, c'est stylé)

    Encore merci

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 854
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 854
    Points : 22 876
    Points
    22 876
    Billets dans le blog
    51
    Par défaut
    quand même bien long en temps de calcul pour juste cela
    Alala il ne faut pas desesperer, d'autant plus que tous les jeux 2D ou 3D, vectoriels ou bitmaps ou ils y a des trucs qui bougent utilisent des algorithmes de collision de ce genre.
    Et oui l'usage de la boite englobante permet d'eviter des calculs inutiles et souvent bien plus longs sur les formes reelles.

    D'ailleurs dans un premier temps tu peux tout simplement te restreintre aux boite englobantes sans chercher a calculer plus loin. Ca marche deja relativement bien (c'est juste beaucoup moins precis...).

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

Discussions similaires

  1. algorithme de collision 3D
    Par chetropinchuste dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 14/02/2010, 13h16
  2. [java3D][collision]
    Par geofun dans le forum 3D
    Réponses: 7
    Dernier message: 12/02/2007, 14h49
  3. Test de collision en 2D
    Par GLDavid dans le forum OpenGL
    Réponses: 5
    Dernier message: 12/02/2004, 10h12
  4. Gestion des collisions - terrains
    Par Dranor dans le forum DirectX
    Réponses: 1
    Dernier message: 26/06/2003, 18h50
  5. test collisions
    Par tatakinawa dans le forum OpenGL
    Réponses: 5
    Dernier message: 08/06/2002, 06h03

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