2016-05-14 106 views
0

我似乎有一個愚蠢的問題,因爲存儲特徵向量3d的絕對值的問題。將特徵向量的絕對值存儲到變量中

我想計算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

+0

你是什麼意思的「不行」?編譯器錯誤?變量中的值不正確?或者是什麼? –

+0

根據文檔判斷,這可能是類型不匹配。你確定'cwiseAbs'的返回值可以轉換爲'double'嗎? 'auto p_abs = p.cwiseAbs();'工作嗎? –

+0

直到你告訴我們什麼「不起作用」的意思。 –

回答

0

要回答原來的問題 「怎麼辦-I-計算最最接近的點上,一個球賦予-A-點外的球」 使用Eigen:

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

我如何計算矢量的絕對值的POW(..,2)?

您可能正在尋找方形標準。這無非是:

p.squaredNorm(); 
+0

相反平方規範的平方根。 –