Aggiunti es P7.17 18 19

Aggiunto definitivamente esercizi grafici Cloud, Polygon e Chart
(esercizi P7.17, P7.18 e P7.19)
This commit is contained in:
Giacomo R. 2023-01-17 19:14:09 +01:00
parent bcfa875799
commit e9eb9fa3f4
18 changed files with 142 additions and 46 deletions

View File

@ -1,34 +1,42 @@
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
/**
Classe che rappresenta lo stato di una lampadina
@author radaelli11353
*/
* Classe che rappresenta una nuvola composta da punti.
* La nuvola può contenere al masssimo 100 punti
* @author radaelli11353
*/
public class Cloud {
public static final int DIAMETRO = 5;
private Point2D.Double[] punti;
private int nPunti;
/**
* Costruttore della classe Cloud
*/
public Cloud() {
punti = new Point2D.Double[100];
nPunti = 0;
}
/**
* Metodo per aggiungere un punto alla nuvola
* @param aPoint Punto da aggiungere alla nuvola
*/
public void add(Point2D.Double aPoint) {
if(nPunti >= punti.length) throw new IllegalArgumentException();
punti[nPunti] = aPoint;
nPunti++;
}
/**
* Metodo che disegna la nuvola in un contesto grafico
* @param g2 Contesto grafico
*/
public void draw(Graphics2D g2) {
for(int i = 0; i < nPunti; i++) {
Ellipse2D.Double punto = new Ellipse2D.Double(punti[i].getX(), punti[i].getY(), DIAMETRO, DIAMETRO);
g2.setColor(Color.RED);
g2.draw(punto);
g2.fill(punto);
g2.fill(new Ellipse2D.Double(punti[i].getX(), punti[i].getY(), DIAMETRO, DIAMETRO));
}
}
}

BIN
7.x/P7.17 Cloud/Cloud.pdf Normal file

Binary file not shown.

View File

