Hola de nuevo ! esta semana estoy intentando hacer un fractal , mediante la recursividad, el caso es que no se porque unicamente me recorre el metodo de la primera llamada y la verdad es que no entiendo el por que, he estado mirando ejemplos, pero debo hacerlo unicamente con los elementos que veis en el codigo , y estoy seguro que se puede. Solo me falta que funcionen los dos metodos de los triangulos de los lado pero parece ser que algo esta mal, alguien me podria decir el que? gracias!:
Código [Seleccionar]
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
public class Fractal extends JFrame {
Image img;
public static void main(String[] args){
E10_Fractal pizarra = new E10_Fractal();
int [] coordX = { 250,500,750};
int [] coordY = { 700,0,700} ;
pizarra.dibuja(coordX,coordY,3,1);
}
public Fractal(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("Fractal");
setResizable(false);
setSize(1000,1000);
setVisible(true);
img = createImage(1000,1000);
}
public void paint(Graphics g){
g.drawImage(img,0,25,this);
}
public void dibuja(int [] coordX, int [] coordY, int lados, int contador){
if(contador==1){
Graphics g = img.getGraphics();
g.setColor( new Color(255,0,0));
g.fillPolygon(coordX,coordY,lados);
g.setColor( new Color(0,0,0));
g.drawPolygon(coordX,coordY,lados);
}
dibuja( altoX(coordX), altoY(coordY), lados ,contador-1);
dibuja( izquierdaX(coordX), izquierdaY(coordY), lados ,contador-1);
dibuja (derechaX(coordX), derechaY(coordY), lados ,contador-1);
}
public static int [] altoX(int [] coord){
coord[2]= coord[1];
coord[1]= (coord[0]+coord[1])/2;
return coord;
}
public static int [] altoY(int [] coord){
coord[1]= (coord[0]+coord[1])/2;
return coord;
}
public static int [] izquierdaX(int [] coord){
coord[0]= (coord[0]+coord[1])/2;
coord[2]= (coord[1]+coord[2])/2;
return coord;
}
public static int [] izquierdaY(int [] coord){
coord[0]= (coord[0]+coord[1])/2;
return coord;
}
public static int [] derechaX(int [] coord){
coord[0]= coord[1];
coord[1]= (coord[1]+coord[2])/2;
return coord;
}
public static int [] derechaY(int [] coord){
coord[1]= (coord[0]+coord[1])/2;
return coord;
}
}