#include <vgl/vgl_box_2d.h>
#include <vgl/vgl_line_2d.h>
#include <vgl/vgl_line_segment_2d.h>
#include <vgl/vgl_polygon.h>
Go to the source code of this file.
Defines | |
#define | VGL_CLIP_INSTANTIATE(T) extern "please include vgl/vgl_clip.txx instead" |
Enumerations | |
enum | vgl_clip_type { vgl_clip_type_intersect, vgl_clip_type_union, vgl_clip_type_difference, vgl_clip_type_xor } |
Type of polygon "clip" operations. More... | |
Functions | |
template<class T > | |
bool | vgl_clip_lineseg_to_line (T &x1, T &y1, T &x2, T &y2, T a, T b, T c) |
clips away the portion where ax+by+c<0. return false if nothing left. | |
template<class T > | |
bool | vgl_clip_line_to_box (T a, T b, T c, T x1, T y1, T x2, T y2, T &bx, T &by, T &ex, T &ey) |
clip line ax+by+c=0 to given box. return false if no intersection. | |
template<class T > | |
vgl_line_segment_2d< T > | vgl_clip_line_to_box (vgl_line_2d< T > const &l, vgl_box_2d< T > const &b) |
clip given line to given box, and return resulting line segment. | |
template<class T > | |
vgl_polygon< T > | vgl_clip (const vgl_polygon< T > &poly1, const vgl_polygon< T > &poly2, vgl_clip_type op=vgl_clip_type_intersect) |
Clip a polygon against another polygon. | |
template<class T > | |
vgl_polygon< T > | vgl_clip (vgl_polygon< T > const &poly1, vgl_polygon< T > const &poly2, vgl_clip_type op, int *p_retval) |
Clip a polygon against another polygon. |
Definition in file vgl_clip.h.
#define VGL_CLIP_INSTANTIATE | ( | T | ) | extern "please include vgl/vgl_clip.txx instead" |
Definition at line 95 of file vgl_clip.h.
enum vgl_clip_type |
Type of polygon "clip" operations.
Definition at line 21 of file vgl_clip.h.
vgl_polygon< T > vgl_clip | ( | const vgl_polygon< T > & | poly1, |
const vgl_polygon< T > & | poly2, | ||
vgl_clip_type | op = vgl_clip_type_intersect |
||
) |
Clip a polygon against another polygon.
The two polygons poly1 and poly2 are combined with each other. The operation (intersection, union, etc) is given by parameter op.
In order to be able to use it, make sure to satisfy the copyright notice, then activate the "BUILD_NONCOMMERCIAL" compiler option.
Definition at line 224 of file vgl_clip.txx.
vgl_polygon< T > vgl_clip | ( | vgl_polygon< T > const & | poly1, |
vgl_polygon< T > const & | poly2, | ||
vgl_clip_type | op, | ||
int * | p_retval | ||
) |
Clip a polygon against another polygon.
Same as vgl_clip( const vgl_polygon<T>& poly1, const vgl_polygon<T>& poly2, vgl_clip_type op = vgl_clip_type_intersect ); but where the fourth parameter is a return flag which is 1 if success, or 0 if the operation faced a geometric degeneracy which could not be handled. In this case, it might be necessary to perturb the input with a tiny amount of random noise and try again.
Definition at line 143 of file vgl_clip.txx.
bool vgl_clip_line_to_box | ( | T | a, |
T | b, | ||
T | c, | ||
T | x1, | ||
T | y1, | ||
T | x2, | ||
T | y2, | ||
T & | bx, | ||
T & | by, | ||
T & | ex, | ||
T & | ey | ||
) |
clip line ax+by+c=0 to given box. return false if no intersection.
Definition at line 40 of file vgl_clip.txx.
vgl_line_segment_2d< T > vgl_clip_line_to_box | ( | vgl_line_2d< T > const & | l, |
vgl_box_2d< T > const & | b | ||
) | [inline] |
clip given line to given box, and return resulting line segment.
Definition at line 53 of file vgl_clip.h.
bool vgl_clip_lineseg_to_line | ( | T & | x1, |
T & | y1, | ||
T & | x2, | ||
T & | y2, | ||
T | a, | ||
T | b, | ||
T | c | ||
) |
clips away the portion where ax+by+c<0. return false if nothing left.
Definition at line 14 of file vgl_clip.txx.