3 #include <SimoxUtility/math/convert/rpy_to_mat3f.h>
4 #include <SimoxUtility/math/normal/normal_to_mat4.h>
5 #include <SimoxUtility/math/pose/transform.h>
19 dir = dir.normalized();
20 Eigen::Vector3f naturalDir = Eigen::Vector3f::UnitY();
21 Eigen::Vector3f
cross = naturalDir.cross(dir);
22 float dot = naturalDir.dot(dir);
24 if (
cross.squaredNorm() < 1.0e-12)
27 cross = Eigen::Vector3f::UnitX();
37 Eigen::Vector3f axis =
cross.normalized();
51 const std::string& objectsPackage,
52 const std::string& relativeObjectsDirectory)
60 const std::string& objectsPackage,
61 const std::string& relativeObjectsDirectory)
63 ObjectInfo info(objectsPackage,
"", relativeObjectsDirectory, objectID);
79 Box::set(
const simox::OrientedBoxBase<float>& b)
82 return pose(b.transformation_centered());
86 Box::set(
const simox::OrientedBoxBase<double>& b)
88 size(b.dimensions<
float>());
89 return pose(b.transformation_centered<
float>());
119 Eigen::Vector3f naturalDir = Eigen::Vector3f::UnitZ();
120 Eigen::Vector3f
cross = naturalDir.cross(dir);
121 float angle = std::acos(naturalDir.dot(dir));
122 if (
cross.squaredNorm() < 1.0e-12f)
125 cross = Eigen::Vector3f::UnitX();
128 Eigen::Vector3f axis =
cross.normalized();
139 points.reserve(ps.size());
142 points.push_back(armarx::Vector3f{p.x(), p.y(), p.z()});
152 Eigen::Quaternionf::FromTwoVectors(Eigen::Vector3f::UnitZ(),
plane.normal());
153 return this->
plane(plane.projection(at), ori, size);
159 const Eigen::Vector3f x = 0.5f * size.x() * (
orientation * Eigen::Vector3f::UnitX());
160 const Eigen::Vector3f y = 0.5f * size.y() * (
orientation * Eigen::Vector3f::UnitY());
172 Eigen::Vector3f normal,
174 std::size_t tessellation)
179 const float angle = 2 *
M_PI / tessellation;
182 Eigen::Vector3f lastLocalPoint = Eigen::Vector3f::UnitX() * radius;
183 addPoint(simox::math::transform_position(
pose, lastLocalPoint));
184 while (--tessellation)
186 const Eigen::Vector3f localPoint = rot * lastLocalPoint;
187 addPoint(simox::math::transform_position(
pose, localPoint));
188 lastLocalPoint = localPoint;