23 double theta =
object->theta;
24 const auto& center =
object->center;
25 double length =
object->size(0);
26 double width =
object->size(1);
28 Eigen::Matrix2d rotation;
29 rotation << cos(theta), -sin(theta), sin(theta), cos(theta);
31 Eigen::Vector2d local_poly(0, 0);
32 Eigen::Vector2d world_poly;
34 object->polygon.resize(4);
37 local_poly(0) = -0.5 * length;
38 local_poly(1) = -0.5 * width;
39 world_poly = rotation * local_poly;
40 object->polygon[0].x = center(0) + world_poly(0);
41 object->polygon[0].y = center(1) + world_poly(1);
42 object->polygon[0].z = center(2);
45 local_poly(1) = +0.5 * width;
46 world_poly = rotation * local_poly;
47 object->polygon[1].x = center(0) + world_poly(0);
48 object->polygon[1].y = center(1) + world_poly(1);
49 object->polygon[1].z = center(2);
52 local_poly(0) = +0.5 * length;
53 world_poly = rotation * local_poly;
54 object->polygon[2].x = center(0) + world_poly(0);
55 object->polygon[2].y = center(1) + world_poly(1);
56 object->polygon[2].z = center(2);
59 local_poly(1) = -0.5 * width;
60 world_poly = rotation * local_poly;
61 object->polygon[3].x = center(0) + world_poly(0);
62 object->polygon[3].y = center(1) + world_poly(1);
63 object->polygon[3].z = center(2);