@ -5,18 +5,17 @@ import java.awt.geom.Point2D;
import java.util.Random;
/**
Classe che estende JComponent per creare un componente Lampadina
@author radaelli11353
*/
* Classe che estende JComponent per creare un componente Cloud
* @author radaelli11353
*/
public class CloudComponent extends JComponent {
/**
Metodo paintComponent che si occupa di disegnare una lampadina
@param g Contesto grafico di Graphics
*/
* Metodo paintComponent che si occupa di disegnare una nuvola
* @param g Contesto grafico
*/
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
Random generator = new Random();
Cloud nuvola = new Cloud();
for(int i = 0; i < 100; i++) {

Binary file not shown.

View File

@ -1,14 +1,10 @@
import javax.swing.JFrame;
/**
Classe che visualizza una lampadina tramite un JFrame e LampadinaComponent
@author radaelli11353
*/
* Classe che visualizza una nuvola tramite un JFrame e CloudComponent
* @author radaelli11353
*/
public class CloudViewer {
/**
Metodo main di LampadinaViewer
@param args Argomenti passati all'esecuzione del programma
*/
public static void main(String[] args) {
JFrame frame = new JFrame();

Binary file not shown.

View File

@ -3,29 +3,39 @@ import java.awt.geom.Point2D;
import java.awt.geom.Line2D;
/**
Classe che rappresenta lo stato di una lampadina
@author radaelli11353
*/
* Classe che rappresenta un poligono composto da un numero variabile di punti
* @author radaelli11353
*/
public class Polygon {
public static final int DIAMETRO = 5;
private Point2D.Double[] punti;
private int nPunti;
public Polygon() {
punti = new Point2D.Double[100];
/**
* Costruttore della classe Polygon
* @param maxPunti Numero massimo di punti per il poligono
*/
public Polygon(int maxPunti) {
punti = new Point2D.Double[maxPunti];
nPunti = 0;
}
/**
* Metodo per aggiungere un punto al poligono
* @param aPoint Punto da aggiungere al poligono
*/
public void add(Point2D.Double aPoint) {
if(nPunti >= punti.length) throw new IllegalArgumentException();
punti[nPunti] = aPoint;
nPunti++;
}
/**
* Metodo che disegna il poligono in un contesto grafico
* @param g2 Contesto grafico
*/
public void draw(Graphics2D g2) {
for(int i = 0; i < nPunti - 1; i++) {
Line2D.Double linea = new Line2D.Double(punti[i].getX(), punti[i].getY(), punti[i+1].getX(), punti[i+1].getY());
g2.draw(linea);
g2.draw(new Line2D.Double(punti[i].getX(), punti[i].getY(), punti[i+1].getX(), punti[i+1].getY()));
}
g2.draw(new Line2D.Double(punti[nPunti - 1].getX(), punti[nPunti - 1].getY(), punti[0].getX(), punti[0].getY()));
}

Binary file not shown.

View File

@ -2,22 +2,21 @@ import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JComponent;
import java.awt.geom.Point2D;
import java.util.Random;
/**
Classe che estende JComponent per creare un componente Lampadina
@author radaelli11353
*/
* Classe che estende JComponent per creare un componente Cloud
* @author radaelli11353
*/
public class PolygonComponent extends JComponent {
/**
Metodo paintComponent che si occupa di disegnare una lampadina
@param g Contesto grafico di Graphics
*/
* Metodo paintComponent che si occupa di disegnare un poligono
* @param g Contesto grafico
*/
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
Polygon quadrato = new Polygon();
Polygon pentagono = new Polygon();
Polygon quadrato = new Polygon(4);
Polygon pentagono = new Polygon(5);
quadrato.add(new Point2D.Double(0, 0));
quadrato.add(new Point2D.Double(50, 0));

Binary file not shown.

View File

@ -1,14 +1,10 @@
import javax.swing.JFrame;
/**
Classe che visualizza una lampadina tramite un JFrame e LampadinaComponent
@author radaelli11353
*/
* Classe che visualizza un poligono tramite un JFrame e PolygonComponent
* @author radaelli11353
*/
public class PolygonViewer {
/**
Metodo main di LampadinaViewer
@param args Argomenti passati all'esecuzione del programma
*/
public static void main(String[] args) {
JFrame frame = new JFrame();

Binary file not shown.

View File

@ -0,0 +1,41 @@
import java.awt.Graphics2D;
import java.awt.geom.Point2D;
import java.awt.geom.Line2D;
/**
* Classe che rappresenta un grafico a barrecomposto da un numero variabile di dati
* @author radaelli11353
*/
public class Chart {
private int[] valori;
private int nValori;
/**
* Costruttore della classe Chart
* @param maxValori Numero massimo di valori del grafico
*/
public Chart(int maxValori) {
valori = new int[maxValori];
nValori = 0;
}
/**
* Metodo per aggiungere un dato al grafico
* @param valore Valore da aggiungere al grafico
*/
public void add(int valore) {
if(nValori >= valori.length) throw new IllegalArgumentException();
valori[nValori] = valore;
nValori++;
}
/**
* Metodo che disegna il grafico in un contesto grafico
* @param g2 Contesto grafico
*/
public void draw(Graphics2D g2) {
for(int i = 0; i < nValori; i++) {
g2.draw(new Line2D.Double(10+i*10, 450, 10+i*10, 450-valori[i]));
}
}
}

BIN
7.x/P7.19 Chart/Chart.pdf Normal file

Binary file not shown.

View File

@ -0,0 +1,27 @@
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JComponent;
/**
* Classe che estende JComponent per creare un componente Chart
* @author radaelli11353
*/
public class ChartComponent extends JComponent {
/**
* Metodo paintComponent che si occupa di disegnare un grafico a barre
* @param g Contesto grafico
*/
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
Chart grafico = new Chart(15);
grafico.add(150);
grafico.add(300);
grafico.add(50);
grafico.add(150);
grafico.add(250);
grafico.draw(g2);
}
}

Binary file not shown.

View File

@ -0,0 +1,20 @@
import javax.swing.JFrame;
/**
* Classe che visualizza un grafico a barre tramite un JFrame e ChartComponent
* @author radaelli11353
*/
public class ChartViewer {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(500, 500);
frame.setTitle("Visualizzatore grafico a barre");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ChartComponent component = new ChartComponent();
frame.add(component);
frame.setVisible(true);
}
}

Binary file not shown.