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<pp.x) {
xmin=p.x;
xmax=pp.x;
}
else xmin=pp.x;
xmax=p.x;
if(p.y<pp.y) {
ymin=p.y;
ymax=pp.y;
}
else ymin=pp.y;
ymax=p.y;
if( ppp.y <= verify && ppp.y>=verify){
if ((xmin<ppp.x) && (ppp.x<xmax) && (ymin<ppp.y) && (ppp.y<ymax))
res = true;
}
return res;
}
/**
* 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;
}