将特征向量的绝对值存储到变量中

时间:2016-05-14 12:21:30

标签: c++ eigen pow

我似乎有一个愚蠢问题的问题,因为存储了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)

我试图写入代码的表达式是:

我试图编写的表达式是本文第一个答案解释的表达式。

https://math.stackexchange.com/questions/1784106/how-do-i-compute-the-closest-points-on-a-sphere-given-a-point-outside-the-sphere/1784159#1784159

2 个答案:

答案 0 :(得分:1)

  

如何计算向量绝对值的pow(..,2)?

你可能正在寻找平方的规范。这很简单:

p.squaredNorm();

答案 1 :(得分:0)

使用Eigen回答原始问题“怎样做 - 计算最接近球体给定的点外球体点”:

Vector3d center, P, Q;
double radius;
Q = center + radius * (P-center).normalized()