本文整理汇总了C++中eigen::MatrixBase::normalize方法的典型用法代码示例。如果您正苦于以下问题:C++ MatrixBase::normalize方法的具体用法?C++ MatrixBase::normalize怎么用?C++ MatrixBase::normalize使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类eigen::MatrixBase
的用法示例。
在下文中一共展示了MatrixBase::normalize方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: makeCoordinateSystem
inline void makeCoordinateSystem(Eigen::MatrixBase<Derived>& v1,
Eigen::MatrixBase<DerivedOther1>& v2,
Eigen::MatrixBase<DerivedOther2>& v3)
{
EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(Derived, 3);
EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(DerivedOther1, 3);
EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(DerivedOther2, 3);
/*ASSERTMSG( v1.rows() == 3 && v1.cols()==1 &&
v2.rows() == 3 && v2.cols() == 1 &&
v3.rows() == 3 && v3.cols() == 1
, "IN: "<< v1.rows()<<","<<v1.cols()<<" OUT: "<<
v2.rows()<<","<<v2.cols()<<"/"<<v3.rows()<<","<<v3.cols() );*/
typedef typename Derived::Scalar PREC;
using std::abs;
using std::sqrt;
v1.normalize();
if (abs(v1(0)) > abs(v1(2)))
{
PREC invLen = 1.0 / sqrt(v1(0) * v1(0) + v1(2) * v1(2));
v2 = typename MyMatrix<double>::Vector3(-v1(2) * invLen, 0, v1(0) * invLen);
}
else
{
PREC invLen = 1.0 / sqrt(v1(1) * v1(1) + v1(2) * v1(2));
v2 = typename MyMatrix<double>::Vector3(0, v1(2) * invLen, -v1(1) * invLen);
}
v3 = v1.cross(v2);
v2.normalize();
v3.normalize();
};