2016-05-14 1 views
0

Кажется, у меня проблема с глупой проблемой, сохраняющей абсолютное значение Eigen vector3d.Хранение абсолютного значения собственного вектора в переменной

Я хочу вычислить pow(p.cwiseAbs(),2), но так как p.cwiseAbs() не является двойным, вызов функции не работает. Затем я попытался сохранить его в переменной .. но почему-то это не представляется возможным.

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

Чтобы ответить на исходный вопрос «как делать-я-вычислительный на-близкие-точка-на-а-сфера-Given-а-точка-вне-сфера», используя Eigen:

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

Как я вычислить Pow (.., 2) абсолютного значения вектора?

Возможно, вы ищете квадратную норму. Это просто:

p.squaredNorm(); 
+0

Скорее квадратный корень квадрата нормы. –