
Среда программирования:
Eclipse
Статья по теме:
Пример построения Н-фрактала. Вначале строится одна фигура, потом 4, потом 16. Размер каждых следующих фигур меньше в 2 раза предыдущих (предыдущей, если первой).
Код программы:
import java.awt.*; import javax.swing.*; public class HFractal extends JComponent{ static int razmer = 100; static int min = 5; public HFractal(){ JFrame jf = new JFrame(); jf.setSize(500, 500); jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE); jf.setLocationRelativeTo(null); jf.getContentPane().add(this); jf.setVisible(true); jf.repaint(); } public void DrawH(Graphics g, int x, int y, int raz){ // метод рисующий Н g.drawLine( x - raz, y - raz, x - raz, y + raz); g.drawLine (x - raz, y, x + raz, y); g.drawLine( x + raz, y - raz, x + raz, y + raz); } private void DrawHF(Graphics g, int x1, int y1, int razmer, int min){ int x11 = x1 + razmer; int y11 = y1 + razmer; int x01 = x1 - razmer; int y01 = y1 + razmer; int x00 = x1 - razmer; int y00 = y1 - razmer; int x10 = x1 + razmer; int y10 = y1 - razmer; DrawH(g, x1, y1, razmer); razmer = razmer/2; if(razmer >= min){ DrawHF(g, x11, y11, razmer, min); DrawHF(g, x01, y01, razmer, min); DrawHF(g, x10, y10, razmer, min); DrawHF(g, x00, y00, razmer, min); } } public static void main(String[] args) { HFractal hf = new HFractal(); hf.repaint(); } public void paintComponent(Graphics g) { super.paintComponent(g); DrawHF(g, 250, 250, razmer, min); repaint(); } }