Re: Il disegno programmato nell’Arte di scrivere con LaTeX

#72725
OldClaudio
Partecipante
    Up
    0
    Down
    ::


    Be’, il disegno che si ottiene con il codice che ho allegato al mio messaggio http://www.guitex.org/home/forum/5-tex-e-latex/71851-il-disegno-programmato-nellarte-di-scrivere-con-latex?limit=15&start=105&lang=en#72701 sembra persino migliore di quello di Mathlab; ripeto tre soli nodi di interpolazione con 2+2 punti di controllo fra ciascuna coppia di nodi.

    La curva di terzo grado di Bézier è data dall’equazione:

    z = z_1 t^3 +3 z_2 t^2(1-t) + 3 z_3 t(1-t)^2 +z_4(1-t)^3

    dove i simboli z sono numeri complessi (o coppie ordinate, se si preferisce) e t è il parametro che lega le due equazioni reali eliminando il quale si ricava l’equazione della cubica — equazione che sarebbe difficilissima da esprimere in termini di y=f(x); non così difficile, forse, nella forma f(x, y)=0, ma facilissima da esprimere in forma parametrica.

    z_1 e z_4 sono i nodi di interpolazione; z_2 e z_3 sono i punti di controllo; mentre non c’è nessun dubbio sui valori dei nodi, resta l’arbitrarietà dei moduli dei vettori z_2-z_1 e z_3-z_4. la direzione di questi due vettori è fissata dalla direzione delle tangenti, mentre i due moduli controllano la concavità dell’arco della cubica; due spline si possono raccordare molto bene imponendo la stessa tangente nel punto di contatto; se nel punto di contatto si vuole mantenere la concavità continua si può fare ma alle altre due estremità non ci sono condizioni da imporre; una catena di spline che formano una linea aperta riesce ad avere sufficienti condizioni da imporre sulla direzione della tangente e sulla concavità in tutti i nodi interni, ma solo le posizioni dei nodi dei due nodi esterni; se si chiude la catena si aggiunge una coppia di condizioni e si riduce un nodo; tuttavia per una linea chiusa il problema è definito molto meglio. Nel caso del seno la cosa è definita male, come credo di avere spiegato sopra, e quindi non mi stupisco che proprio agli estremi le cubiche determinate da Matlab siano male adattate alla sinusoide.

    Se il valore di default della tensione degli archi è prefissato al valore 0.5 e gli archi sembrano tropo tesi, forse si deve diminuire il valore, non aumentarlo; in ogni caso bisogna vedere che cosa intendeva Tantau quando ha prefissato il concetto di tensione e il suo valore. Knuth e Hobby hanno definito la tensione in un altro modo, tanto che il suo valore non deve essere inferiore a 3/4; l’intera spiegazione in “inglese matematico” è riportata nelle pagine 130 e seguenti del METAFONT book; ci sono tutte le formule e le equazioni che sono necessarie a METAFONT/METAPOST per determinare le tensioni o i punti di controllo in tutti i casi possibili. Confesso che si tratta di equazioni e formule non difficili, ma per me di difficile interpretazione; richiedono molte equazioni trigonometriche che, ripeto, non sono difficili da calcolare nemmeno con una calcolatrice da tasca, ma il cui esito o valore finale non è facilmente intuibile nemmeno qualitativamente dall’andamento della funzione. Io mi sono fatto una piccola esperienza in merito quando ho scritto il pacchetto curve2e; in quella circostanza NON sono riuscito ad implementare mediate l’aritmetica intera di TeX le formule di Hobby e ho dovuto accontentarmi di una tensione costante — o meglio di una curvatura prefissata agli estremi di ogni arco — e so quindi che cosa succede quando non si riesce a regolare convenientemente la curvatura o la tensione.

    Con spline quadratiche, evidentemente ci vogliono più nodi perché l’errore di approssimazione con l’interpolazione ad archi quadratici sia decente; con l’interpolazione lineare, poi bisogna aumentare i nodi di interpolazione a dismisura. Naturalmente usare spline, vuol dire usare una curva fatta di diversi spezzoni, non una curva unica. Interpolare una qualunque funzione su n+1 punti richiederebbe una funzione con n+1 coefficienti da determinare in modo acconci; se la funzione è un polinomio esso deve essere di grado n-1, anche piuttosto facile da determinare; ma se oi si traccia il polinomio sul range che interessa, l’errore è nullo nei nodi, ma è terribile fuori dai nodi: provare per credere. È per questo che io mi fido di più delle spline, che non di un’unica funzione/polinomio.

    Go to top