Defines | Enumerations | Functions
core/vgl/vgl_clip.h File Reference
#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.

Detailed Description

Author:
fsm
    Modifications
     29 Apr 2002: Amitha Perera: added a polygon clipper (a wrap around for
                                 Alan Murt's Generic Polygon Clipper)
     12 Oct 2002: Peter Vanroose: vgl_clip_line_to_box completely re-implemented
     14 Nov 2003: Peter Vanroose: made all functions templated
   

Definition in file vgl_clip.h.


Define Documentation

#define VGL_CLIP_INSTANTIATE (   T)    extern "please include vgl/vgl_clip.txx instead"

Definition at line 95 of file vgl_clip.h.


Enumeration Type Documentation

Type of polygon "clip" operations.

Enumerator:
vgl_clip_type_intersect 
vgl_clip_type_union 
vgl_clip_type_difference 
vgl_clip_type_xor 

Definition at line 21 of file vgl_clip.h.


Function Documentation

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.

The two polygons poly1 and poly2 are combined with each other. The operation (intersection, union, etc) is given by parameter op.

Note:
The implementation of this code is based on Alan Murta's GPC library (http://www.cs.man.ac.uk/aig/staff/alan/software/gpc.html) which is free for non-commercial use.

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.

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.

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.

template<class T >
bool vgl_clip_line_to_box ( a,
b,
c,
x1,
y1,
x2,
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.

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 
) [inline]

clip given line to given box, and return resulting line segment.

Definition at line 53 of file vgl_clip.h.

template<class T >
bool vgl_clip_lineseg_to_line ( T &  x1,
T &  y1,
T &  x2,
T &  y2,
a,
b,
c 
)

clips away the portion where ax+by+c<0. return false if nothing left.

Definition at line 14 of file vgl_clip.txx.