我正在尝试构建我的第一个分形(毕达哥拉斯树):
替代文字 http://img13.imageshack.us/img13/926/lab6e.jpg
在 Java 中使用 Graphics2D。这是我现在拥有的:
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 和大小)。然后,如果 step 是奇怪的,我需要在正方形的顶部构建直角三角形。如果 step 是偶数,我需要在三角形的自由边上建立两个正方形。我现在应该选择什么方法来绘制三角形和正方形?我正在考虑用简单的线条绘制三角形,用 AffineTransform 转换它们,但我不确定它是否可行并且它不能解决绘制正方形的问题。