Go to the documentation of this file.00001
00002 #ifndef vimt3d_trilin_interp_h_
00003 #define vimt3d_trilin_interp_h_
00004
00005
00006
00007
00008
00009 #include <vgl/vgl_point_3d.h>
00010 #include <vil3d/vil3d_trilin_interp.h>
00011 #include <vil3d/vil3d_image_view.h>
00012
00013
00014
00015 template<class T>
00016 inline double vimt3d_trilin_interp_safe(const vimt3d_image_3d_of<T>& image,
00017 const vgl_point_3d<double>& p,
00018 int plane=0)
00019 {
00020 vgl_point_3d<double> im_p = image.world2im()(p);
00021 const vil3d_image_view<T>& im = image.image();
00022 return vil3d_trilin_interp_safe(im_p.x(),im_p.y(),im_p.z(),
00023 im.origin_ptr()+plane*im.planestep(),
00024 im.ni(),im.nj(),im.nk(),
00025 im.istep(),im.jstep(),im.kstep());
00026 }
00027
00028
00029
00030 template<class T>
00031 inline double vimt3d_trilin_interp_raw(const vimt3d_image_3d_of<T>& image,
00032 const vgl_point_3d<double>& p,
00033 int plane=0)
00034 {
00035 vgl_point_3d<double> im_p = image.world2im()(p);
00036 const vil3d_image_view<T>& im = image.image();
00037 return vil3d_trilin_interp_raw(im_p.x(),im_p.y(),im_p.z(),
00038 im.origin_ptr()+plane*im.planestep(),
00039 im.istep(),im.jstep(),im.kstep());
00040 }
00041
00042 #endif // vimt3d_trilin_interp_h_