Go to the documentation of this file.00001 #include "vpgl_project.h"
00002
00003
00004
00005 #include <vgl/vgl_point_2d.h>
00006 #include <vgl/vgl_homg_point_2d.h>
00007 #include <vgl/vgl_homg_point_3d.h>
00008
00009
00010 vgl_box_2d<double> vpgl_project::
00011 project_bounding_box(vpgl_perspective_camera<double> cam,
00012 vgl_box_3d<double> const & box)
00013 {
00014 vpgl_proj_camera<double> pcam = static_cast<vpgl_proj_camera<double> >(cam);
00015 return vpgl_project::project_bounding_box(pcam, box);
00016 }
00017
00018 vgl_box_2d<double> vpgl_project::project_bounding_box(vpgl_proj_camera<double> cam,
00019 vgl_box_3d<double> const & box)
00020 {
00021
00022 double min_x = box.min_x(), max_x = box.max_x();
00023 double min_y = box.min_y(), max_y = box.max_y();
00024 double min_z = box.min_z(), max_z = box.max_z();
00025 vgl_homg_point_3d<double > p[8];
00026 p[0].set(min_x, min_y, min_z); p[1].set(max_x, min_y, min_z);
00027 p[2].set(min_x, max_y, min_z); p[3].set(max_x, max_y, min_z);
00028 p[4].set(min_x, min_y, max_z); p[5].set(max_x, min_y, max_z);
00029 p[6].set(min_x, max_y, max_z); p[7].set(max_x, max_y, max_z);
00030
00031
00032 vgl_box_2d<double> box_2d;
00033 for (unsigned i =0; i<8; ++i)
00034 {
00035 vgl_homg_point_2d<double> hp2d = cam.project(p[i]);
00036 box_2d.add(vgl_point_2d<double>(hp2d));
00037 }
00038 return box_2d;
00039 }