Point sur polyligne

umafaid Messages postés 6 Date d'inscription jeudi 1 février 2007 Statut Membre Dernière intervention 30 juillet 2007 - 25 juil. 2007 à 16:50
umafaid Messages postés 6 Date d'inscription jeudi 1 février 2007 Statut Membre Dernière intervention 30 juillet 2007 - 30 juil. 2007 à 23:35
Bonjour,

je réponds à ce forum parce que j'ai un problème assez similaire à ce que gracerare veut faire sauf que comme le recommande bouye, je n'utilise pas de Line2D mais ma propre classe Ligne qui est constituée d'un tableau d'entiers.

Alors j'ai essayé de faire des calculs mais ça ne marche pas. J'ai dû faire une erreur mais je ne sais à quel niveau

Voilà mon code

// p et pp sont les deux points de la ligne et ppp le point avec lequel on effectue la comparaison

public boolean appLigne(MonPoint p, MonPoint pp, MonPoint ppp)
{
    boolean res=false;
    float coef=0f; // coefficient directeur de la droite
    float a=0f;
    int xmin,xmax,ymin,ymax;

   coef = (float) ((float) (pp.y - p.y)) / ((float) (pp.x - p.x));
   a =  (float) ((p.y - (p.x * coef)) / 20f);
  
   int  verify = (int)  ((coef*ppp.x)+a);
   if(p.x

2 réponses

eplanet Messages postés 112 Date d'inscription dimanche 6 juin 2004 Statut Membre Dernière intervention 19 septembre 2007
30 juil. 2007 à 10:47
"j'ai un problème assez similaire à ce que gracerare veut faire", c'est à dire.... Tu pourrais préciser quand même, on ne connais pas par coeur tous les sujets qui ont été postés...

Vince
0
umafaid Messages postés 6 Date d'inscription jeudi 1 février 2007 Statut Membre Dernière intervention 30 juillet 2007
30 juil. 2007 à 23:35
en fait ce qu e je voulais c'est savoir si un point appartient à une polyligne, j'ai trouvé comment le faire mais il faut que je mette une marge d'erreur. Et j'aimerais savoir comment le faire




/**
 * vérifie qu'un point appartient à un segment
 * @param p point de début du segment
 * @param pp point de fin du segment
 * @param ppp point à comparer
 * @return true si le point appartient au segment, false sinon
 */
public boolean appLigne(MonPoint p, MonPoint pp, MonPoint ppp)
{
 boolean res=false;
 float coef=0f;
 float a=0f;
 int xmin,xmax,ymin,ymax;
 int marge=5;
 
   coef = (float) ((float) (pp.y - p.y)) / ((float) (pp.x - p.x));
   a =  (float) (p.y - (p.x * coef));
  
   int  verify = (int)  ((coef*ppp.x)+a);
  
   if(p.x=verify){
     if ((xmin
/**
 * vérifie qu'un point appartient à la ligne
 * @param x abscisse du point
 * @param y ordonnée du point
 * @return true si le point appartient à la ligne, false sinon
 */
public boolean contains(int x, int y) {
 
boolean verif = false;
MonPoint p = new MonPoint(x,y);


 for(int i=0; i<this.size-1; i++){
  if (appLigne(points[i],points[i+1],p)==true)
   verif=true;
 }


 return verif;
}
0
Rejoignez-nous