[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
## [Paparazzi-devel] Point in polygon / point on line problem

**From**: |
nisma |

**Subject**: |
[Paparazzi-devel] Point in polygon / point on line problem |

**Date**: |
Wed, 13 Jul 2005 06:42:30 -0400 |

Hi to all,
maybe this fragment of code is what you need.
typedef struct {int x, y;} point;
int
isOnLine( point l0, point l1, point p )
// return -/0/+ if a point (p) is left/On/right of an infinite line (l0,l1)
{ return 0-((l1.x-l0.x)*(p.y-l0.y)-(p.x-l0.x)*(l1.y-l0.y)); }
//===================================================================
int
inPolygon(point p, point* v, int n)
// p = a point,
// v[] = vertex points of a polygon v[n+1] with v[n]=v[0]
// return: the winding number (=0 if p is outside v[])
int
{
int cn = 0,i;
for(i=0;i<n;i++)
if(v[i].y<=p.y){if(v[i+1].y>p.y)if(isOnLine(v[i],v[i+1],p)<0)++cn;
}else{if(v[i+1].y<=p.y)if(isOnLine(v[i],v[i+1],p)>0)--cn;}
return cn;
}
Cheers
Chris

[Prev in Thread] |
**Current Thread** |
[Next in Thread] |

**[Paparazzi-devel] Point in polygon / point on line problem**,
*nisma* **<=**