Sei sulla pagina 1di 42

Grafici 3D con Winplot

Grafici 3D con Winplot


Winplot è un ottimo programma freeware della Peanut Software per il
disegno di grafici 2D e 3D.
Queste note, attraverso semplici esempi, spiegano come usarlo mettendo in
evidenza le sue molteplici potenzialità.

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

Grafici 3D con Winplot


Questo documento illustra la capacità di Winplot1 di creare grafici 3D finalizzato allo studio delle
superfici e delle curve matematiche nello spazio tridimesionale.

Per iniziare un grafico 3D selezionare "3-dim" dal menu


Window, opppure, più velocemente premendo F2.
Verrà aperta una finestra, in tutto simile a quelle già viste
per i grafici 2D, con lo stesso menu di base

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

Per default, la funzione impostata è: sin(xx+yy)/(xx+yy),


ovvero:
sin( x 2 + y 2 )
z=
x2 + y2
Nel range -π ≤ x ≤ π, -π ≤ y ≤ π con 36 divisioni per ogni
intervallo. Il range zmin ≤ z ≤ zmax viene calcolato
automaticamente dal programma.
I valori (xmin, ymin, zmin, xmax, ymax, zmax ) definiscono il
parallelepipedo in cui viene disegnato il grafico (drawing box).
Vedremo successivamente come cambiare le sue dimensioni.

Il grafico a sinistra mostra la superficie della


funzione f(x, y)
Notare che la funzione non è definita
nell'origine ma si può dimostrare che

sin( x 2 + y 2 )
lim =1
x →0
y →0
x2 + y2

Nonostante la singolarità in (0,0), Winplot


crea il grafico corretto

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.

Assi e drawing box.


Dal menu View/Axes, selezionare "Axes" (Ctrl+A) , "Shows Label", "Arrows"

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

Imposta la lunghezza dell'asse z da 1.3 a 2.5.


Per ripristinare il calcolo automatico selezionare
"unlock"

La "scatola" del grafico puo essere attivata dal menu View/Box/Box (ctrl+B)

View/Box/ View/Box/

Il comando "Hide segment" elimina le line nascoste, cioè


quelle che sono coperte dalla superficie.
Nota che questo comando elimina anche le linee degli assi
Quando si vogliono contemporaneamente vedere gli assi e
la scatola, un compromesso accettabile è quello di lasciare i
segmenti nascosti dando meno contrasto alla scatola, ad
esempio, scegliendo il colore grigio nel menu
View/Box/Color...

Il punto di osservazione del grafico


(observer) sono le coordinate (xo, yo, zo) in
cui s'immagina posizionato l'occhio
dell'osservatore.
Per visualizzare/modificare le coordinate
dell' osservate selezionare
View/Observer/Coordinates...

Muovendo il grafico con i tasti freccia, i tasti PagUp e PagDn,


si può vedere che il punto di osservazione cambia O
conseguentemente. Selezionando "spherical" e "degrees" le
coordinate sono trasformate in sferiche (ρ, θ, φ). Normalmente
il punto di osservazione è calcolato da WinPlot per un buona
visione e non c'è bisogno di modificarlo. Solo per particolari
effetti il punto di osservazione può essere avvicinato o
allontanato per mezzo dei tasti "Ins" e "Del".

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

I grafici, appaiono come un reticolo di maglie rettangolari.


Solitamente i grafici così ottenuti sono già sufficientemente
buoni. Mediante alcuni parametri (non proprio immediati) è
però possibile aggiungere le ombre, colorare la superficie,
aggiungere il reticolo, colorare la superficie interna diversa
da quella esterna, ecc.
Vediamo come

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

Ad esempio tracciamo il grafico del paraboloide:


