Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Luglio 2007
Foxes Team 1
Grafici 3D con Winplot
Indice
Grafici 3D con Winplot........................................................................................................................2
Funzioni esplicite .............................................................................................................................3
Assi e drawing box.......................................................................................................................3
Colore e superficie .......................................................................................................................5
Sezioni..........................................................................................................................................8
Tabulazione..................................................................................................................................8
Livelli ...........................................................................................................................................9
Inserimento di testo....................................................................................................................10
Funzioni parametriche....................................................................................................................11
Lo strumento Slicer....................................................................................................................12
Sezioni........................................................................................................................................12
Superfici di rivoluzione..............................................................................................................12
Coordinate sferiche ........................................................................................................................15
Coordinate cilindriche....................................................................................................................17
Reticoli cilindrici e cartesiani ....................................................................................................18
Funzioni implicite ..........................................................................................................................19
Curve di livello...........................................................................................................................19
Punti, segmenti e vettori.................................................................................................................22
Testo agganciato ........................................................................................................................22
Lista............................................................................................................................................23
Curve..............................................................................................................................................24
Curve discrete. ...........................................................................................................................24
Curve continue ...........................................................................................................................25
Meridiani....................................................................................................................................25
Moto lungo una curva ................................................................................................................26
Animazione ................................................................................................................................26
Intersezioni.....................................................................................................................................28
Tubi ................................................................................................................................................31
Solidi per sezioni............................................................................................................................33
Solidi di rivoluzione.......................................................................................................................35
Appendice ..........................................................................................................................................39
Mappa dei fonts..............................................................................................................................39
Funzioni e costanti .........................................................................................................................40
Foxes Team 1
Grafici 3D con Winplot
Se la finestra è diversa da quello vosualizzata significa che è disattivato l'opzione "Use defaults" del
menu Window è disattivata. Suggeriamo di attivare sempre questa opzione e di gestire le
specializzazioni (font, colore, sfondo, assi, griglie, ecc.) per mezzo di grafici-modelli costruiti ad
hoc, così come è stato spiegato per i grafici 2D
1
Questo documento si riferisce alla versione di Winplot compilata il 11.May.2007
Foxes Team 2
Grafici 3D con Winplot
Funzioni esplicite
Sono definite da un equazione esplicita del tipo z = f ( x, y )
Winplot può tracciare efficientemente queste funzioni dal Menu : Window / 3-Dim, Menu : Equa / Explicit
sin( x 2 + y 2 )
lim =1
x →0
y →0
x2 + y2
Il grafico puo essere ingrandito o ridotto semplicemente con i tasti "Pag ↑" o "Pag ↓", o dal menu
view/zoom, (ma i tasti sono molto più utili). Nel menu view/zoom si può impostare il fattore di
ingrandimento o riduzione per mezzo del parametro "Factor..."; valori 1.1 o 1.2 funzionano bene. Il grafico
puo essere ruotato in alto o in basso, a destra e sinistra semplicemente con i tasti freccia "↑" o " ↓", "→" o "
←" o dal menu view/rotate. Sempre nel menu si può definire la velocità di rotazione con il parametero
"Angle..."; valori usuali sono da 1 a 6 .
Adesso vediamo come aggiungere altri elementi grafici quali assi, drawing box, colori, ecc.
La lunghezza degli assi viene calcolata automaticamente e le etichette "x", "y", "z" sono poste alle estremità
degli assi stessi. A seconda della rotazione, qualche volta, le etichette non sono ben visibili (come l'asse z del
grafico a sinistra). In tal caso si può impostare la lunghezza degli assi dal menu View/Axes/Lock lengths...
Foxes Team 3
Grafici 3D con Winplot
La "scatola" del grafico puo essere attivata dal menu View/Box/Box (ctrl+B)
View/Box/ View/Box/
Foxes Team 4
Grafici 3D con Winplot
Nota. Giocando con il punto di osservazione è facile "perdersi". Per ripristinare un corretto punto di
osservazione selezionare View/Observer/Isometric.
Colore e superficie
Aprire la finestra "Inventory" che contiene il catalogo delle funzioni e curve. Selezionare la funzione e poi il
tasto "edit"
"Spectrum": disegna
la superficie
continua
Grid : visualizza la
griglia sulla
superficie continua
Color A: sceglie il
colore della
superficie
La funzione "spectrum" disegna la superficie continua ombreggiata con zone scure e chiare. Per una buona
riuscita selezionare un colore (A) molto chiaro: ad esempio giallo.
La possibilità di colorare differentemente la superficie interna da quella esterna è molto utile nei grafici in
cui si osservano contemporaneamente le due facce della superficie.
Foxes Team 5
Grafici 3D con Winplot
A colpo d'occhio risulta più evidente il contrasto fra la faccia interna e quella esterna della superficie.
Ovviamente questa distinzione non vale per quelle speciali superfici che hanno una sola faccia come, ad
esempio, il nastro di Mobius, la cui equazione parametrica è la seguente.
[ x = cos(t)-0.5u*cos(t)sin(t/2), y = sin(t)-0.5u*sin(t)sin(t/2), z = 0.5u*cos(t/2) ] 0 ≤ t ≤ 2π, -1 ≤ u ≤ 1
In questo caso, l'algoritmo inizia a colorare ogni piccolo rettangolo della griglia (che ha due superfici) con il
colore blu da un lato e il colore giallo dall'altro. L'algoritmo termina quando tutti i rettangoli sono stati
colorati ma, poiché in realtà la superficie è unica, ad un certo punto i rettangoli blu si incontrano
necessariamente con quelli gialli. Il punto di contatto è evidenziato dal netto contrasto dei due colori.
Foxes Team 6
Grafici 3D con Winplot
La scatola del grafico, oltre a dare l'idea dello spazio tridimensionale occupato, serve anche per contenere la
superficie entro limiti finiti. Questo viene utile quando si lavora con funzioni illimitate all'interno del range
D≡ (xmin < x < xmax , ymin < y < ymax). Ad esempio si vuole tracciare il grafico della funzione
1
z= , − 1 ≤ x ≤ 1, − 1 ≤ y ≤ 1
x + y2
2
Nota. L'opzione "Lock position" blocca tutte le 6 dimesioni impostate nel pannello "Dimension Box",
relativamente alla funzione selezionata. Ricordarsi di rimuovere il lock quando si desideral fa ricalcolare
automaticamene le dimensioni.
L'opzione "cap extremes" determina l'aspetto della parte di superficie "bloccata" dal vincolo impostato.
Il modo migliore per capire il funzionamento è osservare l'effetto che produce, come mostrano i grafici
seguenti.
Come si vede, la funzione "cap extremes" sostituisce la parte della superficie mancante con la faccia
superiore della scatola (piano z = 10)
Foxes Team 7
Grafici 3D con Winplot
Sezioni
Sezionare un superficie con piani longitudinali è utile per vedere l'interno del grafico. Questo può essere fatto
sia impostando i vincoli nel box, sia impostando i vincoli nel dominio D≡ (xmin < x < xmax , ymin < y < ymax)
Ad esempio, per rimuovere la parte anteriore del grafico basta impostare un range (-1 < y < 0.2) oppure
impostare il vincolo y < 0.2 nel box . Le immagini seguenti mostrano il risultato delle due elaborazioni.
Tabulazione
Per tutti i grafici definiti nel catalogo è possibile ottenere la tabella dei dati numerici calcolati. Per questo è
sufficente premere il tasto "table" del pannello "Inventory", dopo aver selezionato la funzione voluta.
In genere i dati sono organizzati in una matrice (n x m) di rige e colonne: la prima colonna contiene i valori
della variabile x mentre la prima riga contiene i dati della variabile y. I dati interni corrispondono al valore
della variabile z = f(xi, yj)
Foxes Team 8
Grafici 3D con Winplot
Livelli
E' possibile tracciare le curve di livello su una superficie tridimesionale. Dopo aver selezionato la funzione
voluta, premere il tasto "levels" del pannello "Inventory". Il pannello sembra molto complicato ma, per
fortuna, le funzionalità veramente necessarie sono poche.
Il passo h e il numero dei
livelli sono legati dalla
formula:
h = (zmax-zmin)/(n+1)
quindi per avere un passo
h=0.05 fra 0 ≤ z ≤ 1 si deve
impostare n = 21 livelli
Si deve inserire i valori
low = 0 e high = 1
(ignorare curr)
Premendo "auto" verrano
calcolati le coordinate dei
21 livelli. Premendo "keep
changes" i livelli saranno
trasferiti sul grafico
Il tasto "discard changes" è equivalente a "exit": chiude la finestra senza fare nessuna variazione al grafico
NB. I livelli tracciati su un grafico 3D sono molto utili ma anche molto pesanti da punto di vista elaborativo
e i movimenti del grafico risultano estremamanete più lenti. Quindi i livelli devono essere usati solo quando
servono e comunque in numero limitato.
Foxes Team 9
Grafici 3D con Winplot
Inserimento di testo
2
Esempio. Creare il grafico della funzione z = y 2 e − ( x + y ) per − 2 ≤ x ≤ 2, 0 ≤ y ≤ 6 , e tracciare alcune
curve di livello. Scegliamo n = 21 curve fra 0< z < 1, per aver un passo h = 1/(21-1) = 0.05
Mediante i tasti "next level" and "see curr" è possibile visualizzare la singola traccia di livello. Winplot non
aggiunge automaticamente le etichette ai livelli e quindi è consigliabile aggiungere almeno due marche di
livello manualmente
y
0.1
0.05
Foxes Team 10
Grafici 3D con Winplot
Funzioni parametriche
Le superfici generate dalle equazioni parametriche sono, in generale, molto ⎧ x = f (t , u )
più difficili da prevedere di quelle cartesiane esplicite ma permettono di ⎪
creare dei grafici veramente sorprendenti, anche con espressioni analitiche ⎨ y = g (t , u )
realtivamente semplici. I parameteri t e v sono definiti in un dominio ⎪ z = h(t , u )
⎩
rettangolare D≡{ tmin ≤ t ≤ tmax , umin ≤ u ≤ umax }
Altre viste suggestive si possono ottenere semplicemente per rotazione (tasti freccia).
Foxes Team 11
Grafici 3D con Winplot
Lo strumento Slicer.
Nei grafici parametrici, le linee che formano la griglia corrispondono alle curve di livello per t e u costanti
Wimplot offre una funzionalità eccellente, chiamata "slicer", per visualizzare e percorrere tutte le linee di
livello del grafico in modo interattivo.
Selezionando il menu One/Slicer... compare un pannelo di controllo dotato di barre scorrevoli che
permettono di cambiare i valori dei parametri t e u in modo continuo.
Nell figura sono evidenziate le line di livello per t =3.446 (circonferenza) e per u = 1.539 (spirale). Si noti
che l'intersezione delle curve di livello, perpendicolari fra loro, determinano qualunque punto della
superficie.
Un effetto ancora più spettacolare si ottiene attivando l'animazione tramite i tasti "autorev" o "autocyc" su i
parametri "t" e "v".
Sezioni
Anche nei grafici parametrici è possibile
sezionare la figura per mezzo del Box. Ad
esempio, per "rimuovere" la parte superiore della
conchiglia inserire il vincolo z < 0
Superfici di rivoluzione.
Un particolare insieme di equazioni parametriche permettono di creare in modo facile ed efficiente tutte le
superfici di rivoluzione. Ad esempio data una curva spaziale γ ≡{ x = f(u), y = g(u), z = h(u) }, la superficie
di rivoluzione Γ generata intorno all'asse z ha equazioni parametriche
⎧ x = f (u ) ⎧ x = ρ (u ) cos t
⎪ ⎪
γ ≡ ⎨ y = g (u ) ⇒ Γ ≡ ⎨ y = ρ (u ) sin t con ρ (u ) = f (u ) 2 + g (u ) 2
⎪ z = h(u ) ⎪ z = h(u )
⎩ ⎩
Foxes Team 12
Grafici 3D con Winplot
Nel caso che la curva sia piana e giaccia, ad esempio, sul piano x-z, le equazioni si semplificano in
⎧ x = f (u ) ⎧ x = f (u ) cos t
⎪ ⇒ ⎪
γ ≡ ⎨y = 0 Γ ≡ ⎨ y = f (u ) sin t
⎪ z = h(u ) ⎪ z = h(u )
⎩ ⎩
Ad esempio, si consideri la curva ellittica γ sul piano x-z di equazioni e la sua superficie di rivoluzione Γ
attorno all'asse z:
Anche su questa superficie (un toro a sezione ellittica) è possibile effettuare delle sezioni. In questo caso
risulta più semplice agire sui parametri "t" e "u" anziché sul box.
Infatti i grafici seguenti sono stati ottenuti imponendo rispettivamente t ≤ 5 e u ≥ 1.5
Le formule parametriche sono in grado di modellare anche superfici aventi formule cartesiane molto
complicate. Ad esempio la superficie: { x = u [4cost] , y = u [4sint], z = 40-4u } , con -π ≤ t ≤ π , 0 ≤ u ≤ 10
e dove: [x] = floor(x), rappresenta la seguente piramide a base ottagonale irregolare.
Per colorare la superficie esterna in modo differente da quella interna è stata usata la funzionalità "shade"
Foxes Team 13
Grafici 3D con Winplot
Con le superfici parametriche e le loro unioni si possono modellare una vasta di oggetti grafici
Foxes Team 14
Grafici 3D con Winplot
Coordinate sferiche
Le coordinate sferiche permettono di definire superfici aventi simmetria centrale in modo molto compatto ed
efficiente. Winplot consente di definire direttamente le equazioni in coordinate sferiche dal menu
Equ/Spherical... r = f (t , u )
Le relazioni che legano le coordinate sferiche (r, t, u) alle
coordinate cartesiane (x, y, z) sono
⎧ x = r sin u cos t
⎪ 0 ≤ t ≤ 2π
⎨ y = r sin u sin t con
⎪ z = r cos u 0≤u ≤π
⎩
r > 0 è il raggio vettore congiungente il punto all'origine.
In coordinate sferiche, le superfici aventi una qualche simmetria radiale hanno equazioni molto semplici. La
sfera unitaria, ad esempio, è caratterizzata dalla semplice equazione r = 1.
Variando gli estremi dei parametri angolari "t" e "u" è possibile creare delle calotte e settori sferici
Ovviamente è possibile effettuare sezioni orizzontali e verticali della sfera anche con il Box.
Nel seguente esempio vengono definite 2 sfere concentriche di raggio 1 e 2. Ovviamente il grafico completo
mostra solo la sfera esterna. Per vedere anche l'interno facciamo delle sezioni sulla sfera esterna
-1 ≤ z ≤ 0 -1 ≤ z ≤ 0 -1 ≤ y ≤ 0 e -1 ≤ z ≤ 0
Foxes Team 15
Grafici 3D con Winplot
La prima immagine della "scodella", è stata ottenuta disattivando l'opzione "caps extremes". Viceversa, le
altre immagini del "nocciolo" sono state ottenute con l'opzione "caps extremes" attivata.
Sebbene le coordinate sferiche siano vantaggiose nei casi evidenti di simmetria centrale, esse possono creare
delle straodinarie superfici del tutto prive di simmetria centrale (ed anche imprevedibili. Pochi possono
immaginare che le seguente semplici equazioni modellano delle ... "conchiglie")
r = 1/(1+t)
r = 1/(t+1)+ sin(3u)/10
Le equazioni sferiche, quando non contengono la varibile "t", formano delle belle superfici di rivoluzione
r = (cos2(4u)+2)/2
La sezione a sinistra è stata ottenuta imponendo π/2 < u < π per meglio evidenziare la superficie interna.
Foxes Team 16
Grafici 3D con Winplot
Coordinate cilindriche
Le coordinate cilindriche permettono di definire superfici aventi simmetria rispetto all'asse z in modo molto
compatto ed efficiente. Winplot consente di definire direttamente le equazioni in coordinate sferiche dal
menu Equ/Cylindrical... z = f (r , t )
Le relazioni che legano le coordinate cilindriche (r, t, z) alle
coordinate cartesiane (x, y, z) sono
z
⎧ x = r cos t
⎪
⎨ y = r sin t con 0 ≤ t ≤ 2π y
⎪z = z r
⎩
x t
r > 0 è il raggio vettore congiungente il punto all'origine.
In coordinate cilindriche, le superfici aventi una qualche simmetria assiale hanno equazioni molto semplici.
Il cono di asse z, ad esempio, è caratterizzata dalla semplice equazione z = r e le superfici coniche si creano
per semplice restrizione del dominio D≡{ tmin ≤ t ≤ tmax , rmin ≤ r ≤ rmax }
0< r< 1, 0 < t < 2π -1< r< 1, 0 < t < 2π 0< r< 1, 0 < t < 4
Superfici apparentemente molto complicate come quelle elicoidali, hanno, in coordinate cilindriche,
equazioni estremamente semplici: z = t, con 0 < t < 2n π , dove n è il numero di avvolgimenti dell'elica
z = t , 0< r< 1, 0 < t < 4π z = t , 0< r< 1, 0 < t < 8π z = t +r , 0< r< π, 0 < t < 2π
Nonostante la semplicità formale dell'equazione, questo tipo di superficie è molto complesso e richiede un
grande sforzo computazionale. Aumentando il numero dei pannelli (divisions) la precisione della figura
migliora ma il tempo per il calcolo aumenta e i movimenti (zoom , rotate) diventano molto più lenti. Si deve
trovare il giusto compromesso. Usualmente si sceglie un basso numero di divisioni radiali (10 ÷ 20) e un alto
numero di divisioni angolari (50 ÷ 100)
Foxes Team 17
Grafici 3D con Winplot
Ovviamente la vista cambierà molto anche se si tratta della stessa superficie come mostra il seguente
esempio
Effetture il grafico della funzione
1
z= −3≤ x ≤ 3 , −3≤ y ≤ 3
1+ x + y2
2
Si tratta di un funzione esplicita il cui grafico può essere velocemente ottenuto dal menu
Equa/Explicit...(vedi fugura a sinistra). Ma la stessa funzione può essere facilmente riscritta in coordinate
cilindriche per mezzo delle trasformazioni polari.
⎧ x = r cos t 1
⎨ ⇒ z= 0 ≤ r ≤ 3 , 0 ≤ t ≤ 2π
⎩ y = r sin t 1+ r 2
Inserendo queste equazioni dal menu Equa/Cylindrical... si ottiene il grafico a destra.
NB. Per ottenere i grafici abbiamo attivato il box (View/Box...) con le opzioni: " View/Hide segments" e "
View/Box/Cube". Lo "Slicer" (menu One\Slicer...") permette poi di evidenziare le curve isolivello di ogni
reticolo.
Quale rappresentazione è migliore? Impossibile dirlo. Entrambe realizzano un ottimo effetto tridimensionale.
Entrambe hanno vantaggi e svantaggi ed ognuna mette in evidenza aspetti differenti della stessa superficie.
La curvatura nel punto di massimo è resa molto bene nel grafico destro ma l'effetto di "stress" della
superficie nell'intorno dell'origine è reso meglio nel grafico di sinistra. Di volta in volta, a seconda dei casi, si
sceglie una rappresentazione in funzione di ciò che si vuole evidenziare
Foxes Team 18
Grafici 3D con Winplot
Funzioni implicite
Le superfici generate dalle equazioni cartesiane implicite f ( x, y, z ) = 0 definite in un dominio
D≡{ xmin ≤ x ≤ xmax , ymin ≤ y ≤ ymax zmin ≤ z ≤ zmax }, a dispetto della loro apparente semplicità sono tuttaltro
che semplici da rendere in formato grafico. Diversamente dalle equazioni esplicite e parametriche, per quelle
implicite non esistono algoritmi efficienti.
Le superfici vengono ottenute attraverso le line di livello, cioè "affettando" il
dominio con dei piani equidistanti e paralleli ai 3 piani cartesiani. Ad esempio, per
creare le curve di livello parallele al piano "di terra" x-y occorre tagliare la figura
con piani perpendicolari all'asse z, aventi equazioni z = k, con zmin ≤ k ≤ zmax
Winplot consente di scegliere i piani taglio perpendicolari a x, y o z ottenendo
curve di livello parallele a ogni piano cartesiano.
Su ogni piano di taglio la funzione diviene f(x, y, k) = 0 con k costante
Per calcolare tutti i punti xi, yi appartenenti ad un piano di taglio z = k, il programma risolve, con un
processo iterativo, l'equazione implicita f(xi, yi, k) = 0. Il processo viene ripetuto per ogni piano, cioè per
ogni curva di livello. Da quanto detto, appare evidente che l'elaborazione è estremamente lunga e Winplot
non fa eccezione. Anche con un moderato numero di livelli, (ad esempio 37) il movimento del grafico sui
normali PC è molto lento. Quindi le equazioni implicite sono da usarsi solamente quando non si conoscono
le equivalenti equazioni esplicite cartesiane o parametriche.
Ad esempio si deve studiare la superficie descritta dalla seguente equazione 2( x 4 + y 4 ) + z 2 = 4
Separando la variabile z, si ha: z 2 = 4 − 2( x 4 + y 4 )
Si osserva che affinché la parte destra sia positiva deve essere |x|< 21/4 ≅ 1.2 e |y|< 21/4 ≅ 1.2 ed inoltre|z| <2
Queste relazioni determinano il box di disegno del grafico.
Curve di livello
Winplot propone per default
l'asse "z" e 37 livelli.
Accettiamo e premiamo "auto".
Il programma apre
automaticamente una nuova
finestra ed visualizza
rapidamente e in sequenza tutte
le curve di livello calcolate. Al
termine chiudere la finestra
(tanto non serve) con il
comando "close" del suo menu.
I dati delle curve di livello
appaiono ora nella lista
sottostante. Premere "keep
changes" per trasferire nel
grafico le curve di livello
Foxes Team 19
Grafici 3D con Winplot
NB. Le curve vengono tracciate lentamente, se il processo richiedesse troppo tempo, premere Q per
interromperlo
Presumibilmente il posizionamento del grafico è diventato ora molto lento. Per effettuare il movimento in
modo più rapido conviene attivare la visualizzazione degli assi, nascondere momentaneamente il grafico con
il tasto "graph" della finestra "inventory". Muovere ora gli assi (zoom e rotate) fino a portarli nella posizione
e nella scala voluta. Riattivare il grafico premendo ancora il tasto "graph".
NB. le curve di livello danno l'idea della superficie ma non si possono attivare gli effetti di colore e ombra
(shade, spectrum, grid) come per le altre superfici. E' possibile variare solo il colore
Le curve di livello possono essere generate per ogni asse e trasferite sul grafico, indipendentemente le une
dalle altre. Per avere una buon effetto 3D le curve di livello per l'asse x e y si visualizzano insieme, mentre
quelle per l'asse z si visualizzano da sole.
Vediamo di creare le curve per x e y. Cancelliamo prima di tutto le curve dell'asse z con il tasto "del all".
Selezioniamo l'opzione "x", scegliamo il colore, e premiamo il tasto "auto". Dopo avere chiuso la finestra dei
livelli, premiamo il tasto "keep changes" per trasferire le curve sul grafico, che apparirà come a sinistra
Ripetiamo il procedimento per l'asse "y". Il grafico finale aprirà come a destra
Come si vede l'effetto 3D è ottimo anche con un moderato numero di curve di livello (37 x 37)
Notare che, diversamente dalle equazioni parametriche, le curve di livello non sono, in generale,
perpendicolari fra loro.
Foxes Team 20
Grafici 3D con Winplot
Foxes Team 21
Grafici 3D con Winplot
E' possibile variare il colore per mezzo del tasto "colors" e lo spessore delle line ("pen width") e la grandezza
dei punti ("dot size"); per una buona riuscita estetica è consigliabile scegliere la grandezza dei punti doppia
di quella delle linee. Il colore, ovviamente, è a piacere.
La variabile "plot ... pts" dei segmenti serve per dividere il segmento in parti uguali ma non ha effetto sul
grafico. Le coordinate dei punti di divisione, sempre maggiori o uguali a 2, sono visibili per mezzo del
comando di tabulazione ("tab" del pannello "inventory").
Testo agganciato
I punti offrono un utile mezzo per "agganciare" del testo al
grafico. Ad esempio vogliamo inserire il testo che indichi le
coordinate del punto stesso chiamato ad esempio
"P(1,1,1)". Attivare la modalità testo dal menu Btns\Text e
cliccare con il tasto destro del mouse il grafico per aprire
l'editor. Inserire il testo voluto, attivare l'opzione "others" e
selezionare il punto (1,1,1) della lista a fianco.
Foxes Team 22
Grafici 3D con Winplot
Lista
La lista, accessibile da menu Equ/list..., è uno strumento potenzialmente molto utile per accelerare
l'introduzione dei punti in un grafico. Si deve osservare che Winplot tratta ciascun punto come tutti gli altri
oggetti grafici (curve, superfici, ecc.) aggiunti nel catalogo (inventory) che ha per default Il limite di 36
oggetti in totale. Anche con un set limitato di punti è facile superare tale limite, quindi è quasi sempre
necessario ridimensionare il catalogo prima di iniziare un grafico di punti1.
Ad esempio vogliamo introdurre il seguente insieme di punti
I ≡ { (xi, yj, zk) | xi = 0.25 i, yj = 0.25 j, xk = 0.25 k, con i, j, k =0, 1, 2, 3, 4}
Come si vede, si tratta di un insieme di ben 125 punti, disposti a forma di cubo, che sarebbe oltremodo
laborioso introdurre a mano, elemento per elemento.
Come si vede l'effetto è notevole e molto simile ai reticoli cristallini della materia. Ruotando il grafico, si
può visualizzare da angoli differenti il reticolo dei punti.
NB. Per cancellare tutti i punti in un solo colpo, selezionare il primo punto del catalogo, premere shift,
selezionare l'ultimo punto del catalogo e premere "delete".
1
Il catalogo deve esser necessariamente vuoto prima di ridimensionarlo. Per evitare crash, è bene fare il ridimensionamento
all'apertura di un nuovo grafico 2D o 3D.
Foxes Team 23
Grafici 3D con Winplot
Curve
Le curve nello spazio 3D sono in generale descritte da 3 equazioni ⎧ x = f (t )
parametriche dipendente da un solo parametro, solitamente "t", che ⎪
varia con continuità in un certo intervallo tmin ≤ t ≤ tmax. ⎨ y = g (t )
⎪ z = h(t )
⎩
Curve discrete.
Winplot, dal menu Equa/point/list, può anche generare la lista di punti a partire dalle equazioni parametriche
discrete
Generiamo ad esempio un insieme 11 di punti equidistanti ed
appartenenti ad una semi-circonferenza di raggio unitario, giacente
sul piano z = 0.5. E' interessante inserire le equazioni parametriche
nei 3 diversi sistemi di coordinate, rettangolare, cilindriche e
sferiche, attivando l'opzione "anchors" per il primo caso, e "show
arc" per i secondi due casi.
Le equazioni da inserire sono:
1) coordinate standard: x = cos(pi/10·n), y = sin(pi/10·n), z = 0.5
2) coordinate cilindriche: rho = 1, theta = pi/10·n, z = 0.5
3) coordinate sferiche: rho = 1, theta = pi/10·n, phi = pi/4
Selezionare l'opzione "list", selezionare un colore (blu), la
dimensione dei punti (dot size = 4) e premere "plot".
I seguenti tre grafici mostrano molto bene il modo con cui vengono individuati i punti nei tre differenti
sistemi di coordinate, rispettivamente: rettangolare, cilindriche e sferiche.
A volte è utile sovrapporre delle curve continue agli insiemi di punti per meglio mostrare l'evolversi di un
fenomeno, simulare il loro movimento, ecc.
⎧ xn = cos(4π / 20 ⋅ n )
⎪
⎨ yn = sin (4π / 20 ⋅ n ) n = 1, 2,...20
⎪ z = 2π / 20 ⋅ n
⎩ n
Selezionare l'opzione "list", selezionare il colore (rosso)
e la dimensione dei punti (dot size = 4) e premere "plot"
Foxes Team 24
Grafici 3D con Winplot
Curve continue
Per simulare meglio il moto dei punti aggiungiamo
anche la stessa curva parametrica continua scegliendo il Arrow
menu Equa/Curve...
Inseriamo il range della variabile 0 < t < 2π
Aggiungiamo la freccia ("arrow") alla fine della curva
inserendo il valore 2π nel campo relativo.
Nota che la freccia può essere inserita in qualunque
punto della curva scegliendo un opportuno valore "t =".
Scegliamo il colore (blu) e lo spessore (pen width = 2) e
premiamo OK
La curva viene tracciata approssimandola con piccoli segmenti. Il numero di segmenti viene determinato dal
parametro "plot points". Generalmente impostando un numero di circa 100/giro si ottengono delle curve
praticamente continue.
Notare che oltre ad un' utilità puramente estetica, i punti sono un modo per marcare con precisione la
lunghezza della curva. Infatti i punti suddividono esattamente la curva in segmenti curvilinei di lunghezza
π/10.
Meridiani
I meridiani sono a tutti gli effetti delle curve che si ottengono
sezionando la sfera centrata nell'origine con piani passanti per l'asse
z. I meridiani appartengono al sistema di coordinate sferiche e sono
individuati con il raggio della sfera e l'angolo di longitudine misurato
a partire dal meridiano di riferimento, che per convenzione, si fa
coincidere con quello passante per l'asse x. L'angolo è considerato
positivo se ruota in senso antiorario rispetto ad un osservatore posto
sul polo superiore (ovvero se tende a portare la freccia x su quella y)
Dal menu
Equa/Point/Meridian...
Inserire il raggio e la
longitudine del meridiano
che si vuol tracciare
Foxes Team 25
Grafici 3D con Winplot
Come anticipato prima, i meridiani sono archi di circonferenza e sono trattati da Winplote come curve. Nel
finestra "Inventory" è possibile vedere infatti le loro equazioni parametriche e modificare i loro attributi
(colore, spessore, ecc) come ogni altra curva.
Animazione
Il range del parametro "a" deve essere correttamente impostato
tramite il menu di animazione, Anim/Parameters A-W...
Selezionare il parametro A, inserire il limite sinistro "0" nel
campo e premere "set L"; inserire ora il limite destro "4pi" nel
campo e premere "set R" (il programma converte
automaticamente il numero in decimale "12.56637").
Ora si può muovere la barra per vedere il movimento sul grafico
Premendo "autocyc" si attiva la funzione di animazione in modalità ciclica che consente di ripetere
all'infinito il movimento orbitale. L'effetto è veramente suggestivo! Premere "S" per rallentare, "F" per
accelerare e "Q" per interrompere la modalità di animazione.
Se si preme "autorev" il movimento si svolge fino al limite destro e dopo ritorna indietro, poi avanti e poi
ancora indietro, all'infinito.
Notare che per invertire il movimento del punto basta semplicemente sostituire "a" con "-a" nelle
corrispondenti equazioni parametriche del punto.
Si noti anche che si è scelto di visualizzare il box per evidenziare l'effetto 3D
L'animazione può essere attivata per qualunque oggetto grafico le cui equazioni dipendano da uno o più
parametri (A, B, C... Z). I parametri di animazione sono differenti dai parametri (x, y, x, t, u, r) usati per
Foxes Team 26
Grafici 3D con Winplot
definire le equazioni. Infatti se, ad esempio, variamo il valore dei parametri T o U ci accorgiamo che
qualunque superficie definita con le equazioni parametriche [x = f(t,u), y = g(t,u), z = h(t,u)] non si muove.
Vediamo quindi come simulare il moto degli oggetti 3D
Immaginiamo di avere un sistema planetario, approssimato con una sfera centrata ruotante attorno al proprio
asse e un satellite, pure sferico, ruotante intorno al primo corpo con un orbita circolare
Al variare di un parametro, esempio A, il satellite ruota intorno alla sfera la quale ruota anch'essa con un
tempo di rotazione, che ipotizziamo, metà del tempo di rivoluzione del satellite.
Per far questo, definiamo innanzitutto la sfera centrale per mezzo delle equazioni parametriche1
terra ≡ [x = sin(u)cos(t+a) , y = sin(u)sin(t+a), z = cos(u) ] 0 ≤ u ≤ π, 0 ≤ t ≤ 2π
variando il parametro 0 ≤ a ≤ 2π la sfera centrale compie una rotazione completa attorno a se stessa
Definiamo le equazioni del satellite
luna ≡ [x = 0.3sin(u)cos(t)+2cos(2a) , y = 0.3sin(u)sin(t)+2sin(2a), z = 0.3cos(u) ] 0 ≤ u ≤ π, 0 ≤ t ≤ 2π
e completiamo il grafico con le equazioni parametriche dell'orbita2
orbita ≡ [x = 2cos(t) , y = 2sin(t), z = 0 ] 0 ≤ u ≤ π, 0 ≤ t ≤ 2π
Trascinando la barra di scorrimento vedremo il sistema muoversi di conseguenza. Oppure possiamo attivare
il ciclo continuo del moto premendo "autocyc" e "Q" per fermarlo. Anche in un caso così semplice l'effetto è
sorprendente.
Si noti che, variando il parametro A fra il limite minimo e massimo la sfera compie un giro su se stessa
mentre il satellite compie due giri di rivoluzione.
1
Sarebbe semplice definire in coordinate polari l'equazione r = 1, ma la sfera sarebbe fissa. Per poter effettuare il
movimento di rotazione si devono usare le equazioni parametriche
2
Si noti che in questo caso abbiamo introdotto una superfice parametrica con z = 0 per ottenere il grafico di un curva.
Avremmo potuto introdurre l'orbita direttamente come un semplice curva parametrica ma in questo caso l'orbita dietro
la sfera non sarebbe stata nascosta perdendo così l'effetto 3D. Infatti, nella corrente versione di Winplot 11/May/2007,
le curve sono trasparenti rispetto alle superfici.
Foxes Team 27
Grafici 3D con Winplot
Intersezioni
Nel grafico principale è possibile sovrapporre diversi grafici e curve. Per ogni coppia di essi, Winplot
consente di visualizzare le loro intersezioni e, limitatamente alle funzioni esplicite, calcolare le linee o i punti
d'intersezione.
Esempio. Calcolare le intersezioni fra la superficie iperbolica S: z = x2 − 4y2
ed il segmento r: = t/2 ; y = t; z = 2t-3/4 con 0 ≤ t ≤ 1.
La superficie iperbolica viene creata direttamente dal menu Equa/Explicit... vincolando le variabili nel
range 0 ≤ x ≤ 1, 0 ≤ y ≤ 0.5
Il punto verrà visualizzato sul grafico e aggiunto al catalogo degli oggetti (Inventory)
(x,y,z) = (0.12700832253022, 0.25401664506044, -0.24196670987911)
Si nota la grande precisione con cui, mediante un algoritmo iterativo di approssimazione, è stato calcolato il
punto. Se si preferisce, è possibile salvare le coordinate (x, y, z, t) mediante il tasto "save", in altrettanti
parametri (A, B, C, D) allo scopo di poterli utilizzare in un secondo momento
Foxes Team 28
Grafici 3D con Winplot
Winplot consente di visualizzare, sia pur approssimativamente, anche le intersezioni fra superfici.
Esempio. Trovare le intersezioni fra l'ellissoide: x2/4+y2/9+z2 = 1ed il piano x+y = 0.
Prima di tutto trasformiamo l'equazione implicita dell'ellissoide nelle corrispondenti equazioni parametriche
x2/4+y2/9+z2 = 1 ⇒ x = 2sin(u)cos(t); y = 3sin(u)sin(t); z = cos(u) 0 ≤ t ≤ 2π , 0 ≤ u ≤ π
Il grafico mostra chiaramente il bordo frastagliato dell'intersezione ma, ovviamente, questo non è possibile in
quanto entrambe le due superfici sono continue. Questo effetto è dovuto unicamente all'algoritmo di disegno
In questo caso, poichè la superfice è di tipo parametrico non possiamo effettuare il calcolo dell'intersezione.
Il calcolo è invece possibile quando le superfici sono di tipo esplicito come ne seguente esempio
Trovare l'intersezione fra le due superfici
1
z= , x + y + z −1 = 0
1+ x + 2 y2
2
Come si vede anche in questo caso il bordo dell'intersezione appare frastagliato. Tale effetto può essere
attenuato aggiungendo la curva d'intersezione, come si vede nel grafico a destra1.
1
L' occhio umano è molto sensibile ai contorni ma meno alle sfumature. Per questo, aggiungendo la curva
d'intersezione dello stesso colore di una delle due superfici, si riesce meglio a dare l'idea della continuità e a ridurre le
imperfezioni.
Foxes Team 29
Grafici 3D con Winplot
Per cancellare la curva, ad esempio per cambiare colore, premere "del all" e ricominciare.
Le curve d'intersezione sono oggetti del catalogo visualizzati con la primitiva
{plane{[1,1,1];(0,0,1)}} X {z = 1/(1+x^2+2y^2)}
Possono essere editate, cancellate e nascoste come le altre curve ma non hanno - purtorppo - la caratteristica
di tabulazione
Il grafico 2D visibile durante la ricerca della curva d'intersezione (richiamabile anche con il tasto "see")
rappresenta la "traccia", cioè la proiezione della curva stessa sul piano x-y. Infatti, se nell'esempio precedente
orientiamo la normale del piano perpendicolare all'asse z, cioè "plane{[1,1,0];(0,0,1)}", otteniamo i seguenti
grafici
1
Riferendoci alla corrente versione 11/May/07 si deve dire che questa procedura non è una delle meglio riuscite. alcune
utili funzionalità quali il cambio della dimensione della curva e la tabulazione sono del tutta assenti. Ma, nel complesso,
è comunque funzionale e vale la pena di provarla.
Foxes Team 30
Grafici 3D con Winplot
Tubi
Per costruzione, le circonferenze sono sempre perpendicolari alla curva generatrice e quindi anche le sezioni
trasversali di un tubo sono sempre circolari. In generale le sezioni non sono costanti poichè il raggio r può
dipendere dal punto P ovvero dal parametro t
In generale le equazioni parametriche dei tubi sono molto complicate; Winplot ha un tool specifico per la
loro generazione attivabile dal menu Equa/Tube.... Il pannello è molto simile a quello già visto per le curve
eccetto che è presente un campo in più per inserire l'equazione parametrica del raggio r(t).
La curva può essere indifferentemente spaziale o piana; in quest'ultimo caso è conveniente utilizzare il piano
x-z (ovvero y-z). Gli esempi seguenti mostrano tubi generati da curve piane polinomiali, rispettivamente, di
2°, 3° e 4° grado
NB. Winplot interrompe il tubo quando la curvatura è nulla, ovvero quando tutte le derivate seconde sono
nulle. Questo può accadere in presenza di un flesso come nel grafico centrale o anche senza flesso come nel
grafico a destra.
tube(cos(3t), sin(3t), 0.5t); r = 0.3, tube(cos(t), sin(t), 0.5sin(2t)); r = 0.2 tube(cos(2t),sin(2t),sin(t)); r = 0.3
0< t < 2π 0< t < 6 0< t < 2π
NB. Per ottenere una superfice liscia occorre aumentare il numero dei segmenti cambiando il parametro
"divisions" ; solitamente un buon compromesso è pari a 36n , dove n è il numero di avvolgimenti del tubo.
Foxes Team 31
Grafici 3D con Winplot
Foxes Team 32
Grafici 3D con Winplot
B
f(x)
z
x
g(x) B B B
A
A A A
x x x
Per ogni punto x, si determina il segmento AB = f(x) − g(x) come distanza fra le due funzioni. Il
valore assoluto |AB| del segmento costituisce la base della sezione del solido. Variando x, la relativa
sezione si muoverà lungo l'asse x tracciando la superficie di un solido (estrusione).
Le sezioni possono essere: rettangolari, triangolari o ellittiche.
L'altezza z della sezione può essere impostata ad un determinato
valore oppure uguale alla base (e in tal caso avremo delle sezioni:
quadrate, triangolari equilatere, circolari). In questo caso se la base
diminuisce, allora, anche l'altezza diminuisce di conseguenza. In tali
casi il solido generato avrà l'aspetto cuneiforme B
Si fa osservare che se il segmento è negativo, anche l'altezza z viene A
tracciata nella direzione opposta. A
Vediamo quindi l'esempio di un caso semplice: due rette parallele orizzontali f(x) = 1, g(x) = −1
f(x)
g(x)
scegliere il tipo di sezione ed,
eventualmente, impostare l'altezza
voluta "height". E' possibile anche
inserire una funzione di x
Foxes Team 33
Grafici 3D con Winplot
Vediamo un altro interessante esempio realizzato con le bisettrici f(x) = x, g(x) = − x, per -1 ≤ x ≤ 1
In questo esempio è più difficile riconoscere il tipo di sezione. Le funzioni sono:: f(x) = (1-x2)½,
g(x) = −(1-x2)½, per -1 ≤ x ≤1. I grafici, con l'opzione "double" disattiva", sono stati ottenuti, da
sinistra a destra, con la sezione quadrata, equilatera e circolare
L'altezza z può essere una funzione di x del tutto indipendente. I grafici seguenti sono ottenuti con
le funzioni dell'esempio precedente selezionando la sezione quadrata
L'altezze sono date dalle funzioni: z(x) = 1+x/2, z(x) = 1+x2/2, z(x) = 1/(1+x2)
Foxes Team 34
Grafici 3D con Winplot
Solidi di rivoluzione
Si tratta, in generale, del solido generato dalla y y = f(x)
rotazione di una curva piana attorno ad un asse,
x oppure y.
Se la curva è una funzione esplicita f(x), il x
volume e la superfice del solido possono essere
calcolati con formule formalmente più semplici
Volume Supeficie
b b
Rotazione intorno
Vx = π ∫ [ f ( x)] dx S x = 2π ∫ f ( x) 1 + [ f ' ( x)] dx
x 2 2
all'asse x
a a
y b b
Rotazione intorno
V y = 2π ∫ x f ( x)dx S y = 2π ∫ x 1 + [ f ' ( x)] dx
2
all'asse y
a a
Winplot consente di calcolare numericamente i valori di questi integrali come pure, grazie alla
potenza della sua grafica 3D, di visualizzare il solido di rotazione.
Esempio. La funzione f(x) = ln(1+x) , per 0 ≤ x ≤ 2, ruota di una angolo giro completo attorno
all'asse x e poi all'asse y. Calcolare il volume e la superfice dei solidi di rivoluzione nei due casi.
Dopo aver definito la funzione nel grafico 2D richiamiamo dal menu One\Surface of revolution... il
pannello di controllo per generare i solidi di rivoluzione
L'asse di rotazione può essere
qualunque retta del piano definita
con i coefficenti a,b, c
Il tasto "x-axis" imposta quelli
dell'asse x.
Inserire gli estremi "arc start" = 0
e "arc stop" = 2. Premere "see
arc" per marcare il tratto di f(x)
soggetto alla rotazione.
Indipendentemente dalla creazione del grafico 3D, il programma permette comunque di calcolre il
volume e la superficie del solido di rivoluzione
Foxes Team 35
Grafici 3D con Winplot
Foxes Team 36
Grafici 3D con Winplot
(cos(3t) , sin(t)) , 0 ≤ t ≤ π
(cos(t) , sin(t)+1) , 0 ≤ t ≤ 2π
(cos(t) , sin(2t)/2+1) , 0 ≤ t ≤ 2π
(sin(2t) , sin(t)/2+1) , 0 ≤ t ≤ 2π
Foxes Team 37
Grafici 3D con Winplot
r = 1+cos(2t), 0 ≤ t ≤ 2π
r = cos(2t), 0 ≤ t ≤ 2π
r = 1+0.5cos(2t), 0 ≤ t ≤ π
r = 1+0.5cos(2t), 0 ≤ t ≤ π/2
r = (cos(4t)+3)/4, 0 ≤ t ≤ 1
Foxes Team 38
Grafici 3D con Winplot
Appendice
Mappa dei fonts
Ogni testo che appare in Winplot può essere modificato nel tipo, stile e dimensione. Tuttavia gli
strumenti per farlo sono "sparpagliati" un po' da tutte le parti. Questa mappa aiuta a ritrovali
velocemente.
Comando menu
Misc/Font/Scale on axes
View/Axes/Font
Equa/Fonts
Misc/Fonts/Coordinates
Misc/Fonts/Inventory Misc/Fonts/Inventory
Foxes Team 39
Grafici 3D con Winplot
Funzioni e costanti
La libreria delle funzioni di Winplot, visualizzabile anche dal menu Equ/Library, è piuttosto ricca e
facile da usare allo stesso tempo.
+, − , / , * , ^
ln , log , exp , (logaritmo naturale, logaritmo in base 10, esponenziale naturale)
pi = 3.14159265358979
deg = 0.0174532925199433 (π/180)
ninf , pinf, ritornano rispettivamente: -1.74E+18, 1.74E+18
sin , cos , tan , csc , sec , cot ,
sinh , cosh , tanh , coth , sech , csch ,
arcsin , arccos , arctan , arccot , arcsec , arccsc ,
argsinh , argcosh , argtanh , argcoth , argsech , argcsch ,
floor , ceil , int,
sqr , sqrt,
! (fattoriale),
abs(x) = |x| ,
NB .
Le funzioni trigonometriche inverse accettano l'argomento in radianti.
La funzione int(x), diversa dalla simile funzione del linguaggio VB o degli spreedsheet Calc ed Excel,
ritorna sempre il numero x senza la parte decimale. Es int(2.64) = 2, int(−6.3) = −6.
La funzione floor(x) ritorna sempre il numero intero minore o uguale a x; è equivalente alla funzione "int"
del linguaggio VB, mentre ceil(x) = floor(x)+1
Le funzioni sqr(x) e sqrt(x) sono indentiche e ritornano la radice quadrata.
L'operatore ^ serve sia come elevamento a potenza intera (5^3 = 5·5·5) , sia come esponenziale
x·ln(a)
(a^x = e ). In quest'ultimo caso, deve essere a >0.
L'operatore * è facoltativo:
2x e 2*x sono equivalenti come 2pi e 2*pi;
xx è equivalente a x*x ovvero a x^2 (quest'ultima però ci piace di più) .
ax^2 + bx+c è equivalente a a*x^2+b*x+c
L'operatore * è obbligatorio quando si moltiplicano le costanti con le variabili: deg*x, pi*x, ecc..
Foxes Team 40
Grafici 3D con Winplot
frac(x) = x-int(x) ,
hvs(x) = (1+sgn(x))/2 , (funzione di Heaviside)
chi(a,b,x) = hvs(x-a)-hvs(x-b), (funzione intervallo)
erf(x) = the standard error function ,
binom(n,r) = n!/r!/(n-r)! ,
sum(f(n,x),n,a,b) = Σ f(n,x) , per a ≤ n ≤ b , n intero
prod(f(n,x),n,a,b) = Π f(n,x) , per a ≤ n ≤ b, n intero
rnd(x) = random value between -x and x ,
log(b,x) = ln(x)/ln(b) ,
gauss(x) = exp(-0.5x^2)/sqrt(2pi) ,
gamma(x).
NB.
Il valore di n deve essere sempre intero, altrimenti le funzioni non ritornano nulla
La funzione frac(x) ritorna la parte decimale di x col segno: frac(-2.1) = -0.1, frac(2.1) = 0.1
La funzione sgn(x) ritorna 1 se x ≥ 0 , -1 se x < 0
La funzione hvs(x) ritorna 1 se x ≥ 0 , 0 se x < 0
La funzione chi(x) ritorna 1 se a ≤ x ≤ b, 0 altrove
Le funzione sommatoria e produttoria sono molto utile per scrivere lunghe formule in modo compatto
Es: sum(x^n/n! , n , 0 , 7) = 1 + x + x2/2 + x3/6 + x4/24 + x5/120 + x6/720 + x7/5040
prod(x-n , n, 1, 5) = (x-1)(x-2)(x-3)(x-4)(x-5) = x5 - 15x4 + 85x3 - 225x2 + 274x - 120
f1(x) , x ≤ x1,
definisce la
f2(x) , x1 < x ≤ x2
joinx(f1(x)|x1 , f2(x)|x2 ,..., fn(x)) funzione
.....
⇒
fn(x) x > xn-1.
Esempio:
definisce la ⎧x2 + 1 , x ≤ 1
⎪
joinx(x^2+1 |1 , 3-x |3 , exp(x-3)-1) funzione f ( x) = ⎨3 − x , 1 < x ≤ 3
⇒ ⎪e x −3 − 1 , x > 3
⎩
Foxes Team 41