12 #include <Eigen/Dense>
20 Point3d const& pb,
double& lambda,
double& d0)
22 auto const a = Eigen::Map<Eigen::Vector3d const>(pa.
getCoords());
23 auto const b = Eigen::Map<Eigen::Vector3d const>(pb.
getCoords());
24 auto const p = Eigen::Map<Eigen::Vector3d const>(pp.
getCoords());
27 Eigen::Vector3d
const v = b - a;
32 lambda = (((
p - a).transpose() * v) / v.squaredNorm())(0, 0);
35 Eigen::Vector3d
const proj_pnt = a + lambda * v;
37 d0 = (proj_pnt - a).
norm();
39 return (
p - proj_pnt).norm();
44 auto const a = Eigen::Map<Eigen::Vector3d const>(p0.
getCoords());
45 auto const b = Eigen::Map<Eigen::Vector3d const>(p1.
getCoords());
46 auto const c = Eigen::Map<Eigen::Vector3d const>(p2.
getCoords());
47 Eigen::Vector3d
const v0 = a - b;
48 Eigen::Vector3d
const v1 =
c - b;
51 return std::acos(v0.dot(v1) / (v0.norm() * v1.norm()));
Definition of the Point3d class.
const T * getCoords() const
double norm(MatrixOrVector const &x, MathLib::VecNormType type)
double calcProjPntToLineAndDists(Point3d const &pp, Point3d const &pa, Point3d const &pb, double &lambda, double &d0)
double getAngle(Point3d const &p0, Point3d const &p1, Point3d const &p2)