Go to the documentation of this file.
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;
Polygon & points(std::vector< Eigen::Vector3f > const &ps)
A known object ID of the form "Dataset/ClassName" or "Dataset/ClassName/InstanceName".
static const std::string DefaultObjectsPackageName
Cylinder & fromTo(Eigen::Vector3f from, Eigen::Vector3f to)
Object & fileByObjectFinder(const armarx::ObjectID &objectID, const std::string &objectsPackage=DefaultObjectsPackage, const std::string &relativeObjectsDirectory=DefaultRelativeObjectsDirectory)
Set the file so it could be found using armarx::ObjectFinder (also on remote machine).
MatrixXX< 4, 4, float > Matrix4f
Object & file(std::string const &project, std::string const &filename)
state::Type from(Eigen::Vector3f targetPosition)
Cylinder & height(float h)
ArrowCircle & normal(Eigen::Vector3f dir)
IceInternal::Handle< data::ElementPolygon > data_
Object & alpha(float alpha)
static Eigen::Quaternionf directionToQuaternion(Eigen::Vector3f dir)
static const std::string DefaultRelativeObjectsDirectory
Cylinder & position(float x, float y, float z)
Cylinder & direction(Eigen::Vector3f direction)
Eigen::Matrix4f pose() const
Polygon & addPoint(Eigen::Vector3f p)
Hyperplane< float, 3 > Hyperplane3f
Cylinder & orientation(Eigen::Quaternionf const &ori)
Arrow & direction(Eigen::Vector3f dir)
Polygon & plane(Eigen::Hyperplane3f plane, Eigen::Vector3f at, Eigen::Vector2f size)
Add points representing a plane as rectangle.
Point cross(const Point &x, const Point &y)
Object & overrideColor(Color c)
#define ARMARX_CHECK_GREATER_EQUAL(lhs, rhs)
This macro evaluates whether lhs is greater or equal (>=) rhs and if it turns out to be false it will...
Polygon & circle(Eigen::Vector3f center, Eigen::Vector3f normal, float radius, std::size_t tessellation=64)
PackageFileLocation simoxXML() const
std::string package
Name of the ArmarX package.
Box & size(Eigen::Vector3f const &s)
state::Type center(state::Type previous)
double dot(const Point &x, const Point &y)
double angle(const Point &a, const Point &b, const Point &c)
static const std::string DefaultObjectsPackage
MatrixXX< 3, 3, float > Matrix3f
Box & set(const simox::OrientedBoxBase< float > &b)
This file is part of ArmarX.
This file offers overloads of toIce() and fromIce() functions for STL container types.
static const std::string DefaultObjectsDirectory
Accessor for the object files.
double norm(const Point &a)