Entrega:
Insertar el código que dibuja un hexágono repetido en una estructura de panal de abeja.


Código:
Clase Tela
package esagoni;
import java.awt.*;
import javax.swing.*;
public class Tela extends JPanel{
public void paintComponent(Graphics g)
{
//servidor para dibujar en la ventana
super.paintComponent(g);
//se establece el color de fondo
this.setBackground(Color.WHITE);
//se establece el color de g, por lo tanto el color con el que aparecerán
//los dibujos hechos utilizando g
g.setColor(Color.BLACK);
//inicializamos los dos vectores x e y. el vector x contiene las ascisas de los seis puntos
//del hexágono, mientras que el vector y contiene las ordenadas de los puntos. el hexágono
//tiene 6 puntos por lo tanto los vectores tienen 6 elementos.
int x[] = new int[6];
int y[] = new int[6];
//los vectores se llenan con las coordenadas de los puntos
vettoreX1(x);
vettoreY(y);
//
for (int i = 0; i<10; i++){
//se dibujan 10 hexágonos distantes 40 horizontalmente
for (int a = 0; a < 10; a++){
esagoniX(x, y, g);
}
//el punto desde el que se parte a dibujar se mueve hacia abajo de 10
cambioY(x, y, g);
//se llena el vector x con otras coordenadas por lo tanto el punto desde el
//que se inicia a dibujar se mueve de 10 en horizontal, para evitar que
//los hexágonos se superpongan
vettoreX2(x);
//se dibujan otros 10 hexágonos
for (int a = 0; a < 10; a++){
esagoniX(x, y, g);
}
//el punto desde el que se parte a dibujar se mueve hacia abajo de 10
cambioY(x, y, g);
//se reutiliza el primer vector, con las coordenadas x iguales a
//las de la primera fila
vettoreX1(x);
}
}
public int[] vettoreX1(int x[]) {
x[0] = -40;
x[1] = x[0] + 10;
x[2] = x[1] + 10;
x[3] = x[2] + 10;
x[4] = x[2];
x[5] = x[1];
return x;
}
public int[] vettoreX2(int x[]) {
x[0] = -20;
x[1] = x[0] + 10;
x[2] = x[1] + 10;
x[3] = x[2] + 10;
x[4] = x[2];
x[5] = x[1];
return x;
}
public int[] vettoreY(int y[]) {
y[0] = 10;
y[1] = y[0] + 10;
y[2] = y[1];
y[3] = y[0];
y[4] = y[0] - 10;
y[5] = y[4];
return y;
}
public void esagoniX(int x[], int y[], Graphics g) {
for (int i = 0; i < x.length; i++) {
x[i] = x[i] + 40;
}
//x = vector que contiene 6 coordenadas horizontales
//y = vector que contiene 6 coordenadas verticales
//6 = número de puntos
g.drawPolygon(x, y, 6);
}
public void cambioY(int x[], int y[], Graphics g) {
for (int i = 0; i < y.length; i++) {
y[i] = y[i] + 10;
}
}
}
Clase Esagoni
package esagoni;
//importar java swing sirve para poder usar los componentes que contiene, por
//ejemplo jframe
import javax.swing.*;
public class Esagoni {
public static void main(String[] args) {
//sirve a cambiar la escritura en alto a la izquierda
JFrame t = new JFrame("Esagoni/>
//setDefaultCloseOperation() contiene entre paréntesis la operación
//que el programa ejecuta cuando se hace clic en la x en alto a la derecha
//la escritura entre paréntesis indica que cuando se hace clic
//en la x, la operación de default
//es cerrar la ventana
t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//la otra clase se llama Tela, por lo tanto se crea un nuevo objeto Tela
tela p = new Tela();
//t es el JFrame, al que se agrega el objeto p(tela)
t.add(p);
//dimensiones de la tela (la ventana que se abre cuando se ejecuta
//el programa)
t.setSize(1000, 1000);
//primero se ha creado, y ahora es visible
t.setVisible(true);
}
}
Procedimiento:
Después de crear un nuevo proyecto llamado disegno, hemos creado dos clases. La que tiene el main es Esagoni, mientras que la otra es Tela.
Para dibujar los hexágonos con la estructura de panal de abeja es necesario dibujar hexágonos. Es posible hacerlo de dos maneras:
•g.drawPolygon(obj Polygon)
•g.drawPolygon(x[], y[], i)
El primer método permite dibujar un polígono poniendo entre paréntesis el objeto polígono, mientras que el segundo permite hacerlo con dos arrays de enteros y un número entero. El vector x contiene las coordenadas x de los puntos y el vector y contiene las coordenadas y de los puntos, mientras que i es el número de puntos del polígono, es decir, de los vértices.
En la estructura de panal de abeja hay tantos hexágonos de fila dispuestos en más filas, por lo tanto es necesario dibujar hexágonos iguales, en la misma fila, dispuestos a una cierta distancia horizontal.
Después de que se ha dibujado la primera fila, se hace lo mismo para la segunda, pero en este caso la coordenada x del primer punto del hexágono no es la misma que la del primer punto del primer hexágono de la fila debajo, por lo tanto es necesario partir de un punto x diferente. En la tercera fila, en cambio, la coordenada x del primer punto del primer hexágono es igual a la del primer punto del primer hexágono de la primera fila, por lo tanto las coordenadas x de los puntos son iguales cada dos filas.

