How rotate a cylinder?
조회 수: 16 (최근 30일)
이전 댓글 표시
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
댓글 수: 0
답변 (1개)
William
2021년 1월 16일
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
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.
참고 항목
카테고리
Help Center 및 File Exchange에서 Surface and Mesh Plots에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!