• Non ci sono risultati.

g++ -o programma programma.c -lplotter;

N/A
N/A
Protected

Academic year: 2021

Condividi "g++ -o programma programma.c -lplotter;"

Copied!
6
0
0

Testo completo

(1)

Libreria grafica libplot Uso

• Serve a visualizzare interattivamente i risultati dei programmi;

• per compilare usare

g++ -o programma programma.c -lplotter;

• includere sempre hplotter.hi;

Struttura del programma

• definire almeno un’istanza della classe Plotter e una della classe PlotterParams;

• chiamare nel giusto ordine le funzioni per inizializzare ;

• specificare sempre l’istanza della classe nelle chia- mate alle funzioni grafiche ;

• chiamare le funzioni per terminare;

(2)

Classi

Due classi vengono definite dalle plotutils per fare le animazioni: la classe Plotter che indica il disegno in s´ e, e la classe PlotterParams che permette di modificare i parametri e le caratteristiche del plot.

Funzioni per inizializzare e terminare

Se grafico ` e un’istanza della classe Xplotter e parametri

` e un’istanza della classe Plotterparams

• PlotterParams parametri(); definisce e inizializza i parametri.

• XPlotter = grafico(cin, cout, cerr,parametri)

”X” pu` o essere sostituito da ”PS”;

• grafico.openpl() per aprire il plot;

• grafico.closepl()

per chiudere il plot;

(3)

Funzioni per disegnare

• grafico.erase()

per cancellare il contenuto del plot;

• grafico.fspace(xini, yini, xfin, yfin) per definire le coordinate utente;

• grafico.fmove(x, y)

per spostare il cursore grafico in x,y;

• grafico.pencolorname(”red”)

per stabilire con che colore si disegna;

• grafico.flinewidth(0.25)

stabilisce la largezza della linea;

• grafico.fcircle(x, y, raggio) disegna una circonferenza;

• grafico.bgcolorname(”blue”) stabilisce il colore dello sfondo;

• grafico.fline(x1,y1,x2,y2)

disegna una linea;

(4)

Copia e incolla: un metodo semplice per fare cose complicate.

Per usare un tipo nuovo di programma non ` e di solito necessario capirlo profondamente: si pu` o cominciare facendo taglia e incolla sui programmi scritti da altri, come questo preso dalle pagine info, e cercare di utiliz- zarlo con piccole modifiche.

#include <plotter.h>

const int maxorder = 12;

void draw_c_curve (Plotter& plotter, double dx, double dy, int order) {

if (order >= maxorder)

plotter.fcontrel (dx, dy); // continue path along (dx, dy) else

{

draw_c_curve (plotter, 0.5 * (dx - dy), 0.5 * (dx + dy), order + 1);

draw_c_curve (plotter, 0.5 * (dx + dy), 0.5 * (dy - dx), order + 1);

} }

int main () {

// set a Plotter parameter PlotterParams params;

params.setplparam ("PAGESIZE", (char *)"letter");

PSPlotter plotter(cin, cout, cerr, params); // declare Plotter if (plotter.openpl () < 0) // open Plotter

{

cerr << "Couldn’t open Plotter\n";

return 1;

}

plotter.fspace (0.0, 0.0, 1000.0, 1000.0); // specify user coor system plotter.flinewidth (0.25); // line thickness in user coordinates plotter.pencolorname ("red"); // path will be drawn in red

plotter.erase (); // erase Plotter’s graphics display plotter.fmove (600.0, 300.0); // position the graphics cursor draw_c_curve (plotter, 0.0, 400.0, 0);

if (plotter.closepl () < 0) // close Plotter {

cerr << "Couldn’t close Plotter\n";

return 1;

}

return 0;

(5)

Analisi del programma

A una prima occhiata si vede subito che le istruzioni si

possono raggruppare in tre tipi: all’inizio (e alla fine)

quelle per inizializzare le capacit` a grafiche del sistema,

subito dopo quelle che definiscono lo spazio in cui si

lavora (dimensione della finestra, sistema di coordinate)

e infine vengono le funzioni che disegnano quello che ci

interessa. Possiamo quindi mantenere quasi inalterate

quelle appartenenti ai primi due tipi, cambiando a nostro

vantaggio quellle del terzo tipo Prima di far questo si

compila ed esegue il programma, e questo ci chiarir` a le

idee su come procedere per il caso che ci interessa.

(6)

Problema del biliardo con due sfere

Nel biliardo mostrato nell’esercizio, due sfere rimbalzano sulle pareti. Come si fa a tener conto dei loro urti?

Prima di tutto consideriamo che le sfere si urtano quando la loro distanza ` e < 2R. La componente della velocit` a tangente alla congiungente ~ ∆ = ~ x

2

− ~ x

1

i due centri resta inalterata, mentre le altre due componenti si scambiano.

~ v

10

= ~ v

1

+ ~ v

2k

− ~ v

1k

~ v

20

= ~ v

2

+ ~ v

1k

− ~ v

2k

Se

~

u = ( v ~

2

− ~ v

1

) · ~ ∆

2

∆ ~ abbiamo

~ v

10

= ~ v

1

+ ~ u ~ v

20

= ~ v

2

− ~ u

Attenzione alle condizioni iniziali!

Riferimenti

Documenti correlati

Le modalità operative di richiesta ed erogazione del contributo sono riportate all’art 7 della convenzione tra DiSCo ed il Destinatario (Allegato 3). Tutti i

a) “Beneficiario”: soggetto responsabile dell’avvio e dell’attuazione dell’intervento ai sensi dell’art.2 c.10 del Regolamento UE 1303/2013. b) “Proponente”: studente

Io non sono informata dagli operatori della morte di Casu neppure nella riunione avvenuta nel servizio ospedaliero proprio cinque giorni dopo quella morte, in

Ma, come abbiamo detto per la chiusura dei manicomi e degli Opg, le difficoltà in cui gli operatori lavorano non possono e non devono giustificare pratiche che

Tenuto dunque conto delle sentenze di condanna pronunciate nell’ambito dei menzionati procedimenti per detta imputazione e per l’intero arco temporale che qui rileva a

 Niente, perch´e dar`a un errore a tempo di compilazione Domanda 23 L’istruzione p.canta(g); stamper` a:.  X

&#34;sopravvivenza di una pratica manicomiale dopo la chiusura dei manicomi&#34; e insieme a lei sono intervenuti Vito D'Anza del Forum salute mentale, Giovanna del Giudice

ANDI e COMPASS sono lieti di presentarti PROGETTO SORRISO: il nuovo programma di incentivazione che TI PREMIA SUBITO!. Dal 1° giugno al 30 settembre 2011 ogni finanziamento