Hi everyone,
I have a matrix A [100x3] which represents the coordinates of a cilinder oriented in the space. I have calculated the center of this cylinder by doing C=Mean(A).
My question is how can i rotate the cylinder in order to have origin of the xyz axis in the point C?
Any help would be appreciated,
Lorenzo

답변 (1개)

William
William 2021년 1월 16일

0 개 추천

Lorenzo -- If all you need is to have the center of the cylinder located at the origin of the coordinate system, then what you need is a translation, not a rotation. It would go something like this:
C = mean(A);
Cnew = A - repmat(C,100,1);
If you also needed the cylinder axis to be aligned with one of the coordinate axes, then a rotation would be needed.

댓글 수: 3

Starting from R2016b you can use
C = mean(A);
Cnew = A - C;
Lorenzo Bennati
Lorenzo Bennati 2021년 1월 16일
@William @Walter Roberson thank you for your answer.
The last question is exactly how could i do if i want the cylinder axis be aligned with one of the z axis.
Thank you again
Walter Roberson
Walter Roberson 2021년 1월 16일
You have an N x 3 array. You can post-multiply it with a 3 x 3 rotation array.
If you pad the N x 3 with a column of zeros, then you can create a 4 x 4 rotation and translation array using makehgtform() https://www.mathworks.com/help/matlab/ref/makehgtform.html
You can use pca() to determine the angles the data currently points. https://www.mathworks.com/help/stats/pca.html . You would probably have to convert the norm into a rotation angle. Remember to use the negative of the current angle to rotate back to the axis.

댓글을 달려면 로그인하십시오.

카테고리

질문:

2021년 1월 15일

댓글:

2021년 1월 16일

Community Treasure Hunt

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

Start Hunting!

Translated by