Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : calculer l’intersection de deux point. [ Divers / Débutant(e) ] (abderrahman86)

dimanche 30 décembre 2007 à 02:14:17 | calculer l’intersection de deux point.

abderrahman86




Salut tout le monde

Je suis un débutant en java

Je suis en cours de développer un jeu

Je veux savoir commet calculer l'intersection de deux point.

Le principe de ce jeu c'est je tire une balle qui prend un chemin d'un arc ce que je jeux c'est lorsqu'il choque un meure il doit arrêter.

Je ne sais pas comment.

Merci



dimanche 30 décembre 2007 à 19:03:13 | Re : calculer l’intersection de deux point.

goast_tu

Ca veut dire quoi intersection de deux point ? Deux points peuvent coinsider mais pas s'intersecter.

___________________
Hebergement gratuit

dimanche 30 décembre 2007 à 19:09:38 | Re : calculer l’intersection de deux point.
lundi 31 décembre 2007 à 10:55:01 | Re : calculer l’intersection de deux point.

mouzart

slt,
compare les coordonnes:
A=B si et seulement si Xa=Xb et Ya=Yb
c'est facile ;-)


lundi 31 décembre 2007 à 12:55:51 | Re : calculer l’intersection de deux point.

abderrahman86





Merci pour la réponse
je vais tester puis je vais vous répondre

lundi 31 décembre 2007 à 17:24:56 | Re : calculer l’intersection de deux point.

goast_tu

Si tu veux connaitre si deux points coincident tu compare juste les coordonées mais seulement si tu fais des calculs avec des entiers mais si tu fais les calculs en flotants il est plus correct de verifier que la distance entre les 2 points est inferieure à une certaine valeur choisie à l'avance donc il faut verifier que
(Xa-Xb)^2 + (Ya-Yb)^2 < D^2

___________________
Hebergement gratuit

dimanche 6 janvier 2008 à 21:01:36 | Re : calculer l’intersection de deux point.

gouessej

Tu parles d'un mur, donc je ne pense pas que ce qu'on t'a proposé va suffire. J'ai un bout de code qui marche très bien pour des murs orthogonaux pour vérifier si un projectile quelconque passe à travers un mur (code source sous licence GPL version 2, extrait du First Person Shooter TUER) :

/**
     * compute an impact from the bounds of a tarjectory
     * in the simplified case (i.e with orthogonal walls and
     * in the planar surface Oxz)
     * @param x1: abscissa of the previous position of the projected object
     * @param z1: applicate of the previous position of the projected object
     * @param x2: abscissa of the next position of the projected object
     * @param z2: applicate of the next position of the projected object
     * @param wx1: abscissa of the first point of the wall
     * @param wz1: applicate of the first point of the wall
     * @param wx2: abscissa of the second point of the wall
     * @param wz2: applicate of the second point of the wall
     * @param wnx: abscissa of the normal at the impact
     * @param wnz: applicate of the normal at the impact
     * @return the computed impact if found, otherwise null
     */
    public static final Impact computeImpactFromTargetoryBipoint(float x1,float z1,
            float x2,float z2,float wx1,float wz1,float wx2,float wz2,float wnx,
            float wnz){
        boolean isHorizontal=(wnz!=0);
        if(x1==x2)
            {if(!isHorizontal)
                {if(x1==wx1)
                    {if(wz1>wz2)
                         {if(wz2<=z2 && z2<=wz1)
                              {if(z1>z2)
                                   return(new Impact(wx1,0.0f,wz1,wnx,0,wnz));
                               else
                                   return(new Impact(wx1,0.0f,wz2,wnx,0,wnz));
                              }
                          else                             
                              return(null);
                         }
                     else
                         {if(wz1<=z2 && z2<=wz2)
                              {if(z1>z2)
                                   return(new Impact(wx1,0.0f,wz2,wnx,0,wnz));
                               else
                                   return(new Impact(wx1,0.0f,wz1,wnx,0,wnz));                               
                              }
                          else
                              return(null);                        
                         }
                     }
                 else                  
                     return(null);                   
                }
             else
                 {if(wx1>wx2)
                      {if(wx2<=x1 && x1<=wx1)
                           {if(z1>z2)
                                {if(z2<=wz1 && wz1<=z1)
                                     return(new Impact(x1,0.0f,wz1,wnx,0,wnz));
                                 else                                   
                                     return(null);
                                }
                            else
                                {if(z1<=wz1 && wz1<=z2)
                                     return(new Impact(x1,0.0f,wz1,wnx,0,wnz));
                                 else                                   
                                     return(null);
                                }
                           }
                       else                         
                           return(null);
                      }
                  else
                      {if(wx1<=x1 && x1<=wx2)
                           {if(z1>z2)
                                {if(z2<=wz1 && wz1<=z1)
                                     return(new Impact(x1,0.0f,wz1,wnx,0,wnz));
                                 else                                   
                                     return(null);
                                }
                            else
                                {if(z1<=wz1 && wz1<=z2)
                                     return(new Impact(x1,0.0f,wz1,wnx,0,wnz));
                                 else                                   
                                     return(null);
                                }                            
                           }
                       else
                           return(null);
                      }
                 }
            }
        else
            {float a=(z2-z1)/(x2-x1);
             float b=z1-(a*x1);
             float impx,impz;
             if(!isHorizontal)
                 {impx=wx1;
                  impz=(a*impx)+b;
                  if(wz1>wz2)
                      {if(wz2<=impz && impz<=wz1)
                           return(new Impact(impx,0.0f,impz,wnx,0,wnz));
                       else                        
                           return(null);
                      }
                  else
                      {if(wz1<=impz && impz<=wz2)
                           return(new Impact(impx,0.0f,impz,wnx,0,wnz));
                       else                       
                           return(null);
                      }
                 }
             else
                 {if(a!=0)
                      {impz=wz1;
                       impx=(impz-b)/a;
                       if(wx1>wx2)
                           {if(wx2<=impx && impx<=wx1)
                                return(new Impact(impx,0.0f,impz,wnx,0,wnz));
                            else                             
                                return(null);
                           }
                       else
                           {if(wx1<=impx && impx<=wx2)
                                return(new Impact(impx,0.0f,impz,wnx,0,wnz));
                            else                              
                                return(null);
                           }
                      }
                  else
                      {if(z1==wz1)
                           {if(wx1>wx2)
                               {if(wx2<=x2 && x2<=wx1)
                                    {if(x1>x2)
                                         return(new Impact(wx1,0.0f,wz1,wnx,0,wnz));
                                     else
                                         return(new Impact(wx2,0.0f,wz1,wnx,0,wnz));
                                    }
                                else
                                    return(null);
                               }
                           else
                               {if(wx1<=x2 && x2<=wx2)
                                    {if(x1>x2)
                                         return(new Impact(wx2,0.0f,wz1,wnx,0,wnz));
                                     else
                                         return(new Impact(wx1,0.0f,wz1,wnx,0,wnz));                               
                                    }
                                else
                                    return(null);
                               }
                           }
                       else
                           return(null);                     
                      }
                 }
            }     
    }

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java

