core/vgl/vgl_line_3d_2_points.txx
Go to the documentation of this file.
00001 // This is core/vgl/vgl_line_3d_2_points.txx
00002 #ifndef vgl_line_3d_2_points_txx_
00003 #define vgl_line_3d_2_points_txx_
00004 //:
00005 // \file
00006 
00007 #include "vgl_line_3d_2_points.h"
00008 #include <vcl_iostream.h>
00009 // not used? #include <vcl_limits.h>
00010 
00011 //***************************************************************************
00012 // Initialization
00013 //***************************************************************************
00014 
00015 
00016 //***************************************************************************
00017 // Utility methods
00018 //***************************************************************************
00019 
00020 template <class Type>
00021 bool vgl_line_3d_2_points<Type>::operator==(vgl_line_3d_2_points<Type> const& other) const
00022 {
00023   if (this==&other)
00024     return true;
00025   // It suffices to check that the points are collinear:
00026   return collinear(point1(), point2(), other.point1())
00027       && collinear(point1(), point2(), other.point2());
00028 }
00029 
00030 //*****************************************************************************
00031 // stream operators
00032 //*****************************************************************************
00033 
00034 template <class Type>
00035 vcl_ostream& operator<<(vcl_ostream &s,
00036                         const vgl_line_3d_2_points<Type> &p)
00037 {
00038   return s << "<vgl_line_3d_2_points "
00039            << p.point1() << p.point2() << " >";
00040 }
00041 
00042 #undef VGL_LINE_3D_2_POINTS_INSTANTIATE
00043 #define VGL_LINE_3D_2_POINTS_INSTANTIATE(T) \
00044 template class vgl_line_3d_2_points<T >;\
00045 template vcl_ostream& operator<<(vcl_ostream&, vgl_line_3d_2_points<T > const&)
00046 
00047 #endif // vgl_line_3d_2_points_txx_