20 #ifndef KJB_ST_TURNTABLE_CAMERA_H
21 #define KJB_ST_TURNTABLE_CAMERA_H
29 #ifdef KJB_HAVE_BST_SERIAL
30 #include <boost/serialization/access.hpp>
31 #include <boost/serialization/vector.hpp>
36 class Calibrated_camera;
53 #ifdef KJB_HAVE_BST_SERIAL
54 friend class boost::serialization::access;
79 const Vector& rotation_axis,
80 const Vector& turntable_origin,
82 bool clockwise =
true);
122 template <
typename Iterator>
125 const Vector& rotation_axis,
126 const Vector& turntable_origin,
127 Iterator angles_begin,
128 Iterator angles_end) :
129 neutral_camera_(cam),
130 turntable_origin_(turntable_origin),
131 rotation_axis_(rotation_axis),
132 angles_(angles_begin, angles_end),
133 true_angles_(angles_),
135 current_camera_(neutral_camera_),
139 indices_.resize(angles_.size());
140 for(
size_t i = 0;
i < angles_.size(); ++
i)
169 assert(angles_.size() > 0);
178 assert(angles_.size() > 0);
219 assert(angles_.size() > 0);
228 assert(angles_.size() > 0);
229 return neutral_camera_;
235 return turntable_origin_;
240 return rotation_axis_;
250 return current_index_;
255 return current_camera_;
260 return angles_.size();
275 std::vector<Perspective_camera>
to_cameras()
const;
282 std::vector<double> angles_;
283 std::vector<double> true_angles_;
285 mutable size_t current_index_;
288 std::vector<size_t> indices_;
292 template<
class Archive>
293 void serialize(Archive &ar,
const unsigned int version)
295 #ifdef KJB_HAVE_BST_SERIAL
299 assert(Archive::is_loading::value);
301 using namespace boost;
302 ar & neutral_camera_;
303 ar & turntable_origin_;
308 ar & current_camera_;
311 true_angles_ = angles_;
312 indices_.resize(angles_.size());
313 for(
size_t i =0;
i < angles_.size(); ++
i)
321 using namespace boost;
322 ar & neutral_camera_;
323 ar & turntable_origin_;
329 ar & current_camera_;
333 KJB_THROW_2(Missing_dependency,
"boost::serialization");
349 #ifdef KJB_HAVE_BST_SERIAL
352 namespace serialization {
356 typedef mpl::int_<1> type;
357 typedef mpl::integral_c_tag tag;
358 BOOST_STATIC_CONSTANT(
int, value = version::type::value);
void set_previous()
Definition: turntable_camera.cpp:133
std::vector< Perspective_camera > to_cameras() const
Definition: turntable_camera.cpp:197
void evenly_space_cameras(size_t n)
Definition: turntable_camera.cpp:177
const Vector & get_origin() const
Definition: turntable_camera.h:233
Turntable_camera(const Perspective_camera &cam, const Vector &rotation_axis, const Vector &turntable_origin, Iterator angles_begin, Iterator angles_end)
Definition: turntable_camera.h:123
size_t get_current_index() const
Definition: turntable_camera.h:248
virtual void prepare_for_rendering(bool clean_buffers) const
Definition: perspective_camera.cpp:1103
const std::vector< double > & get_angles() const
Definition: turntable_camera.h:243
const Perspective_camera & get_neutral_camera() const
Definition: turntable_camera.h:226
Turntable_camera & operator=(const Turntable_camera &other)
Definition: turntable_camera.h:152
This class implements vectors, in the linear-algebra sense, with real-valued elements.
Definition: m_vector.h:87
void pass_to_opengl(bool clean_buffers=false) const
Definition: turntable_camera.h:216
void set_next()
Definition: turntable_camera.cpp:122
void set_active_camera(size_t i) const
Definition: turntable_camera.cpp:96
St_perspective_camera for modeling a perspective camera using the classic Forsyth and Ponce parametri...
Definition: perspective_camera.h:93
Definition: turntable_camera.h:51
const kjb::Vector & get_principal_point() const
returns the principal point
Definition: perspective_camera.h:221
const Vector & get_principal_point() const
Definition: turntable_camera.h:167
Turntable_camera regularize_turntable_cameras(const std::vector< Calibrated_camera > &cameras_)
Definition: turntable_camera.cpp:218
void set_principal_point(const Vector &pt)
Definition: turntable_camera.h:176
virtual void set_principal_point(const kjb::Vector &ip)
sets the principal point
Definition: perspective_camera.cpp:897
const Perspective_camera & get_current_camera() const
Definition: turntable_camera.h:253
Turntable_camera()
Definition: turntable_camera.cpp:38
#define KJB_THROW_2(ex, msg)
Definition: l_exception.h:48
virtual const Perspective_camera operator[](int i) const
Definition: turntable_camera.cpp:185
const Vector & get_rotation_axis() const
Definition: turntable_camera.h:238
const std::vector< size_t > & index_list()
Definition: turntable_camera.h:263
get the indices of edges in each direction for i
Definition: APPgetLargeConnectedEdges.m:48
Definition for the Vector class, a thin wrapper on the KJB Vector struct and its related functionalit...
void set_index_list(const Index_range &indices)
If not all angles should be used, use this to specify the indices of angles to use.
Definition: turntable_camera.cpp:145
virtual void swap(Turntable_camera &other)
Definition: turntable_camera.cpp:83
size_t size() const
Definition: turntable_camera.h:258