samedi 12 janvier 2008 à 13:52:11 | Re : calculer l’intersection de deux point.

abderrahman86

Réponse acceptée !



cette methode est trop long.

mais la solution c'est de calculer l'intervalle où  xa<x<xa+L et ya<y<ya+H

merci mes amis


samedi 12 janvier 2008 à 16:08:18 | Re : calculer l’intersection de deux point.

gouessej

Ma méthode marche, elle est éprouvée. Si tu te réduis à un cas encore plus simple, alors en effet, tu peux trouver un procédé de calcul plus simple. Tu ne dis pas ce qu'est xa, x, L, ya, y et H donc ça ne sert pas à grand chose.

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java

samedi 12 janvier 2008 à 16:25:56 | Re : calculer l’intersection de deux point.

gouessej

Je viens de comprendre ce que tu as voulu écrire. La méthode que tu donnes ne marche que si tu es sûr que le point que tu testes se trouve au moins sur la droite à laquelle le mur appartient (si le mur a une épaisseur quasi nulle) ou bien si le point que tu testes est un bon candidat sur ta trajectoire. Quand tu tires, ton projectile prend une certaine trajectoire et tu choisis de faire le test sur un nombre fini de valeurs faisant partie de cette trajectoire. Si la distance entre les valeurs appartenant à la trajectoire que tu choisis de tester est supérieure à racine(L²+H²), alors ta méthode te dira que ton projectile ne traverse jamais le mur même quand elle le traverse vraiment.

Par conséquent, arrange toi pour que cette distance soit au moins inférieure à racine(L²+H²) (tu prends des risques dès que cette distance est supérieure soit à L soit à H) et ta méthode marchera sinon je te conseille vivement d'utiliser ma méthode.

Enfin, évite les fautes d'orthographe.

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java


1 2

Cette discussion est classé dans : jeu, calculer, intersection


Répondre à ce message

Sujets en rapport avec ce message

Appuyez sur n'importe quelle touche ? lol ;o) [ par Geomaster ] Bonjour bonjour !Tout nouveau parmi vous :o)J'aimerais vous poser une petite question et j'espère que qqn pourra m'aider...Voilà je suis en train de d [gestion evenements] 2 touches en meme temps ? [ par vince03 ] Bonjour, voila je suis en train de developper un jeu en Swing (une version Java de Kooles, un petit jeu qui tourne en C sous Linux) .... et je voudrai recherche d'un jeu simple en java [ par ponchovilla ] bonjour,je dois réaliser comme projet un jeux en java qui pourra etre jouer en réseaux (genre un jeux de cartes) qui se joue à plusieurs (à 2, c'est d JAVA3D et jeu de course [ par toto0101 ] voila j'aimerai savoir où je pourrais trouver le code source d'un jeu de course en java3D? si oui pourriez vous me donner l'url ou m'envoyé le source Jeu de dames sur java [ par Poilocu ] Bonjour,J'aimerais savoir s'il existe des programmes java sur le jeu de dames.Merci d'avance. jeu pictonnary.... [ par cllucifer ] J'aimerai savoir si quelqu'un a déjà développé ce genre de jeu... si il est facile à réaliser...ou où télécharger un bon exemple, en tout language pos cherche sources en java jeu dames 2 joueurs [ par Aladdinleouf ] Bonjour,je dois réaliser un jeu de dames en java pour 2 joueurs (sans IA) ...je sais que cela n'a sans doute rien de difficile pour vous, mais c carém sources java jeu dames 2 joueurs humains [ par Aladdinleouf ] Bonjour,je dois réaliser un jeu de dames en java pour 2 joueurs (sans IA) ...je sais que cela n'a sans doute rien de difficile pour vous, mais c carém Problème : éviter l'exécution prématurée de certaines lignes de code [ par Miklp ] Bonjour,Je veux programmer un puissance 4 en Java (nom de la class : Jeu), où l'on peut choisir le nombre de lignes et le nombre de colonnes pour le t aide pour jeu multijoueur [ par milocco ] Bonjour, j'ai developper un jeu de petansue en flash multijoueur (http://www.petanque52.com). le server multijoueur est en java, un socket server clas


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.