Versione 20120722
Versione arricchita dalla trasformazione da coordinate relative ad assolute e viceversa
Annotazioni luglio 2012... https://www.google.com/chrome http://www.apple.com/it/safari/download/ http://www.mozilla.org/it/firefox/fx/
Purtroppo Internet Explorer 9, dando a questo file l'estensione .html in luogo di quella prevista, .xhtml, si comporta in modo diverso [ poco ma diverso da Chrome ( https://www.google.com/chrome ), Safari ( http://www.apple.com/it/safari/download/ ), Firefox ( http://www.mozilla.org/it/firefox/fx/ ) etc...]Se una figura esce dai confini dell'immagine, IE9 lascia che straripi il che è scomodo perché certe esondazioni possono essere volute ma naturalmente senza che nascondano le altre parti del documento... Con IE8, o IE7 o IE6 etc... meglio non provarci ! Sarebbe tempo perso...Esempi di pilotaggio del path della grafica SVG ( uso il $ come separatore )
In questi esempi scrivo le direttive del path ( l'attributo "d" ) esattamente come andrebbero scritte normalmente ma interpongo, tra un dato e l'altro, il carattere separatore $.Il vantaggio di usare questa libreria sta nel fatto che, al posto di specificare un semplice dato numerico dove questo è richiesto, è ammesso usare una funzione matematica Javascript che serve a calcolare quel dato numerico. Per esempio, invece di scrivere la radice quadrata di ... 200 ossia 14.142 si può scrivere sqrt(200).
Dunque è ammesso scrivere addirittura una intera e complicata espressione matematica usando le funzioni trigonometriche, quali sin( ) o cos( ) o tg( ) etc. o fare elevamenti a potenza usando la funzione pow( ) per cui la radice cubica di 27 si può calcolare scrivendo pow(27,1/3) e così via...Personalmente consiglio di usare non coordinate assolute, indicate da caratteri maiuscoli, ma coordinate relative, indicate con caratteri minuscoli.Le coordinate assolute sono molto pratiche quando si disegna ossia si traduce in spostamenti il disegno fatto a mano su carta a quadretti o , meglio su carta millimetrata.Le coordinate relative, ossia lo spostamento della matita che disegna dal punto dove si trovava prima, sono meno facili da specificare ma quando abbiamo un path relativo, basta traslare il solo punto di inizio del disegno e si ottiene la traslazione dell'intera curva non deformata...Per facilitare il passaggio tra queste due modalità di definizione delle linee, ho realizzato qui ed applico due funzioni che convertono da una modalità all'altra.Piccola raccolta di esempi
Per facilitare la comprensione di come va gestita la libreria ausiliaria javascript contenuta in questo documento, offro la possibilità di applicare vari esempi. Basta quindi solo scegliere l'esempio preferito ed applicarlo...Nulla vieta però di scrivere di getto un proprio path e di sperimentarlo, oppure di apportare qualche modifica all'esempio proposto...Ecco i dati: ...In forma assolutaM 100$ 200$A 400$ 400$ 0$ 0$ 0$ 800$ 500$L 800$ 450$L 600 $450 $ZIn forma relativam 100$ 200$l 300$ 50$s 100$ -300$ 300$ 0$ 100$ 550$ 0$ 200$
Nota: Nel disegno ho lasciato anche vari altri esempi che forse confondono un po' ma servono a farsi una idea delle possibilità della grafica SVGAttenzione: il disegno è largo 960 unità ossia l'asse delle ascisse va da 0 alla estrema sinistra a 960 all'estrema destra, ed alto 700 ossia l'asse delle ordinate va da 0 in alto a 720 in basso. Per comodità ora spiego i tipi di movimenti effettuabili con le direttive del path.Direttive di pilotaggio del comando path
Per approfondire le informazioni qui riportate guardare in: http://www.w3.org/TR/SVG/paths.html.A titolo di promemoria ricordo qui come si fa, usando Javascript, a modificare il disegno prodotto dalla marca path.
Innanzi tutto la si rende identificabile dandole una identità unica nel documento ossia attribuendo all'attributo id un nome gradito ossia, per esempio, come ho fatto qui, scrivendo:<path id="variodisegno" ... a questo punto basta selezionare proprio quell'elemento assegnandolo ad una variabile javascript, per esempio di nome mioggetto. Dunque scrivo:mioggetto=document.getElementById("variodisegno"); A questo punto devo assegnare all'attributo d la stringa che rappresenta il disegno. Supponiamo che abbia creato la stringa miodisegno in questo modo:miodisegno="M 30 50 C 100 500 950 -200 930 150 z"; Per attribuire questa variabile all'oggetto dotato dell'attributo d mi basta eseguire questa istruzione:mioggetto.setAttribute("d",miodisegno); e se non ho commesso sviste... otterrò il disegno voluto...Elenco delle direttive
A,a | Arco ellittico |
a rx ry rot bl ds xf yf
|
---|---|---|
C,c | Cubica |
c xa ya xb yb xf yf
|
H,h | Horizzon- talmente |
h xf
|
L,l | Linea |
l xf yf
|
M,m | Muovi senza scrivere |
m xf yf
|
Q,q | Quadrica |
q xa ya xf yf
|
S,s | Scorrevole ( cubica ) |
s xb yb xf yf
|
T,t | Tangente ( quadrica ) |
t xf yf
|
V,v | Vertical- mente |
v yf
|
Z,z | Zero sposta- mento |
z
|
La libreria usata qui per gestire il path
Riporto qui, per comodità ed evitare di doverle cercare nel sorgente, le funzioni più significative: Per avere altre info su come funziona SVG guardare questi corsi introduttivi:
Esempio di uso di immagine di sfondo su cui disegno grafica vettoriale (aprile 2012)
Cliccando sulle figure, qui compare la didascalia In questo file, per renderlo monolitico, è nascosta l'immagine del foglio di carta a quadretti, ovviamente sostituibile con qualsiasi altra immagine... Si tratta di una immagine codificata in base64 e dunque molto ingombrante... usa serie interminabili di caratteri alfanumerici oltre che i caratteri + e /. Avrei potuto ovviamente mettere questa caterva di caratteri direttamente nella regione del documento delimitata dalla marca <svg> ma questo avrebbe compromesso la leggibilità del sorgente. Pertanto ho realizzato una serie di brevi funzioni Javascript che attivo quando carico il documento e che hanno il compito di trasferire l'immagine nascosta ( alla fine del documento, dove la caterva di caratteri in base64 non danno noia) nel punto dove voglio visualizzarla veramente.
Per capire meglio guardare come è fatto il sorgente di questo documento premendo il tasto destro del mouse e selezionando l'opzione Visualizza Sorgente Pagina.
Ricordo che per vedere i dettagli ossia ingrandire o rimpicciolire l'immagine, basta premere assieme sulla tastiera i tasti [Ctrl][+] per ingrandire e [Ctrl][-] per rimpicciolire.Un altro esempio applicativo di SVG
Anche questo, guardando il sorgente di questo documento, è un esempio utile per imparare ad usare la grafica SVG.Notare che, oltre all'esagono rosso, ce ne è uno quasi invisibile che però è anche lui cliccabile. L'uso di immagini trasparenti ossia con opacity quasi o totalmente nulla è utile per aggiungere zone di cliccabilità a immagini sottostanti. Per esempio in questo modo è possibile creare zone di cliccabilità attorno ai volti di un gruppo di individui di una foto di gruppo in modo che passando il puntatore e cliccando su un volto compaia il nome dell'individuo selezionato.
Giampaolo Bottoni
gpbottoni@gmail.com
http://www.alumni.polimi.it/it/Wall
( ing. nucleare 1972 )