Re: [eigen] get scaling out of transform?

[ Thread Index | Date Index | More Archives ]

2009/1/22 Jitse Niesen <jitse@xxxxxxxxxxxxxxxxx>:
> On Wed, 21 Jan 2009, Benoit Jacob wrote:
>> There's another way that you can go, suffering again performance-wise
>> from the current lack of fixed-size specializations: use the
>> SelfAdjointEigenSolver.
>> Transform3d t;
>> Matrix3d m = t.linear();
>> SelfAdjointEigenSolver s(m*m.adjoint());
>> Matrix3d scaling = s.operatorSqrt();
> This is numerically a bit dangerous. You lose information when computing the
> product m*m.adjoint(). This may not be that important in this case though,
> because the matrices are small and (I'd guess) the accuracy requirement is
> lax.

I agree. Indeed it wouldn't be a problem here because the matrices are small.

Anyway, the solution that i've used to implement
computeRotationScaling today is using the SVD, not the
SelfAdjointEigenSolver, so I don't need to form this matrix product.


> Jitse

Mail converted by MHonArc 2.6.19+