How can I plot a 3D point and rotate it 180 degrees along one axis using the code I provided? I show reference image of what I want to achieve.

7 visualizzazioni (ultimi 30 giorni)
figure(1)
hold on
%grados de rotacion de cada eje
%solo en el eje y
for x=0:1:60
y=x*2;
z=0;
pause(.001)
o=[x,y,z];
o=o*(pi/60);
x=o(1);y=o(2);z=o(3);
A=[cos(y),0,-sin(y);0 1,0;sin(y),0,cos(y)];%%Rotacion en Y
B=[1,0,0;0,cos(x),sin(x);0,-sin(x),cos(x)];%%Rotacion en X
C=[cos(z),sin(z),0;-sin(z),cos(z),0;0,0,1];%%Rotacion en Z
U=A*B*C;
%%
Ci=[5,5,0]';
Cf=U*Ci;
Q=[0,0,0;Cf';0,0,0;Ci'];
hold on
plot3(Q(:,1),Q(:,2),Q(:,3),'black')
scatter3(Cf(1),Cf(2),Cf(3),'r')
view(90,0)
scatter3(Ci(1),Ci(2),Ci(3),100,'b','filled')
plot3([0,10,0,-10,0,0,0,0,0,0,0,0],...
[0,0,0,0,0,10,0,-10,0,0,0,0],[0,0,0,0,0,0,0,0,0,10,0,-10],'b')
scatter3(10,0,0,'g')%%Eje X
scatter3(0,10,0,'c')%%Eje Y
scatter3(10,0,10,'m')%%Eje Z
end
scatter3(Cf(1),Cf(2),Cf(3),100,'b','filled')
for i=1:8
text(Cf(1)+i,Cf(2),Cf(3),['P_{final}',num2str(i)],'VerticalAlignment','top')
hold off
end
Ci=[5,5,0]';
pitch_calc = -asin(Cf(3)*Ci(2))
pitch_calc = 9.1849e-15
yaw_calc = asind((Cf(3)*Ci(1))/cosd(real(pitch_calc)))
yaw_calc = -5.2625e-13
roll_calc = asind((Cf(1)*Ci(2))/cosd(real(pitch_calc)))
roll_calc = 9.0000e+01 - 2.2412e+02i

Risposte (1)

Rangesh
Rangesh il 5 Ott 2023
Modificato: Rangesh il 5 Ott 2023
Hello Martin,
I see that you're interested in rotating a 3D point along any axis. Here is the code that demonstrates how to achieve this:
figure(1)
hold on
%grados de rotacion de cada eje
%solo en el eje y
for x=0:5:180
%% Changes made in the given code
pause(.001)
Ci=[5,5,0]';
R=rotx(x);
Cf=R*Ci;
%%
Q=[0,0,0;Cf';0,0,0;Ci'];
hold on
plot3(Q(:,1),Q(:,2),Q(:,3),'black')
scatter3(Cf(1),Cf(2),Cf(3),'r')
view(90,0)
scatter3(Ci(1),Ci(2),Ci(3),100,'b','filled')
plot3([0,10,0,-10,0,0,0,0,0,0,0,0],...
[0,0,0,0,0,10,0,-10,0,0,0,0],[0,0,0,0,0,0,0,0,0,10,0,-10],'b')
scatter3(10,0,0,'g')%%Eje X
scatter3(0,10,0,'c')%%Eje Y
scatter3(10,0,10,'m')%%Eje Z
end
scatter3(Cf(1),Cf(2),Cf(3),100,'b','filled');
for i=1:8
text(Cf(1)+i,Cf(2),Cf(3),['P_{final}',num2str(i)],'VerticalAlignment','top');
hold off;
end
  • Here, I utilized the function "rotx" to generate a rotation matrix with a specified angle along the x-axis.
  • "Cf" represents the position of the point "Ci" after applying the rotation matrix.
  • Please note that I modified the loop to iterate based on degrees.
  • If you wish to rotate along any other axis, you can utilize functions such as "roty" and "rotz".
You can refer to the following documentation and link to understand the rotation of points:
I hope this resolves your query.
Thanks,
Rangesh.

Categorie

Scopri di più su Graphics Performance in Help Center e File Exchange

Prodotti


Release

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by