z = x 2 + y 2 per − 1 ≤ x ≤ 1, − 1 ≤ y ≤ 1
Attivare il Box, selezionare "hide segments" e scegliere il colore per la griglia. Il
grafico apparirà come nella figura a sinistra. Adesso selezionare "Col 1" per il
colore interno (esempio verde) e "Col 2" per il colore esterno (ad esempio
giallo) ed attivare "Shade" (assicurarsi che l'opzione "Spectrum" sia
deselezionata).

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

La funzione non è definita nell'origine (0,0) ed è illimitata. Questo


fatto comporta una difficoltà intrinseca nel calcolare le dimensioni
della scatola di disegno. Probabilmente il grafico ottenuto
assomiglierà a quello a sinistra. Le dimensioni del Box sono visibili
con il tasto "Box" del pannello "Inventory"

E' possibile limitare il lati


della scatola di disegno
inserendo 6 opportuni valori e
selezionando "Lock position"
Nel nostro caso è sufficiente
inserire solo il vincolo
0 < z < 10 per avere un
grafico accettabile

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.

Nota. Nella seconda immagine è stata deselezionata


l'opzione "cap extremes" altrimenti la parte anteriore
sarebbe stata coperta dalla faccia della scatola impedendo
così la vista interna.
Nota che, per entrambe le immagini sono stati impostati 3
differenti colori per: griglia, superficie interna ed esterna

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

I dati della finestra possono essere


selezionati (ctrl+A), copiati (ctrl+C)
e importati (ctrl+V) in un foglio
elettronico come Excel o Calc per
ulteriori elaborazioni. Il grafico a
destra è stato realizzato, ad esempio,
importando i dati in una matrice
Excel, con il tipo di grafico
"Superficie".

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

Premendo "see all" i livelli


verrano visualizzati sul piano
xy in un grafico 2D separato.
Per cancellare i livelli,
premere "del all" e poi ancora
"keep changes".
Per tracciare un solo livello,
inserire il valore del livello
nel campo "curr", premere
"search curr" e poi ancora
"keep changes".
Attenzione che per fermare la
ricerca, spesso, si deve
premere il tasto "Q" (Quit)

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

Per inserire un semplice testo nei grafici, selezionare


l'opzione "Text" dal menu "Btns". Questo comando attiva la
funzionalità di editor direttamente dal tasto destro del mouse.
E' possibile agganciare il testo alla figura o alla finestra e
modificare gli attributi più importanti (font, colore,
background, etc). Con un po' di pazienza si trova la
combinazione giusta. Per muovere i testi basta semplicemente
selezionarli con il tasto sinistro del mouse e trascinarli

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 }

Una delle più belle superfici parametriche è ⎧ x = sin 2 u ⋅ sin t ⋅ (6 / 5) t


sicuramente la seguente ⎪ ⎧0 ≤ u ≤ π
A prima vista risulta difficile immaginare che queste ⎨ y = sin u ⋅ cos t ⋅ (6 / 5)
2 t

