Deriving rotation angle from the eigenvectors

For an ellipsoid, how can I get the rotation angle from the eigenvectors?

3 comentarios

James Tursa
James Tursa el 15 de Oct. de 2019
Please give more details. The rotation angle from what to what? Are you looking for a single angle of some type, or a 3D rotation, or ...?
Sophie Wuerger
Sophie Wuerger el 15 de Oct. de 2019
Editada: Matt J el 15 de Mzo. de 2022
I think I just found the solution for the 3d rotation.
[center,radii,ecvecs,v,chi2]=ellipsoid_fit(dat,'');
[x, y, z] = ellipsoid(center(1), center(2),center(3), radii(1),radii(2),radii(3),30);
S=surf(x, y, z,'FaceAlpha', 0.3, 'EdgeColor', 'none', 'FaceLighting', 'gouraud')
.....
theta1 = -asind(R(3,1)); % y-axis
psi1 = atan2d(R(3,2)/cos(theta1),R(3,3)/cos(theta1)); % x-axis
phi1 = atan2d(R(2,1)/cos(theta1),R(1,1)/cos(theta1)); % z-axis
direction = [1 0 0]; %
rotate(S,direction,psi1,center)
direction = [0 1 0];
rotate(S,direction,theta1,center)
direction = [0 0 1];
rotate(S,direction,phi1,center)
Does that look allright?
Is there an easy way to obtain the projection onto the axes?
best
sophie
Qingda Hu
Qingda Hu el 15 de Mzo. de 2022
Probably too late but I was trying to use the same ellipsoid_fit function
If you linearize x,y,z and just multiple it by the evecs you get what you want
[center, radii, evecs, pars ] = ellipsoid_fit_new(... );
[X,Y,Z] = ellipsoid(0,0,0,radii(1),radii(2),radii(3));
Xlin = X(:);
Ylin = Y(:);
Zlin = Z(:);
rotatedXYZ = [Xlin,Ylin,Zlin]*evecs';
X = reshape( rotatedXYZ(:,1),size(X));
Y = reshape( rotatedXYZ(:,2),size(X));
Z = reshape( rotatedXYZ(:,3),size(X));
surf(X,Y,Z);
(you can translate it as well)
Hopefully this is useful for someone.

Iniciar sesión para comentar.

Respuestas (1)

Matt J
Matt J el 15 de Mzo. de 2022
Editada: Matt J el 15 de Mzo. de 2022
If you download ellipsoidalFit() to do the fitting, the yaw-pitch-roll angles are avaialble directly from the object,
>> load data
>> fitobj=ellipsoidalFit(xyz)
fitobj =
ellipsoidalFit with properties:
center: [5.0483 2.0378 7.0195]
a: 20.0700
b: 10.0469
c: 4.9622
yaw: 39.6951
pitch: -29.7995
roll: 50.4333

Preguntada:

el 15 de Oct. de 2019

Editada:

el 15 de Mzo. de 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by