我不能这样做:
Vector2i vec(0, 1, 2);
cout << vec.norm() << endl;
Run Code Online (Sandbox Code Playgroud)
因为它给出了一个编译器错误,其中提到:THIS_FUNCTION_IS_NOT_FOR_INTEGER_NUMERIC_TYPES在一些失败的断言中。
我可以做:
Vector2i i_vec(0, 1, 2);
Vector2f f_vec;
f_vec = i_vec.cast<float>();
cout << f_vec.norm() << endl;
Run Code Online (Sandbox Code Playgroud)
这显然有效。
norm问题:没有为 定义该方法的任何原因吗VectorXi?
也许 Eigen 使用 的元素类型Vector来确定 的返回类型norm()(在这种情况下,norm()不会为 的返回类型定义是有意义的int)?
只是好奇。
如果我norm()正确地记得函数的操作,它会取某些输入的平方根。显然,平方根在许多情况下不是整数。另一方面,如果我记得 eigen 包的逻辑,一旦声明了特定元素的矩阵 ( int, double, complex<double>),它就仅适用于这种类型的元素。所以你的建议是完全正确的。
| 归档时间: |
|
| 查看次数: |
12793 次 |
| 最近记录: |