我似乎有一个愚蠢问题的问题,因为存储了Eigen vector3d的绝对值。
我想计算pow(p.cwiseAbs(),2)
,但由于p.cwiseAbs()
不是double,因此函数调用不起作用。然后我试图将它存储到一个变量..但不知何故它似乎不可能..
离。
double p_abs = p.cwiseAbs();
错误讯息:
error: cannot convert ‘const Eigen::CwiseUnaryOp<Eigen::internal::scalar_abs_op<double>, const Eigen::Matrix<double, 3, 1> >’ to ‘double’ in initialization
double p_abs = p.cwiseAbs();
如何计算向量绝对值的pow(..,2)
?
我试图写入代码的表达式是:
我试图编写的表达式是本文第一个答案解释的表达式。
答案 0 :(得分:1)
如何计算向量绝对值的pow(..,2)?
你可能正在寻找平方的规范。这很简单:
p.squaredNorm();
答案 1 :(得分:0)
使用Eigen回答原始问题“怎样做 - 计算最接近球体给定的点外球体点”:
Vector3d center, P, Q;
double radius;
Q = center + radius * (P-center).normalized()