Ragazzi, non ho la spiegazione di tutti i quesiti che ponete; ma ho detto mille volte che non bisogna mettere un numero inutilmente alto di campioni.
Un grafico di 100mm di base e con 300 campioni lungo tutto l’asse contien 3 campioni al millimetro e qindi un campione al punto tipografico; tranne nel caso di pendenze quasi verticali, un campione al punto è una densità enorme e numeri di campioni dell’ordine di 10000 sono approcci di persone che non si fanno due conti sulle dita; quando si fa della grafica i due conti sulle dita bisogna sempre farli. Senza offesa per nessuno; ci sono cascato anch’io.
Liverpool: quando dici che per il sombrero hai suato 300+300 campioni ti sei espresso male e di fatto hai perso di vista la realtà del problema; in una figura a 3 dimensioni, hai due campionature, una lungo l’asse x e una lungo l’asse Y che produco ordinate lungo l’asse z; quindi quando campioni 300 volte lungo l’asse x e 300 volte lungo l’asse y produci in totale 90 000 campioni, che impegnano la memoria per 180 000 dati numerici da conservare; ogni dato numerico è fatto di 32 bit, cioè 4 byte, quindi impegni la memoria con 720 000 byte di dati.
Tutti possiamo leggere nel file log a quanto ammonta la memoria, o meglio, a quanto ammontano le varie memorie di cui si servono i programmi come pdftex; è scritto nelle ultime righe del file log. vedrai che 720 000 byte non sono tutta la memoria disponibile, ma una bella fetta; leggi quanta memoria è stata impiegata per una compilazione “normale” e riferisciti a quella per sapere di quanta altra memoria puoi disporre.
Aggiungere memoria ai vari programmi del sistema TeX non è difficile, ma di solito è inutile; se si arriva alla saturazione della memoria bisogna domandarsi sempre quale errore si sia fatto; e si scopre che si è fatto l’errore di non farsi due conti sulle dita prima di fare qualunque grafica.
Il fatto che oggi i calcolatori possano disporre di diversi gibibyte di RAM, non autorizza a sprecare la memoria; il tempo di esecuzione dipende anche da quanti swap il programma deve fare fra la memoria RAM disponibile e la memoria virtuale del sistema operativo (di solito il doppio della RAM); Non è infatti una questione di memoria, o soltanto di memoria, è anche questione di RAM e tempo di esecuzione.
Si vede che nessuno di voi ha mai usato il sistema TeX sotto DOS, quando la memoria disponibile di solito era una frazione dei 640KiB che dovevano essere spartiti anche con il sistema operativo 😎 Fare qualunque elaborazione disponendo un una frazione di 640 KiB era un vero problema, ma ci si riusciva gestendo al memoria dei programmi in uso con molta attenzione.
Obbiezione: ma per avere diagrammi di alta definizione bisogna avere molti campioni; non è vero: per avere disegni ad alta definizione bisogna usare le spline cubiche di Bézier che permettono di disegnare archi piuttosto lunghi con due nodi e due punti guida; gli stessi archi disegnati con la stessa definizione richiedono diverse centinaia di campioni. Detto in altri termini: l’interpolazione lineare (curve di Bézier del primo ordine: segmenti) richiede un mucchio di punti; l’interpolazione quadratica (curve di Bézier del secondo ordine; parabole raccordate in modo che mantenere la continuità della tangente) funzionano molto meglio e i contorni dei glifi dei font TrueType sono appunto realizzati con curve di Bézier quadratiche; notate qualche difetto? Con curve del terzo ordine (curve di Bézier del terzo ordine: curve cubiche che possono presentare sia flessi sia nodi/intrecci) occorrono ancora meno punti; i contorni dei font Type 1 sono descritti da curve di Bézier del terzo ordine. Le curve di Bézier del terzo ordine sono raccordate in modo da mantenere la continuità della tangente sia quella della concavità. Fidatevi di Bézier: le quadratiche vanno già bene; le cubiche vanno ottimamente.
Sia tikz sia pgfplots possono usare tranquillamente le curve di Bézier; con grossi vantaggi sul disegno e sull’impiego modesto della memoria.
Scusate il solito sproloquio…