2016-05-14 11 views
0

に保存するEigen vector3dの絶対値を格納するというばかげた問題には問題があるようです。固有ベクトルの絶対値を変数

pow(p.cwiseAbs(),2)を計算しますが、p.cwiseAbs()は2倍ではないため、関数呼び出しは機能しません。私はそれを変数に格納しようとしました..しかし、どういうわけか、それは可能ではないようです..

ex。

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

は、元の質問に答えるために、 "どのように-DO-I-計算-最も近いポイント・オン球与え-点-外球" を使用して固有値:

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

どのように私はベクトルの絶対値の(2、...)POWを計算していますか?

おそらく、平方根を求めているでしょう。それは単にある:

p.squaredNorm(); 
+0

むしろ、平方根の平方根。 –

関連する問題