本文整理汇总了C++中Matrix2::MakeRotation方法的典型用法代码示例。如果您正苦于以下问题:C++ Matrix2::MakeRotation方法的具体用法?C++ Matrix2::MakeRotation怎么用?C++ Matrix2::MakeRotation使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Matrix2
的用法示例。
在下文中一共展示了Matrix2::MakeRotation方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: mNumPoints
EllipseFit2<Real>::EllipseFit2 (int numPoints, const Vector2<Real>* points,
Vector2<Real>& center, Matrix2<Real>& rotate, Real diag[2],
Real& error)
:
mNumPoints(numPoints),
mPoints(points)
{
// Energy function is E : R^5 -> R where
// V = (V0, V1, V2, V3, V4)
// = (D[0], D[1], U.X(), U.Y(), atan2(R[1][0],R[1][1])).
mTemp = new1<Vector2<Real> >(numPoints);
MinimizeN<Real> minimizer(5, Energy, 8, 8, 32, this);
InitialGuess(numPoints, mPoints, center, rotate, diag);
Real angle = Math<Real>::ACos(rotate[0][0]);
Real e0 = diag[0]*Math<Real>::FAbs(rotate[0][0]) +
diag[1]*Math<Real>::FAbs(rotate[0][1]);
Real e1 = diag[0]*Math<Real>::FAbs(rotate[1][0]) +
diag[1]*Math<Real>::FAbs(rotate[1][1]);
Real v0[5] =
{
((Real)0.5)*diag[0],
((Real)0.5)*diag[1],
center.X() - e0,
center.Y() - e1,
(Real)0
};
Real v1[5] =
{
((Real)2)*diag[0],
((Real)2)*diag[1],
center.X() + e0,
center.Y() + e1,
Math<Real>::PI
};
Real vInitial[5] =
{
diag[0],
diag[1],
center.X(),
center.Y(),
angle
};
Real vMin[5];
minimizer.GetMinimum(v0, v1, vInitial, vMin, error);
diag[0] = vMin[0];
diag[1] = vMin[1];
center.X() = vMin[2];
center.Y() = vMin[3];
rotate.MakeRotation(vMin[4]);
delete1(mTemp);
}