In rete: http://www.elegio.it/omnia/sv/traiettoria-cubica.html

Come approssimare con una curva continua la traiettoria di una particella accelerata in vario modo

Un modo molto semplice per tracciare curve cubiche

( http://www.elegio.it/mc2/moto-ellittico-201308.html altrimenti per tracciare traiettorie planetarie si possono usare quadriche ossia parabole... )
  1. t == variabile indipendente del polinomio che assume all'inizio del transitorio il valore zero.
  2. U == tempo impiegato dalla particella per andare dall'inizio alla fine della sua traiettoria.
  3. D == da dove parte la particella.
  4. F == dove finisce la particella.
  5. V == velocità iniziale della particella.
  6. W == velocità finale della particella.
  7. La variabile indipendente t varia tra 0 ed U. Se il tempo iniziale non è 0 ma S ed il tempo finale è T , maggiore di S, al posto di U va scritto (T-S) e al posto di t va scritto (u-S) usando u come variabile indipendente.
  8. Ecco il polinomio in funzione della posizione e velocità iniziale e della posizione e velocità finale usando r=t/U in modo che r vari tra 0 ed 1:
    p(r)=D*(1-r)^3+(3*D+V*U)*r*(1-r)^2+(3*F-W*U)*(1-r)*r^2+F*r^3;
    Funzione della traiettoria della particella da r=0 a r=1. Per cui usando esplicitamente i punti di controlla H il primo e K il secondo, si ha questa formula:
    p(r)=D*(1-r)^3+3*H*r*(1-r)^2+3*K*(1-r)*r^2+F*r^3;
  9. Primo punto di controllo:
    H=D+V*U/3;
    in funzione della velocità iniziale da cui si può ricavare la velocità iniziale in funzione del punto iniziale e del primo punto di controllo:
    V=3*(H-D)/U;
  10. Secondo punto di controllo:
    K=F-W*U/3;
    in funzione della velocità finale da cui si può ricavare la velocità finale in funzione del secondo punto di controllo e del punto finale:
    W=3*(F-K)/U;
  11. Notare che anche la velocità varia con continuità tra il valore iniziale della variabile indipendente t=0 oppure u=S e il valore finale della variabile indipendente t=U oppure u=T senza bruschi salti di valore e/o di direzione.
  12. Usando Javascript posso quindi scrivere queste function:

Dunque un tratto cubico di una traiettoria può essere specificato indicando il tempo di arrivo alla fine del tratto, le coordinate del punto di arrivo e le componenti della velocità di arrivo alla fine di ogni tratto cubico. Nel moto bidimensionale, dovendo indicare l'ascissa e l'ordinata, bisogna quindi dare in totale cinque dati per ogni tratto ossia anche le due componenti della velocità finale nella direzione delle ascisse e delle ordinate. Se la traiettoria non ha spigoli ossia brusche variazioni della velocità e della sua direzione, i dati del tratto precedente vanno usati per calcolare i due punti di controllo di ogni tratto.

  1. [ tempo, posx, velx, posy, vely ] : dunque va fatta una funzione che data una array con elementi di questo tipo, calcoli una array di tratti cubici utilizzabile come valore dell'attributo d di un qualche path.
  2. Il risultato dovrà essere una array di 6 numeri, primo punto di controllo, secondo punto di controllo, punto finale e la terna di punti delimitata da un carattere bianco.
  3. Per esempio, sul rettangolo di colore "ivory" largo 1000 ed alto 1250, per fare una curva rossa di tratti cubici ma con vistosi spigoli posso assegnare all'attributo d i seguenti valori:
    d=" M 40 100 
       m 0 10 a 10 10  0 0 0  0 -20 a 10 10  0 0 0  0 20 m 0 -10
       C 800 -150 200 450 700 600 
       m 0 10 a 10 10  0 0 0  0 -20 a 10 10  0 0 0  0 20 m 0 -10
       C 200 900 1100 800 900 1200
       m 0 10 a 10 10  0 0 0  0 -20 a 10 10  0 0 0  0 20 m 0 -10
       C 400 600 300 1500 200 1100
       m 0 10 a 10 10  0 0 0  0 -20 a 10 10  0 0 0  0 20 m 0 -10"
    dove utilizzo la direttiva a per evidenziare con un circolino l'estremo di ogni tratto cubico e traccio anche una spezzata blu di segmenti rettilinei.
Prima applicazione delle direttive C dell'attributo d del path

Quindi ecco le funzioni che applicano le precedenti formule usate per tracciare traiettorie senza spigoli fatte da spezzoni cubici di Bézier.

Esempio di applicazione in grafica SVG delle precedenti formule
Esempio di uso delle direttive cubiche ossia la C assoluta e la c relativa che richiedono tre punti, due di controllo ed uno finale.
...

Con queste funzioni mi sembra che si possa descrivere una qualsiasi traiettoria di un pianeta o di un satellite attorno al Sole...

  1. http://www.elegio.it/omnia/
  2. http://www.elegio.it/svg/tanteparabole.html se si usano parabole.
  3. http://www.elegio.it/svg/precessione-manuale.html altra applicazione di parabole.