NAME
is_point_in_polygon - Determines if a point is inside a polygon
SYNOPSIS
#include "g/g_geometry.h"
Example compile flags (system dependent):
-DLINUX_X86_64 -DLINUX_X86_64_OPTERON -DGNU_COMPILER
-I/home/kobus/include
-L/home/kobus/misc/load/linux_x86_64_opteron -L/usr/lib/x86_64-linux-gnu
-lKJB -lfftw3 -lgsl -lgslcblas -ljpeg -lSVM -lstdc++ -lpthread -lSLATEC -lg2c -lacml -lacml_mv -lblas -lg2c -lncursesw
int is_point_in_polygon
(
const Matrix *points_mp,
const Vector *test_point_vp
);
DESCRIPTION
This routine determines if a point, assumed to be co-planer with a convex
polygon, is inside that polygon. The polygon is specified by a list of points
in cyclic order placed in the rows of the matrix point_mp. The points can
be of any dimension, but this routine assumes that they lie in a 2-D
subspace. The boundary of the polygon is considered part of the polygon, so
if the point is on the boundary, then the routine returns TRUE.
RETURNS
TRUE if the point is inside the polygon, FALSE if not, and ERROR if there
are any problems, with an error message being set.
NOTE
If the points are out of order, or if the polygon is not convex, or if
the point is not in the plane of the polygon, then this routine will not
work!
WARNING
Qhull output: The edges of facets of a 3D hull are not in cyclic order.
One solution is do call this routine for each triangle. Also, the edges
of a 2D hull are not in order, unless find_convex_hull() was called with
the ORDER_2D_HULL_FACETS option.
NOTE
The algorithm used in this routine is not very good. Should be fixed
sometime.
DISCLAIMER
This software is not adequatedly tested. It is recomended that
results are checked independantly where appropriate.
AUTHOR
Kobus Barnard
DOCUMENTER
Kobus Barnard
SEE ALSO
get_polygon_CM_and_area
,
get_ordered_polygon_CM_and_area
,
is_point_in_segment
,
order_planer_points