# 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