How to apply affine transformation or simple rotation on n points?
6 次查看(过去 30 天)
显示 更早的评论
Can any one help me to apply random rotation (from 1 degree to 360 degree) on the following points :
I tried the following option but failed to generate the rotation scenario.
theta =90;
R=[cosd(theta) -sind(theta) 0 ;
sind(theta) cosd(theta) 0;
0 0 1];
P= [ 0 0 0;
15 0 0;
30 0 0;
45 0 0;
60 0 0];
rotpoint =P*R;
0 个评论
采纳的回答
Image Analyst
2020-1-24
Try it this way:
theta = 360 * rand;
rotationMatrix = [cosd(theta) -sind(theta) 0 ;
sind(theta) cosd(theta) 0;
0 0 1];
initialPoints = [ 0 0 0;
15 0 0;
30 0 0;
45 0 0;
60 0 0];
plot3(initialPoints(:, 1), initialPoints(:, 2), initialPoints(:, 3), 'b.', 'MarkerSize', 30);
hold on;
rotatedPoints = initialPoints * rotationMatrix
plot3(rotatedPoints(:, 1), rotatedPoints(:, 2), rotatedPoints(:, 3), 'r.', 'MarkerSize', 30);
grid on;
xlabel('X', 'FontSize', 20);
ylabel('Y', 'FontSize', 20);
zlabel('Z', 'FontSize', 20);
caption = sprintf('The initial points have been rotated by %.2f degrees', theta);
title(caption, 'FontSize', 20);
legend('Initial', 'Rotated');
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Specialized Messages 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!