НАСА имеет 3D-модели многих объектов, включая МКС, , которые можно найти здесь .Этот файл может быть преобразован в STL, как вы хотите, я нашел этот случайный веб-сайт , который работал для меня.
В Matlab вы можете прочитать в этом файле через
stl = stlread('isscombined.stl');
V = stl.Points;
F = stl.ConnectivityList
Затем вы можете построить его, используя
p = patch('vertices',V,'faces',F,'FaceColor',[.8 .8 .8]);
, и затем вы можете обновить объект новыми позициями вершин, когда станция вращается вокруг Земли.Очевидно, вы также можете масштабировать объект, умножая вершины на некоторое количество.Если вы не хотите, чтобы грани фасета были нанесены, вы также можете добавить 'EdgeAlpha', 0
к вашим patch
опциям.
Вот простой пример, который показывает вращение МКС вокруг сферы
% Note: not to scale
ISS_radius = 2; % distance from center of Earth
RE = 1; % radius of earth
theta = 0:.05:2*pi;
x = ISS_radius*cos(theta);
y = ISS_radius*sin(theta);
stl = stlread('isscombined.stl');
r = .01; % scaling factor
V = stl.Points * r;
V = V - mean(V); % center at origin
F = stl.ConnectivityList;
figure; hold on;
plot3(x,y,zeros(numel(theta)),'--');
[X,Y,Z] = sphere(50);
surf(RE*X,RE*Y,RE*Z,'FaceColor',[0 0 .8],'EdgeAlpha',0);
p = patch('Vertices', V*r, 'Faces', F, 'FaceColor', [0 0 0], 'EdgeAlpha', 0);
axis equal;
set(gca,'View',[200 13])
grid on;
counter = 1;
while true
p.Vertices = V + [x(counter), y(counter), 0];
pause(0.01);
drawnow
counter = mod(counter + 1, numel(theta)) + 1;
axis([-1 1 -1 1 -1 1]*ISS_radius*1.2)
end