Collision Checker
serialize_rectangle_obb.cc
Go to the documentation of this file.
1 
3 
4 #if ENABLE_SERIALIZER
6 namespace collision {
7 namespace serialize {
8 ICollisionObjectExport *exportObject(const collision::RectangleOBB &obb) {
9  return new RectangleOBBExport(obb);
10 }
11 
12 RectangleOBBExport::RectangleOBBExport(const RectangleOBB &rect) {
13  m_fields.local_axis_x_1 = rect.local_x_axis()[0];
14  m_fields.local_axis_x_2 = rect.local_x_axis()[1];
15  m_fields.local_axis_y_1 = rect.local_y_axis()[0];
16  m_fields.local_axis_y_2 = rect.local_y_axis()[1];
17  m_fields.rx = rect.r_x();
18  m_fields.ry = rect.r_y();
19  m_fields.center_x = rect.center()[0];
20  m_fields.center_y = rect.center()[1];
21 }
22 
23 CollisionObject *RectangleOBBExport::loadObject(void) {
24  Eigen::Matrix2d local_axes;
25  local_axes.col(0)[0] = m_fields.local_axis_x_1;
26  local_axes.col(0)[1] = m_fields.local_axis_x_2;
27  local_axes.col(1)[0] = m_fields.local_axis_y_1;
28  local_axes.col(1)[1] = m_fields.local_axis_y_2;
29 
30  return new RectangleOBB(
31  m_fields.rx, m_fields.ry, local_axes,
32  Eigen::Vector2d(m_fields.center_x, m_fields.center_y));
33 }
34 
35 bool RectangleOBBExport::operator()(s11nlite::node_type &dest) const {
36  typedef s11nlite::node_traits TR;
37  TR::class_name(dest, "RectangleOBBExport");
38  TR::set(dest, "rx", m_fields.rx);
39  TR::set(dest, "ry", m_fields.ry);
40  TR::set(dest, "local_axis_x_1", m_fields.local_axis_x_1);
41  TR::set(dest, "local_axis_x_2", m_fields.local_axis_x_2);
42  TR::set(dest, "local_axis_y_1", m_fields.local_axis_y_1);
43  TR::set(dest, "local_axis_y_2", m_fields.local_axis_y_2);
44  TR::set(dest, "cx", m_fields.center_x);
45  TR::set(dest, "cy", m_fields.center_y);
46 
47  return true;
48 }
49 bool RectangleOBBExport::operator()(const s11nlite::node_type &src) {
50  typedef s11nlite::node_traits TR;
51  m_fields.rx = TR::get(src, "rx", double(0));
52  m_fields.ry = TR::get(src, "ry", double(0));
53  m_fields.local_axis_x_1 = TR::get(src, "local_axis_x_1", double(0));
54  m_fields.local_axis_x_2 = TR::get(src, "local_axis_x_2", double(0));
55  m_fields.local_axis_y_1 = TR::get(src, "local_axis_y_1", double(0));
56  m_fields.local_axis_y_2 = TR::get(src, "local_axis_y_2", double(0));
57  m_fields.center_x = TR::get(src, "cx", double(0));
58  m_fields.center_y = TR::get(src, "cy", double(0));
59  return true;
60 }
61 } // namespace serialize
62 } // namespace collision
63 #endif
Oriented rectangle.
Definition: rectangle_obb.h:19
virtual bool operator()(s11nlite::node_type &dest) const
int serialize(const test::BroadphaseFailureCCObj &bf_object, std::ostream &output_stream, const char *format=SERIALIZER_DEFAULT_FORMAT)