- /
-
Space journey
on 25 Oct 2024
- 20
- 171
- 0
- 2
- 1962
Cite your audio source here (if applicable):
drawframe(1);
Write your drawframe function below
function drawframe(frame)
% Set up the figure
clf;
set(gcf, 'Color', 'black');
axis([-10 10 -10 10]);
axis equal;
hold on;
% Time variables
t = frame/8; % Smooth time progression
% Draw stars (twinkling effect)
numStars = 100;
starX = 20 * rand(numStars, 1) - 10;
starY = 20 * rand(numStars, 1) - 10;
starBrightness = 0.3 + 0.7 * rand(numStars, 1) + 0.2 * sin(t + rand(numStars, 1) * 2 * pi);
scatter(starX, starY, 20, [starBrightness starBrightness starBrightness], 'filled');
% Draw planet
theta = linspace(0, 2*pi, 100);
planetRadius = 3;
planetX = planetRadius * cos(theta);
planetY = planetRadius * sin(theta);
% Planet rotation and color variation
rotationOffset = t/2;
planetColor = [0.4 + 0.2*sin(t/2), 0.6 + 0.2*cos(t/3), 0.8];
fill(planetX, planetY, planetColor);
% Draw atmospheric rings
for ring = 1:3
ringRadius = planetRadius + 0.3*ring;
ringX = ringRadius * cos(theta);
ringY = ringRadius * sin(theta);
plot(ringX, ringY, 'Color', [1 1 1 0.2], 'LineWidth', 1);
end
% Draw orbiting satellite
satellitePos = t * 2;
orbitRadius = 5;
satelliteX = orbitRadius * cos(satellitePos);
satelliteY = orbitRadius * sin(satellitePos);
% Satellite trail
trailLength = 20;
trailTheta = linspace(satellitePos-pi/4, satellitePos, trailLength);
trailX = orbitRadius * cos(trailTheta);
trailY = orbitRadius * sin(trailTheta);
for i = 1:length(trailTheta)
alpha = i/length(trailTheta);
plot(trailX(i), trailY(i), '.', 'Color', [1 1 1 alpha], 'MarkerSize', 5);
end
% Draw satellite
rectangle('Position', [satelliteX-0.3 satelliteY-0.3 0.6 0.6], ...
'Curvature', [1 1], 'FaceColor', 'white');
% Solar flares (random bursts)
numFlares = 5;
for i = 1:numFlares
flareAngle = 2*pi * rand() + t;
flareLength = 1 + 0.5*sin(t*2 + i);
flareX = [0 flareLength*cos(flareAngle)] + planetRadius*cos(flareAngle);
flareY = [0 flareLength*sin(flareAngle)] + planetRadius*sin(flareAngle);
plot(flareX, flareY, 'Color', [1 0.8 0 0.5], 'LineWidth', 2);
end
% Text overlay
if frame < 24 % First 3 seconds
text(0, 8, 'Space Journey', 'Color', 'white', ...
'FontSize', 14, 'HorizontalAlignment', 'center');
elseif frame > 72 % Last 3 seconds
text(0, -8, 'The End', 'Color', 'white', ...
'FontSize', 14, 'HorizontalAlignment', 'center');
end
% Keep axis off for clean look
axis off;
end
% To create the movie (96 frames = 12 seconds at 8 fps):
function createMovie()
figure('Position', [100 100 800 800]);
movie = struct('cdata', [], 'colormap', []);
for frame = 1:96
drawframe(frame);
movie(frame) = getframe(gcf);
end
% Play the movie
movie(gcf, movie, 1, 8); % Play once at 8 fps
end