Classes | Defines | Functions
core/vgl/vgl_1d_basis.h File Reference

storage for 3 collinear points to serve as 1-D projective basis More...

#include <vgl/vgl_fwd.h>
#include <vgl/vgl_homg_point_1d.h>
#include <vcl_iosfwd.h>
#include <vcl_cassert.h>

Go to the source code of this file.

Classes

class  vgl_1d_basis< T >
 Storage for 3 collinear points to serve as 1-D projective basis. More...

Defines

#define VGL_1D_BASIS_INSTANTIATE(T)   extern "please include vgl/vgl_1d_basis.txx first"

Functions

template<class T >
vcl_ostream & operator<< (vcl_ostream &s, vgl_1d_basis< T > const &)
 Write "<vgl_1d_basis o u i> " to stream.

Detailed Description

storage for 3 collinear points to serve as 1-D projective basis

vgl_1d_basis<T> is a class templated on the point type that will be stored. Typically, T will be vgl_point_2d<double> or vgl_homg_point_2d<int> or even vgl_line_2d<float> or vgl_point_3d<T>.

This class stores three unequal collinear points and will use these to define a projection from e.g. 2d points on a line to a 1-dimensional projective space: the first point receives coordinates (0,1), the second one (1,0), and the third one (the unit point) coordinates (1,1).

Note that this class can also be used for ``projecting'' from e.g. vgl_homg_point_1d<float> or vgl_point_1d<int> to vgl_homg_point_1d<double>, i.e., a kind of type casting operation, by passing it the homogeneous points (0,1), (1,0) and (1,1). Note that the destination space is always vgl_homg_point_1d<double>.

The only conditions on template type T are the following:

These conditions are satisfied for the vgl_point_[23]d<Type> and vgl_homg_point_[123]d<Type> classes. For concurrent vgl_line_2d's the method project() has to be specialised (which is easily done by taking its intersection with the line at infinity!)

Warning:
the C++ standard requires that these functions are declared before they are used, which, for this, means in the definition of the functions in the .txx file. So, for maximum portability, make sure they are at least declared before the .txx file is included.
Author:
Peter Vanroose
Date:
7 July, 2001
   Modifications
     Feb.2002 - Peter Vanroose - brief doxygen comment placed on single line
   

Definition in file vgl_1d_basis.h.


Define Documentation

#define VGL_1D_BASIS_INSTANTIATE (   T)    extern "please include vgl/vgl_1d_basis.txx first"

Definition at line 139 of file vgl_1d_basis.h.


Function Documentation

template<class T >
vcl_ostream & operator<< ( vcl_ostream &  s,
vgl_1d_basis< T > const &   
)

Write "<vgl_1d_basis o u i> " to stream.

Definition at line 40 of file vgl_1d_basis.txx.