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... )
t
== variabile indipendente del polinomio che assume all'inizio del transitorio il valore zero.U
== tempo impiegato dalla particella per andare dall'inizio alla fine della sua traiettoria.D
== da dove parte la particella.F
== dove finisce la particella.V
== velocità iniziale della particella.W
== velocità finale della particella.- La variabile indipendente
t
varia tra0
edU
. Se il tempo iniziale non è 0 maS
ed il tempo finale èT
, maggiore diS
, al posto diU
va scritto(T-S)
e al posto dit
va scritto(u-S)
usandou
come variabile indipendente.- Ecco il polinomio in funzione della posizione e velocità iniziale e della posizione e velocità finale usando
r=t/U
in modo cher
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 dar=0
ar=1
. Per cui usando esplicitamente i punti di controllaH
il primo eK
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;
- 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
;- 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
;- Notare che anche la velocità varia con continuità tra il valore iniziale della variabile indipendente
t=0
oppureu=S
e il valore finale della variabile indipendentet=U
oppureu=T
senza bruschi salti di valore e/o di direzione.- 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.
[ 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'attributod
di un qualchepath
.- 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.
- 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 direttivaa
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 pathQuindi ecco le funzioni che applicano le precedenti formule usate per tracciare traiettorie senza spigoli fatte da spezzoni cubici di Bézier.
Con queste funzioni mi sembra che si possa descrivere una qualsiasi traiettoria di un pianeta o di un satellite attorno al Sole...
- http://www.elegio.it/omnia/
- http://www.elegio.it/svg/tanteparabole.html se si usano parabole.
- http://www.elegio.it/svg/precessione-manuale.html altra applicazione di parabole.