equazioni, apparentemente così semplici, modellano ⎪ ⎩− π / 4 ≤ t ≤ 5π / 2
⎩ z = sin u ⋅ cos u ⋅ (6 / 5)
t
la superficie di una conchiglia (un nautilus per
l'esattezza).
Vediamo il grafico generato da Winplot
Dal menu Equa/Parametric... scriviamo le seguenti formule:
x = 1.2^t*(sin(u)^2*sin(t)), y = 1.2^t*(sin(u)^2*cos(t)), z = 1.2^t*(sin(u)*cos(u))
Introduciamo il range -0.785 ≤ t ≤ 7.85 , 0 ≤ u ≤ 3.141. Selezioniamo un colore chiaro (ad esempio giallo)
ed attiviamo la funzione "spectrum" per creare gli effetti d'ombra.

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:

⎧ x = (1 + 0.5) ⋅ cos u ⎧ x = (1 + 0.5) ⋅ cos u cos t


⎪ ⎪ 0 ≤ t ≤ 2π
γ ≡ ⎨y = 0 Γ ≡ ⎨ y = (1 + 0.5) ⋅ cos u sin t con
⎪ z = 0.3 ⋅ sin u ⎪ z = 0.3 ⋅ sin u 0 ≤ u ≤ 2π
⎩ ⎩

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

x = cos(t); y = sin(t); z = u x = max(min(sqr(2)*cos(t),1),-1);


x = u; y = sin(t); z = cos(t) y = max(min(sqr(2)*sin(t),1),-1); z = u
0 < t < 2π , 0 < u < π x = max(min(sqr(2)*cos(t),1),-1);
y = u; z = max(min(sqr(2)*sin(t),1),-1)
0 < t < 2π , 0 < u < π

x = int(u)*cos(t); y = int(u)*sin(t); z = u x = int(u)*cos(t); y = int(u)*sin(t); z = 6-u


0 < t < 2π , 0 < u < 2π 0 < t < 2π , 0 < u < 2π

x = cos(t)*(cos(2t)^2+2)/3; x = 2cos(t); y = sin(t); z = u


y = sin(t)*(cos(2t)^2+2)/3; z = u/2, 0 < t < 2π , 0 < u < 2π
0 < t < 2π , 0 < u < 2π

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

0 ≤ t ≤ 2π , π ≤ u ≤ 2π 0 ≤ t ≤ π , 0 ≤ u ≤ π/2 0 ≤ t ≤ π/2 , 0 ≤ u ≤ π/2

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

Reticoli cilindrici e cartesiani


La scelta fra sistema di coordinate cilindriche e cartesiane influisce nella semplificazione delle equazioni ed
anche sull'aspetto finale del grafico.
Infatti le superfici vengono disegnate "affettandole" z z
attraverso superfici isolivello, che nel caso delle
coordinate cartesiane sono piani perpendicolari agli
assi x, y mentre in quelle cilindriche sono cilindri
retti con l'asse su z e piani passanti per l'asse z y y
stesso. Le curve che si ottengono dall'intersezione
della superficie di cui si vuole il grafico con le
superfici isolivello poste a distanza regolare forma il x x
reticolo che dà l'aspetto finale del grafico

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.

Coordinate cartesiane Coordinate cilindriche

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.

In Winplot, per inserire una funzione implicita, selezionare il menu


Equ/Implicit...
Digitare l'equazione completa 2(x^4+y^4)+z^2 = 4
Winplot propone le dimensioni del box che, in questo caso, sono sufficienti
a contenere tutto il grafico. Accettare i valori e premere OK
A questo punto, l'equazione compare nel pannello "inventory" ma il grafico
non compare. Qualcosa di errato? No, semplicemente dobbiamo generare le
curve di livello attraverso il tasto "levels"

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

E' possibile vedere tutte le


superficie di livello
proiettate in un piano,
perpendicolare all'asse z nel
nostro caso.
Per far questo aprire il
pannello "levels" e premere
il tasto "see all".
Il grafico delle curve di
livello può essere poi
manipolato aggiungendo gli
assi, griglie, testo, ecc.

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

Curve di livello rispetto all'asse x Curve di livello rispetto all'asse x e y

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

Anche con le curve di livello è possibile


usare il box per effettuare delle sezioni. In
generale risultano molto meno chiare delle
altre ma possono essere talvolta utili.
Nel nostro esempio basta imporre la
condizione -2.2 < z < 0 per eliminare la parte
inferire del grafico

Foxes Team 21
Grafici 3D con Winplot

Punti, segmenti e vettori


Elementi semplici quali punti e segmenti, solitamente
trascurati, possono essere vantaggiosamente aggiunti ad ogni
grafico 2D o 3D per dare l'aspetto più curato e professionale..
Dal menu Equ/Point si possono inserire punti con diversi
tipi di coordinate: rettangolari, sferiche, cilindriche
I segmenti possono essere tracciati con una freccia ("arrow")
ad un estremo per rappresentare i vettori.
Interessante è la possibilità di tracciare automaticamente le
linee di proiezione di ogni punto ("anchors"), tratteggiate o
continue

Selezionare "p1" per


aggiungere una freccia
nel primo estremo del
segmento; "p2" nel
secondo estremo o
"both" ad entrambi. Se
non si vuole le frecce
selezionare "none".

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.

Chiudere il pannello e trascinare il testo con il mouse nella


posizione voluta, solitamente vicino al punto a cui è
agganciato. In tal modo, quando il grafico viene ruotato, il
punto e quindi il testo agganciato, seguiranno rigidamente
il movimento della figura.
Ad un punto possono essere rigidamente agganciati quanti
testi vogliamo, posizionati in tutte le parti del grafico.

NB. Un testo agganciato segue anche il cambio di scala.


Tuttavia, poiché il font è fisso, la dimensione del testo non segue il corrispondente cambio di scala. Può
accadere quindi che il testo vada a nascondere una parte del grafico, per cui sarà necessario cambiare
manualmente il font del testo.

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.

Prepariamo invece in uno spreadsheet tipo Excel o Calc, tre colonne


contenenti le coordinate dei punti (x, y, z).
Mediante il trascinamento e i comandi copia-incolla (ctrl-c, ctrl-v) è
possibile completare rapidamente a tabella (125 x 3)
Selezionare ora tutta la tabella (intestazione esclusa) e copiarla (ctrl-c).
La tabella si trova ora nella clipboard di Windows.
Apriamo un nuovo grafico 3D e ridimensioniamo il catalogo in modo
da contenere tutti i punti più qualche eventuale oggetto grafico che ci
dovesse servire in futuro; per esempio portiamolo, a 150 mediante il
comando: Equa/size of inventory...(vedi nota piè-di-pagina)

mediante il comando: Equa/point/list...aprire la finestra per i


caricamento automatico dei punti.
Occorre tener ben presente che tutti i punti caricati avranno le
stesse caratteristiche. E' vero che ogni singolo punto può essere
successivamente modificato ma sarebbe oltremodo laborioso farlo
per ognuno dei 125 punti caricati. Quindi ricordarsi di scegliere i
principali attributi: il tipo ("solid", "circle"), la grandezza ("dot
size") ed il colore ("color")

Assicurarsi che l'opzione "from clipboard" sia selezionata e


premere "plot". Il grafico verrà automaticamente riempito di
punti. Ad ogni punto corrisponde un'entrata nel catalogo

Per generare gli spigoli


del cubo sono stati
modificati singolarmente
i 4 punti (1,1,1), (1,1,0),
(1,0,1), (0,1,1) inserendo
l'opzione "anchors"

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.

Ad esempio si vuole creare un serie di punti equidistanti


lungo la curva elicoidale descritta dalle seguenti
equazioni parametriche

⎧ 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)

Per visualizzare bene i meridiani si deve prima tracciare


la sfera di riferimento. Dal menu Equa/Spherical
introduciamo l'equazione r = 1. Successivamente
tracciamo il meridiano 0 e il meridiano di longitudine
+25.2° ≅ +0.44 rad

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.

Moto lungo una curva


L' animazione, una delle funzionalità più riuscite e geniali di Winplot, permette di creare effetti spettacolari
oltre che didatticamente molto efficaci. Il seguente esempio simula il moto di due corpi in rotazione.
Prima di tutto definiamo le curve delle loro orbite ellittiche E1, E2 mediante le equazioni parametriche
E1 ≡ [ x = 3cos(t), y = 2sin(t), z = cos(t) ], E2 ≡ [ x = 1.5cos(t), y = sin(t), z = 0.5cos(t) ], 0 < t < 2π

In secondo luogo definiamo il moto dei 2 corpi inserendo due


punti M1, M2 aventi per coordinate (x,y,z) le seguenti funzioni
dipendenti dal parametro "a".
M1 ≡ [ x = 3cos(a), y = 2sin(a), z = cos(a) ],
M2 ≡ [ x = 1.5cos(a/2), y = sin(a/2), z = 0.5cos(a/2) ]
Scegliere dei punti piuttosto grossi, esempio dot size = 8 per dare
l'idea dei pianeti

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π

Apriamo il controllo di animazione dal menu


Anim/Parameters A-W... e definiamo i limiti del
parametro A: inseriamo il valore 0 e premiamo "set
L" per definire il limite sinistro; inseriamo il valore
2pi e premiamo "set R" per definire il limite destro
Adesso il nostro sistema è pronto

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

Dai grafici si osserva che l'intersezione è un


punto, le cui coordinate possono essere
calcolate dal menu Two/Intersections/Curve-
Surface.... Selezionare nel primo campo la
superficie e nel secondo, la retta.
Automaticamente Winplot calcola il primo (e
unico) punto d'intersezione X le cui coordinate
sono visualizzate insieme al parametro t
corrispondente. Se si vuole riportare il punto
su grafico premere "mark point"

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

Può accadere che l'insieme


intersezione sia formato da più punti
come, ad esempio, quando la curva è
l'ellisse di equazioni parametriche
x = cos(t); y = 0; z = 3/4sin(t)
In tal caso premere ripetutamente il
tasto "next intersection" per trovare
tutti i punti dell'intersezione.
Ricordarsi di premere "mark point"
ogni volta per aggiungere il punto al
grafico

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 ≤ π

Mentre le equazioni del piano saranno


inserite con il menu Equa/plane...

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

La prima funzione vieneinserita con il menu Equa\Explicit...


La seconda equazione definisce un piano, che viene tradotto nella primitiva "plane{[1,1,1];(0,0,1)}" per
mezzo del comando Equa\Plane... visto precedentemente.

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

Vediamo ora come generare la curva d'intersezione1.

Per generare la curva d'intersezione fra le due superfici lanciamo il


comando a menu Two/Intersections/Surface-surface...
Comparirà la seguente maschera per scegliere la coppia delle
superfici. Nel nostro caso esiste solo una coppia e quindi troveremo
già impostati i campi di scelta (l'ordine è indifferente). Premere OK

Comparirà una seconda maschera.


La prima cosa da fare è scegliere il colore
della curva. Scegliamo il colore di una
delle due superfici (blu) e premiamo il
tasto "search". Il programma inizia la
ricerca della curva d'intersezione che
viene mostrata in una nuova finestra di
grafico 2D. Premere "Q" per interrompere
la ricerca e premere "keep changes" per
trasferire la curva sul grafico. Il tasto
"see" serve per visualizzare la finstra
grafico 2D

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

I tubi sono particolari superfici costruite attorno ad una curva T


γ(t), regolare, detta generatrice. Per ogni punto P si traccia la r
circonferenza di raggio "r" perpendicolare alla tangente T
dell curva stessa. Spostando il punto P si ottiene la superfice γ (t)
P

tubolare come luogo geometrico dei punti della circonferenza

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

tube(t, 0, t^2); r = 0.2 tube(t, 0 ,t^3); r = 0.2 tube(t,0,t^4); r = 0.2


-1< t < -1 -1< t < -1 -1< t < -1

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

tube(cos(2t), sin(2t), sin(2t)); tube(cos(t), sin(t), 0.01); tube(cos(t), sin(t), 0.01);


r = 0.3 , 0< t < 2π r = 0.1+0.1t, 0< t < 2π r = 0.1+0.2*sin(t/2)^2, 0< t < 2π

tube(cos(2t), sin(2t), t/2); tube(sin(t), cos(t), t); tube(t,cos(t),sin(t));


r = 0.1+0.1t, 0< t < 2π r = 0.1+0.1t, 0< t < 6 rad = 0.1+0.1t, 0< t < 6

tube(0, 0, t); r = 0.3 tube(0, 0, t); r = 0.3 tube(0, 0, t); r = floor(t)/2


tube(0, t, 0.2); r = 0.2 tube(0, t, 0.2); r = 0.2 0< t < 6
tube(t, 0, 0.2); r = 0.2 tube(t, 0, 0.7); r = 0.2
0< t < 1 0< t < 1

Foxes Team 32
Grafici 3D con Winplot

Solidi per sezioni


Questa funzionalità, sebbene attivabile dal menu dei grafici 2D, serve, in realtà a creare dei solidi
La costruzione dei solidi si ottiene con la seguente procedura.
Si comincia col tracciare due funzioni f(x) e g(x) sul piano di base;
y

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

Inserire l'intervallo [xmin ≤ x ≤ xmax]

aggiunge il solido riflesso rispetto al


piano di base x-y

numero di sezioni per "affettare"


il solido lungo l'asse x

Premere il tasto "see solid" per creare il grafico 3D


Il volume del solido apparirà al lato del corrispondente tasto "volume="

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 realizzeremo una tromba esponenziale a sezione quadrata.


Le funzioni sono: f(x) = ex, g(x) = −ex, per -2 ≤ x ≤ 0. In questo caso attiviamo l'opzione "double"
per rendere simmetrico il solido rispetto all'asse z, ed anche l'opzione View\Box\Cube.

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.

Premendo "see surface"


viene creato un nuovo grafico 3D
del solido di rivoluzione. In genere
si tratta di una rotazione completa
di 2π. Se si desidera una rotazione
parziale inserire l'intervallo di
rotazione nei campi "angle start e
"angle stop" e ripetere il
procedimento

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

Dal menu One\Mesurements,


selezioniamo "Surface area of
revolution..." per far comparire
il pannello di calcolo dell'integrale
superficiale.
Impostiamo l'asse di rotazione "x-
axis" ed inseriamo gli estremi "arc
start" = 0 e "arc stop" = 2.
Il valore comparirà a fianco del tasto
"Area".
Il pannello per il calcolo del volume,
"Volume of revolution..." è del tutto
equivalente.

Adesso ripetiamo il prcedimento


scegliendo l'asse y come asse di
rotazione. Premiamo l tasto "y-
axis"
Lasciamo gli estremi "arc start" =
0 e "arc stop" = 2. Premere "see
arc" per marcare il tratto di f(x)
soggetto alla rotazione.
Premiamo "see surface" per
generare il grafico 3D

Foxes Team 36
Grafici 3D con Winplot

Superfici di rivoluzione ottenute da equazioni parametriche


Winplot può creare il solido ottentuo dalla rotazione di una qualunque curva piana attorno agli assi
cartesiani. Grazie alla generalità delle curve parametriche è possibile ottenere gamma di solidi assai
più vasta di qella ottenibile con le funzioni esplicite
Di seguito sono mostrati alcuni esempi

(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

Superfici di rivoluzione ottenute da equazioni polari

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.

Le funzioni di base sono le seguenti:

+, − , / , * , ^
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..

Altre utili funzioni sono:

root(n,x) =, x1/n , n intero


power(n,x) = xn , n intero
iter(n,f(x)) = f(xn-1) = xn , n° iterazione
abs(x,y) = sqrt(x*x+y*y) ,
abs(x,y,z) = sqrt(x*x+y*y+z*z) ,
arg(x,y) = angolo polare t, con -pi < t <= pi, x = abs(x,y)cos(t), y = abs(x,y)sin(t) ,
max(a,b,..) , min(a,b,..) ,
mod(x,y) = x - |y|*floor(x/|y|) ,
sgn(x) = x/abs(x) ,

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

La libreria di Winplot contiene anche un utile costruttore di funzioni "a pezzi".

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

Esistono i corrispondenti costruttori per le variabili y, z chiamati rispettivamente: joiny e joinz

Foxes Team 41

Potrebbero piacerti anche