Para realizar el dibujo del circulo con java tenemos que hacer los siguientes pasos:
Primero debemos crear 3 clases
- Formulario
- Areadedibujo
- Punto
Dentro de punto pondremos:
package appalgoritmograficograficarpoligonos;
public class Punto
{
//Variables de instancia.
private int X;
private int Y;
//Propiedades de Lectura.
public int getX() {
return X; }
public int getY() {
return Y;
}
//Metodo Constructor
public Punto(int X, int Y)
{
this.X=X;
this.Y=Y;
}
}
En el JPanel ponemos lo siguiente:
package appalgoritmograficograficarpoligonos;
import java.awt.Graphics;
public class AreaDibujo extends javax.swing.JPanel
{
private Punto[] vertices;
private int X;
private int Y;
private int Radio;
private int Lados;
public void setRadio(int Radio) {
this.Radio = Radio;
}
public void setLados(int Lados) {
this.Lados = Lados;
}
public AreaDibujo() {
initComponents();
this.X=0;
this.Y=0;
this.Lados=0;
this.Radio=0;
}
private void formMousePressed(java.awt.event.MouseEvent evt) {
this.X = evt.getX();
this.Y = evt.getY();
}
public void paint(Graphics g) {
super.paint(g);
for(int t=1;t<=this.Lados-1;t++)
{
int dx=0,dy=0;
int x1 = vertices[t].getX();
int x0 = vertices[t-1].getX();
int y1 = vertices[t].getY();
int y0 = vertices[t-1].getY();
dx = x1 - x0;
dy = y1 - y0;
if (Math.abs(dx) > Math.abs(dy))
{
float m = (float) dy / (float) dx;
float b = y0 - m * x0;
if(dx<0)
dx = -1;
else
dx = 1;
while (x0 != x1)
{
x0 += dx;
y0 = Math.round(m*x0 + b);
g.drawLine( x0, y0, x0, y0);
}
} else
if (dy != 0)
{
float m = (float) dx / (float) dy;
float b = x0 - m*y0;
if(dy<0)
dy = -1;
else
dy = 1;
while (y0 != y1)
{
y0 += dy;
x0 = Math.round(m * y0 + b);
g.drawLine( x0, y0, x0, y0);
}
}
}//fin for
if (this.Lados>0)
g.drawLine( vertices[this.Lados -1].getX(), vertices[this.Lados -1].getY(), vertices[0].getX(), vertices[0].getY());
}
public void DibujarPoligono()
{
Poligonos();
repaint();
}
private void Poligonos()
{
double alfa;
int a, b;
vertices = new Punto[this.Lados];
alfa = 2 * Math.PI / this.Lados;
for(int i=0;i<=this.Lados-1;i++)
{
a= this.X + (int) (this.Radio * Math.cos((i - 1) * alfa));
b= this.Y + (int) (this.Radio * Math.sin((i - 1) * alfa));
vertices[i]= new Punto(a,b);
}
}
}
En el formulario ponemos esto:
private void btnGraficarActionPerformed(java.awt.event.ActionEvent evt) {
int num_lados= Integer.parseInt(this.txtNLados.getText());
int radio = Integer.parseInt(this.txtRadio.getText());
areaDibujo1.setLados(num_lados);
areaDibujo1.setRadio(radio);
areaDibujo1.DibujarPoligono();
Porque no pones el link para descargar el código fuente?
ResponderEliminarpuedes pasat el codigo fuente?
ResponderEliminarSuper, me ayudó a complacer a mi sobrino de 8 años que quiso este algoritmo pero en Android xD
ResponderEliminar