In rete: http://www.elegio.it/svg/tanteparabole.html
Impostazione filosofica
Vedere il sorgente Javascript traiettoria-precisa.js.html
- La traiettoria deve passare per i punti calcolati ( magari con un qualche algoritmo tipo Runge Kutta http://www.elegio.it/calcolatrice/nuova-dormand-prince.html , http://www.elegio.it/mc2/jacobi/2009-runge-kutta-nystrom-0.htm ).
- Dati quattro punti consecutivi uso la prima coppia e la seconda coppia per definire la posizione e la direzione della tangente alla traiettoria.
- Dato che uso veramente come punto sulla traiettoria solo il primo e il terzo punto della quaterna, posso usare il secondo ed il quarto o come punto a distanza arbitraria che individua le due tangenti rettilinee oppure posso scrivere come secondo e quarto punto le velocità possedute dal punto quando era nel primo e nel terzo punto. Posso cambiare l'uso dei quattro punti modificando funzioni che ho tenute esterne all'algoritmo e che servono a selezionare i dati bidimensionali che concretamente l'algoritmo usa per tracciare il disegno.
Notare che un unico vettore di punti può contenere traiettorie di diversi punti separati da dati che non sono di natura vettoriale ossia danno false al test Array.isArray(P[k]) dove P è il vettore-lista che contiene tutti i punti, essendo P[k] l'eventuale k_esimo, del sistema considerato e da visualizzare.
Ecco i risultati che ottengo con questo documento
La traiettoria viene cambiata dopo qualche secondo con ridefinizione dei punti in modo random.
Per disegnare coppie di archi di parabola
1)Esempio ,Punto ,-320,20,Punto ,230,20,Punto ,130,3084,Punto ,372,2363,Punto ,686,1727,Punto ,781,1771,Punto ,1611,461,Punto ,916,2799,Punto ,4896,2067,Punto ,4985,1893,Salto ,Punto ,3104,2251,Punto ,3034,1875,Punto ,913,1900,Punto ,368,358,Salto ,Punto ,1883,223,Punto ,2296,237,Punto ,1996,2125,Punto ,53,2173,Punto ,476,1882,Punto ,554,464,Punto ,381,479,Punto ,1171,663,Punto ,5186,178,Punto ,5148,-187
Senza delimitare le traiettorie : M -320 20 Q 454 20 169 1919 -116.5 3818 130 3084 246.5 2736.5 300 2154.5 353.5 1573 686 1727 1041.5 1891.5 1382 988.5 1722.5 85.5 1611 461 1350.5 1337 2915 2109 4479.5 2881 4896 2067 M 3104 2251 Q 3002.5 1705.5 2050 2064.5 1098 2423 913 1900 M 1883 223 Q 2359 239 2415.5 1176 2472 2113 1996 2125 1611.5 2134.5 1033 2200.5 455 2266 476 1882 495.5 1531 267 965 38.5 399.5 381 479 1553 752 3432 1063.5 5310.5 1375 5186 178
Passa questa curva al path: M 517.5 0 Q 925 0 775 1000 624.5 2000 754.5 1613.5 816 1430.5 844 1124 872 818 1047 899 1234.5 985.5 1414 510 1593 34.5 1534.5 232 1397 693.5 2221 1100 3045 1506.5 3264 1078 M 2320.5 1175 Q 2267 887.5 1765.5 1076.5 1264 1265.5 1167 990 M 1677.5 107 Q 1928.5 115.5 1958 609 1988 1102.5 1737 1108.5 1534.5 1113.5 1230 1148 925.5 1183 936.5 980.5 947 795.5 826.5 497.5 706.5 199.5 886.5 241.5 1504 385.5 2493 549.5 3482.5 713.5 3417 83
Idem ma data come spezzata: M 517.5 0 L 925 0 775 1000 624.5 2000 754.5 1613.5 816 1430.5 844 1124 872 818 1047 899 1234.5 985.5 1414 510 1593 34.5 1534.5 232 1397 693.5 2221 1100 3045 1506.5 3264 1078 M 2320.5 1175 L 2267 887.5 1765.5 1076.5 1264 1265.5 1167 990 M 1677.5 107 L 1928.5 115.5 1958 609 1988 1102.5 1737 1108.5 1534.5 1113.5 1230 1148 925.5 1183 936.5 980.5 947 795.5 826.5 497.5 706.5 199.5 886.5 241.5 1504 385.5 2493 549.5 3482.5 713.5 3417 83
A me sembra che tutto funzioni benissimo con questo SEMPLICE algoritmo che, essendo basato su archi di parabola, consente il calcolo preciso ( integrazione esatta ) della lunghezza della traiettoria fino al punto considerato.
Per approfondire l'argomento ossia per sapere come determinare il fuoco, il vertice ed altri punti significativi della parabola di cui viene disegnato solo un arco, guardare http://www.elegio.it/javascript/tutto-parabola.xhtml ed eventualmente provare ad usare questa libreria http://www.elegio.it/javascript/tutto-parabola.js.htmlConsiderazioni filosofiche sulla parabola
La parabola è forse una curva di secondo grado persino più semplice del cerchio. Il cerchio è facile da disegnare con un compasso ma la parabola non richiede l'uso di radici quadrate per esprimere le ordinate in funzione delle ascisse.
Grazie all'ingegnere Bézier e alla grafica vettoriale SVG ( http://www.w3.org/Graphics/SVG/ ) la parabola è diventata una curva utile anche nella grafica.
Sulla Wikipedia ( http://it.wikipedia.org/wiki/Pierre_B%C3%A9zier ) trovo scritto questo:Pierre Étienne Bézier (Parigi, 1º settembre 1910 – Parigi, 25 novembre 1999) è stato un ingegnere e matematico francese, creatore delle curve di Bézier e delle superfici di Bézier che sono ora alla base della maggior parte del Computer Aided Design e dei sistemi di computer grafica.
Nato a Parigi, Bézier ottenne la laurea in ingegneria meccanica presso la École Nationale Supérieure des Arts et Métiers nel 1930 ( a 20 anni ). Si guadagnò una seconda laurea in ingegneria elettrica nel 1931 alla École Supérieure d'Électricité (aveva 21 anni ), nonché un dottorato, nel 1977 ( a 67 anni ), in matematica all'Università di Parigi.
Lavorò presso la Renault dal 1933 al 1975 ( in pensione a 65 anni ), dove realizzò il suo sistema UNISURF CAD CAM.
Dal 1968 al 1979 fu Professore di Ingegneria della Produzione al Conservatoire National des Arts et Métiers.
Nel 1985 ( a 75 anni ) fu insignito all'ACM SIGGRAPH con un premio "Steven A. Coons" per aver dedicato la sua vita alla computer grafica e alle tecniche interattive.Trovo ben fatta questa pagina http://en.wikipedia.org/wiki/Parabola anche se ... mi sembra che nessuno punti direttamente ad applicazioni pratiche nella grafica e ... traduca in termini classici ossia tradizionali il lavoro concreto fatto dall'ing. Pierre Étienne Bézier.
Nella grafica vettoriale SVG è possibile disegnare vari tipi di curve di Bézier usando l'elemento <path> e la direttiva Q o C ( vedere, per esempio quello che ho scritto in http://www.elegio.it/calcolatrice/archivio-utili-201308.html#n002 ) ma, fino ad ora tendevo ad apprezzare maggiormente la cubica di Bézier invece che la più semplice quadrica ma trascurando questo aspetto importante: è possibile calcolare con semplici funzioni logaritmiche e radici quadrate la lunghezza di un qualsiasi arco di parabola mentre con la cubica i calcoli diventano decisamente più complicati senza ottenere un concreto e grosso salto di qualità. Già con la quadrica di Bézier è possibile rappresentare traiettorie prive di discontinuità nella derivata prima ossia nella velocità.
Calcolo vari dati...
Parabola parametrica ,Ascissa ,1339.8677073418196,1724.8325493198004,-114.03048561843798,Ordinata ,934.1391156734257,-1745.1622042686427,2576.420014849264
Parabola polinomiale
a = 4424754.739118914
b = -3870.8539945617235
c = -1222.8793051800883
d = 0.9980449461733101
e = 0.08834549431011836
f = 0.0019550538266900437
Coef.Parametro: p0 = -0.8383211660377484
Coef.Parametro: px = 0.0006069460362570584
Coef.Parametro: py = 0.000026862992392421564
Rotazione: cs = 0.9990219948396082
Rotazione: sn = 0.04421599062205939
Parabola NON raddrizzataParabola polinomiale
a = 4211.927399699013
b = -3.7325352892968984
c = 1
d = 0.0009519007601622953
e = 0
f = 0
Coef.Parametro: p0 = 0
Coef.Parametro: px = 0
Coef.Parametro: py = 0
Rotazione: cs = 0.9990219948396082
Rotazione: sn = 0.04421599062205939
Parabola RADDRIZZATAPunti importanti della parabola Xpraddrizzata
V ,1960.5695496348358,552.9798841325373
F ,1960.5695496348358,815.6123038790829
N ,1960.5695496348358,290.3474643859913
U ,2485.8343891279274,815.6123038790829
W ,1435.3047101417442,815.6123038790829Punti importanti della parabola PuntImportanti
vertice ,1934.2015491269942,639.1275917728119
fuoco ,1922.5889965184322,901.5031556575592
negafuoco ,1945.8141017355563,376.7520278880642
utile ,2447.340124287927,924.7282608746832
wtile ,1397.8378687489371,878.2780504404351Lunghezza dell'arco di parabola calcolato
numericamente facendo 100 passi = 2270.1996315965234Esatta lunghezza dell' arco di parabola = 2270.2348456626887
Mi entusiasmo forse troppo facilmente ma la parabola parametrica di Bézier usata per disegnare traiettorie senza discontinuità e con la possibilità di determinare con alta precisione la lunghezza di ogni spezzone della traiettoria NON È UNA BELLA E UTILE CURVA ?.