Go to the documentation of this file.00001
00002 #ifndef vpgl_affine_camera_txx_
00003 #define vpgl_affine_camera_txx_
00004
00005
00006
00007 #include "vpgl_affine_camera.h"
00008 #include <vnl/vnl_vector_fixed.h>
00009 #include <vcl_cassert.h>
00010
00011
00012 template <class T>
00013 vpgl_affine_camera<T>::vpgl_affine_camera()
00014 {
00015 vnl_matrix_fixed<T,3,4> C( (T)0 );
00016 C(0,0) = C(1,1) = C(2,3) = (T)1;
00017 set_matrix( C );
00018 }
00019
00020
00021
00022 template <class T>
00023 vpgl_affine_camera<T>::vpgl_affine_camera( const vnl_vector_fixed<T,4>& row1,
00024 const vnl_vector_fixed<T,4>& row2 )
00025 {
00026 set_rows( row1, row2 );
00027 }
00028
00029
00030
00031 template <class T>
00032 vpgl_affine_camera<T>::vpgl_affine_camera( const vnl_matrix_fixed<T,3,4>& camera_matrix )
00033 {
00034 assert( camera_matrix(2,3) != 0 );
00035 vnl_matrix_fixed<T,3,4> C( camera_matrix );
00036 C = C/C(2,3);
00037 C(2,0) = (T)0; C(2,1) = (T)0; C(2,2) = (T)0;
00038 set_matrix( C );
00039 }
00040
00041
00042
00043 template <class T>
00044 void vpgl_affine_camera<T>::set_rows(
00045 const vnl_vector_fixed<T,4>& row1,
00046 const vnl_vector_fixed<T,4>& row2 )
00047 {
00048 vnl_matrix_fixed<T,3,4> C( (T)0 );
00049 for ( unsigned int i = 0; i < 4; i++ ) {
00050 C(0,i) = row1(i);
00051 C(1,i) = row2(i);
00052 }
00053 C(2,3) = (T)1;
00054 set_matrix( C );
00055 }
00056
00057
00058 #undef vpgl_AFFINE_CAMERA_INSTANTIATE
00059 #define vpgl_AFFINE_CAMERA_INSTANTIATE(T) \
00060 template class vpgl_affine_camera<T >
00061
00062
00063 #endif // vpgl_affine_camera_txx_