NAME

trim_2D_hull - Removes redundant points from a 2D hull.

SYNOPSIS

#include "h/h_misc.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 


Hull *trim_2D_hull
(
	const Hull *hp,
	double tolerance
);

DESCRIPTION

This routine creates a new hull, similar to the argument hull, but with redundant points removed. A point is considered redundant if removing the point does not change the hull too much. Slightly more specifically, it is considered redundant if it is almost colinear with two other vertices. The gory details are as follows.
    Let D be the distance between two vertices P1, P2.
    Consider some other vertex, V.
    Let the perpendicular distance from V to the segment P1--P2 be d.
    Then, the point is redundant if d/D < tolerance.
When a redundant point is found, then it is removed, and then the remaining points are considered as a group (without the removed ones). It would be faster to condider each point to be removed in the context of the complete set of vertices, but this could lead to all points being deleted. However, no effort is currently made to remove the "most" redundant point first. This may be a reasonable improvement to the routine.

RETURNS

A pointer to a new hull on success and NULL on failure.

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_interior_distance_to_hull , get_distance_to_hull , expand_hull , get_approximate_error_hull_data