私は最初のフラクタル(ピタゴラスの木)を構築しようとしています:
代替テキストhttp://img13.imageshack.us/img13/926/lab6e.jpg
Graphics2Dを使用したJavaで。これが私が今持っているものです:
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int i=0;
Scanner scanner = new Scanner(System.in);
System.out.println("Give amount of steps: ");
i = scanner.nextInt();
new Pitagoras(i);
}
}
class Pitagoras extends JFrame {
private int powt, counter;
public Pitagoras(int i) {
super("Pythagoras Tree.");
setSize(1000, 1000);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
powt = i;
}
private void paintIt(Graphics2D g) {
double p1=450, p2=800, size=200;
for (int i = 0; i < powt; i++) {
if (i == 0) {
g.drawRect((int)p1, (int)p2, (int)size, (int)size);
counter++;
}
else{
if( i%2 == 0){
//here I must draw two squares
}
else{
//here I must draw right triangle
}
}
}
}
@Override
public void paint(Graphics graph) {
Graphics2D g = (Graphics2D)graph;
paintIt(g);
}
つまり、基本的にステップ数を設定してから、最初の正方形(p1、p2、サイズ)を描画します。次に、ステップが奇妙な場合は、正方形の上に直角三角形を作成する必要があります。ステップが均等な場合は、三角形の自由辺に2つの正方形を作成する必要があります。三角形と正方形の両方を描画するには、今どの方法を選択する必要がありますか?単純な線で三角形を描画してAffineTransformで変換することを考えていましたが、それが実行可能かどうかはわかりません。また、正方形の描画は解決されません。