Create local coordinate system and update throughout flight

2 Ansichten (letzte 30 Tage)
hologramkazaam
hologramkazaam am 30 Aug. 2021
Beantwortet: darova am 5 Sep. 2021
I am trying to monitor the position of a rocket throughout its trajectory by creating a local coordinate system. I would like it to update throughout the flight. My vector calculus is a bit rusty, so I'm having trouble getting the right angles to get the new axes. Right now, I'm trying to plot the new axes in a crude way, but I would appreciate any help in figuring this out or advice for a better way to do this.
close;
clear;
clc;
t = 0:pi/16:pi;
x = sin(t);
y = cos(t);
z = t;
[m,n] = size(t);
radius = zeros(1,n);
theta = zeros(1,n); % angle from +z axis to vector (zenith)
phi = zeros(1,n); % angle from +x axis to vector projection on xy-plane (azimuth)
rocket_angle = zeros(1,n);
lsm = 0.25; % line size modifier
for i=1:length(x)
plot3(x(i),y(i),z(i),'*r');
%plot3(x(i),y(i),0,'*b'); % vector projection
hold on;
pause(0.01);
radius(i) = sqrt(x(i)^2 + y(i)^2 + z(i)^2);
theta(i) = acosd(z(i)/radius(i)); % global coordinate system
phi(i) = atand(y(i)/x(i)); % global coordinate system
if i > 1
rocket_angle(i) = atand((y(i)-y(i-1))/(x(i)-x(i-1)));
% show rocket x-axis
line([x(i)-lsm*sind(rocket_angle(i)) x(i)+lsm*sind(rocket_angle(i))], [y(i)+lsm*sind(rocket_angle(i)) y(i)-lsm*sind(rocket_angle(i))], [z(i)-lsm*sind(rocket_angle(i)) z(i)+lsm*sind(rocket_angle(i))]);
% show rocket y-axis
% show rocket z-axis (cross product of x and y)
end
end
xlabel('X');
ylabel('Y');
zlabel('Z');
grid on;

Antworten (1)

darova
darova am 5 Sep. 2021
Just find tangent of a trajectory
x = 0:.1:pi;
y = sin(x);
u0 = diff(x); % component of a tangent
v0 = diff(y); % component of a tangent
u1 = u0./hypot(u0,v0); % normalization
v1 = v0./hypot(u0,v0);
line(x,y)
h = line(0,0,'color', 'r');
axis equal
for i = 1:length(x)-1
set(h,'xdata',x(i)+[u1(i) 0 -v1(i)]/2); % tangent and normal
set(h,'ydata',y(i)+[v1(i) 0 u1(i)]/2); % tangent and normal
pause(0.5)
end

Kategorien

Mehr zu Programming finden Sie in Help Center und File Exchange

Produkte


Version

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by