% Plot einer Bewegung mit konstanter Geschwindigkeit entlang eines
% Meridians einer Kugel die sich mit konstante Geschwindigkeit dreht.

clear
close all

% Definition und Zeichnen der KugelflŠche 
% Netz aller LŠngen- und Breitenwinkel auf der Kugel.

% Radius der Kugel:
r = 1;

% Vektor aller Breitenwinkel des Netzes
phi_vec   = 0:pi/80:2*pi;
theta_vec = 0:pi/90:pi;

% Matrizen der phi- und theta Werte
[Phi,Theta] = meshgrid(phi_vec,theta_vec);

% Matrizen der x,y und z-Koordinaten der Punkte am Gitternetz

X = r * cos(Phi) .* sin(Theta);
Y = r * sin(Phi) .* sin(Theta);
Z = r * cos(Theta);

figure(1)
clf

hold on

% Fläche zeichnen
surf(X,Y,Z,'FaceColor',[0.95 0.6 0.2],'LineStyle','none','FaceAlpha',0.7)
light
axis equal

% Gitter zeichnen
Xgitter = X(1:3:91,1:8:161);
Ygitter = Y(1:3:91,1:8:161);
Zgitter = Z(1:3:91,1:8:161);

mesh(Xgitter,Ygitter,Zgitter,...
    'EdgeColor','black','FaceAlpha',0)
view([1 -0.1 0.8])


omega = 2;
alpha = 5;
delta_t = 0.01;

t_vec = 0:0.01:4;
laengen_vec = omega * t_vec;
breiten_vec = alpha * t_vec;

x_vec = r * cos(laengen_vec) .* cos(breiten_vec);
y_vec = r * sin(laengen_vec) .* cos(breiten_vec);
z_vec = r * sin(breiten_vec);


plot3(x_vec(1),y_vec(1),z_vec(1),'Color','blue','LineWidth',2,'Marker','o','Markersize',7);
p = plot3(x_vec(1),y_vec(1),z_vec(1),'Color','red','Erasemode','xor','LineWidth',2,'Marker','+','Markersize',7);

for k = 2:length(t_vec)
    
    set(p,'Xdata',x_vec(k),'Ydata',y_vec(k),'Zdata',z_vec(k));

    drawnow
    pause(0.001);    
    
    plot3([x_vec(k-1),x_vec(k)],[y_vec(k-1),y_vec(k)],[z_vec(k-1),z_vec(k)],...
        'Color','red','Linewidth',2);


end
