Sto cercando di trovare l'equazione parametrica della traiettoria di un punto di partenza su diversi punti sulla superficie di una sfera unitaria tale che:traiettoria ottimale sulla superficie di una sfera
- ogni salto è piccolo (pi/4 < d < pi/2) e in un intervallo ristretto, ad es. [1.33, 1.34]
- le visite punto più regioni della sfera modo più rapido e uniforme possibile
- il punto viaggia lungo "vettori di direzione" più diverso possibile
Questo è quello che ho provato
N = 3600; % number of points
t = (1:N) * pi/180; % parameter
theta_sph = sqrt(2) * t * pi; % first angle
phi_sph = sqrt(3) * t * pi; % second angle
rho_sph = 1; % radius
% Coordinates of a point on the surface of a sphere
x_sph = rho_sph * sin(phi_sph) .* cos(theta_sph);
y_sph = rho_sph * sin(phi_sph) .* sin(theta_sph);
z_sph = rho_sph * cos(phi_sph);
% Check length of jumps (it is intended that this is valid only for small jumps!!!)
aa = [x_sph(1:(N-1)); y_sph(1:(N-1)); z_sph(1:(N-1))];
bb = [x_sph(2:N); y_sph(2:N); z_sph(2:N)];
cc = cross(aa, bb);
d = rho_sph * atan2(arrayfun(@(n) norm(cc(:, n)), 1:size(cc,2)), dot(aa, bb));
figure
plot(d, '.')
figure
plot(diff(d), '.')
% Check trajectory on the surface of the sphere
figure
hh = 1;
h_plot3 = plot3(x_sph(hh), y_sph(hh), z_sph(hh), '-');
hold on
axis square
% axis off
set(gca, 'XLim', [-1 1])
set(gca, 'YLim', [-1 1])
set(gca, 'ZLim', [-1 1])
for hh = 1:N
h_point3 = plot3(x_sph(hh), y_sph(hh), z_sph(hh), ...
'o', 'MarkerFaceColor', 'r', 'MarkerEdgeColor', 'r');
drawnow
delete(h_point3)
set(h_plot3, 'XData', x_sph(1:hh))
set(h_plot3, 'YData', y_sph(1:hh))
set(h_plot3, 'ZData', z_sph(1:hh))
end
EDIT -> qualcuno può trovare una traiettoria più regolare, forse che copre la sfera più velocemente (cioè con il minor numero di salti) e più uniforme? Traiettoria regolare, nel senso che dovrebbe cambiare direzione senza intoppi, non bruscamente. La bellezza estetica è un bonus. I punti dovrebbero essere distribuiti sulla superficie della sfera nel modo più uniforme possibile.
Potete chiarire ulteriormente i criteri? In particolare i punti 2 e 3, e anche cosa intendi per "normale" e "uniforme" alla fine? – aganders3
Uniforme significa che i punti dovrebbero essere sparsi su tutta la superficie della sfera, i più lontani tra loro (questo può essere misurato bene). In modo improprio, ovviamente, proprio come un'intuizione generica: per traiettoria normale intendevo una traiettoria che non cambia troppo, cioè dovrebbe cambiare direzione senza intoppi, non bruscamente. E se è esteticamente gradevole, questo è un bonus :-) –
Puoi chiarire il punto 3?Se lo ignoro, mi aspetto che una spirale lungo la sfera (che è il percorso che stai utilizzando) sia ottimale. Basta regolare il numero di giri completi che l'angolo polare attraversa per controllare la dimensione e la copertura del salto. Se controlli la velocità polare puoi "barcollare" i tuoi punti in modo che non cadano tutti sulle stesse linee di latitudine poiché sembra che tu sia più preoccupato per la copertura del "punto" rispetto alla traiettoria continua. – kalhartt