import java.awt.*;
import java.applet.*;
import java.awt.geom.Ellipse2D;
import javax.swing.JOptionPane;

public class Cerchi2 extends Applet {
	private double x, y, r,
				   stepx, stepy, stepr,
				   xmin, xmax,
				   ymin, ymax;
	private int n;
	
	public void init() {
		x = leggiDouble("x centro?");
		y = leggiDouble("y centro?");
		r = leggiDouble("raggio?");
		stepx = leggiDouble("passo x?");
		stepy = leggiDouble("passo y?");
		stepr = leggiDouble("passo raggio?");
		n = leggiInt("quanti cerchi?");
		xmin = x - r;
		if(stepx < stepr)
			xmin += (n - 1) * (stepx - stepr);
		xmax = x + r;
		if(stepx > -stepr)
			xmax += (n - 1) * (stepx + stepr);
		ymin = y - r;
		if(stepy < stepr)
			ymin += (n - 1) * (stepy - stepr);
		ymax = y + r;
		if(stepy > -stepr)
			ymax += (n - 1) * (stepy + stepr);
	}

	public void paint(Graphics g) {
		Graphics2D g2D = (Graphics2D)g;
		double xcorr, ycorr, rcorr;
		int lato = Math.min(getWidth(), getHeight());
//		UnitConverter convertitore = new UnitConverter(xmin, xmax, ymin, ymax, lato, lato);
		UnitConverter convertitore = new UnitConverter(xmin, xmax, ymin, ymax, getWidth(), getHeight());
		Ellipse2D.Double cerchio;
		final float ratio = 1.0f/n;
		for(int i = 0; i < n; i++) {
			float col = ratio * i;
			g2D.setColor(new Color(col, 1, col)); // prevalenza green
			xcorr = x + i * stepx;
			ycorr = y + i * stepy;
			rcorr = r + i * stepr;
			cerchio = new Ellipse2D.Double(xcorr - rcorr, ycorr - rcorr, 2 * rcorr, 2 * rcorr);
			g2D.draw(convertitore.convert(cerchio));
		}
	}
	
	private double leggiDouble(String msg) {
		do {
			try {
				return Double.parseDouble(JOptionPane.showInputDialog(msg).trim());
			}
			catch(NumberFormatException e) {
			}
			catch(NullPointerException e) {
			}
		} while(true);
	}
	
	private int leggiInt(String msg) {
		do {
			try {
				return Integer.parseInt(JOptionPane.showInputDialog(msg).trim());
			}
			catch(NumberFormatException e) {
			}
			catch(NullPointerException e) {
			}
		} while(true);
	}
}


Questa la bacheca di Informatica Grafica, corso di laurea specialistica in Ing. Edile-architettura
by FdA
ultima modifica: 02/02/2005 11.30