请用java编写代码绘制巴恩斯利蕨
时间: 2024-10-09 09:01:50 浏览: 36
在Java中,我们可以使用JavaFX库来绘制Barnsley fern,这是一种基于迭代函数系统的艺术图形。以下是使用JavaFX简单实现的一个示例:
```java
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.LineTo;
import javafx.scene.shape.MoveTo;
import javafx.scene.shape.Path;
import javafx.stage.Stage;
public class BarnsleyFern extends Application {
private static final double FERN_SCALE = 0.5;
private static final double FERN_X = -0.1;
private static final double FERN_Y = 0.85;
@Override
public void start(Stage primaryStage) {
Pane root = new Pane();
Scene scene = new Scene(root, 800, 600, Color.WHITE);
for (int i = 0; i < 10000; i++) {
double x = FERN_X;
double y = FERN_Y;
if (Math.random() < 0.01) {
x = 0;
y += FERN_SCALE * Math.sin(Math.PI * x);
} else if (Math.random() < 0.85) {
x += FERN_SCALE * Math.cos(4 * Math.PI * x + 6.283);
y += FERN_SCALE * 1.6 * Math.sin(4 * Math.PI * x + 1.283);
} else if (Math.random() < 0.7) {
x += FERN_SCALE * (-0.85 * Math.cos(6 * Math.PI * x - 6.283));
y += FERN_SCALE * (-0.07 * Math.sin(6 * Math.PI * x - 4.283));
} else {
x += FERN_SCALE * (-0.2 * Math.cos(3 * Math.PI * x + 6.283));
y += FERN_SCALE * (0.28 * Math.sin(3 * Math.PI * x + 1.375));
}
Path path = new Path();
path.setStroke(Color.BLACK);
path.setFill(Color.TRANSPARENT);
path.getElements().add(new MoveTo(x, y));
path.getElements().add(new LineTo(x + FERN_SCALE * 0.15, y + FERN_SCALE * 0.265));
root.getChildren().add(path);
}
primaryStage.setScene(scene);
primaryStage.setTitle("Barnsley Fern");
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
```
这个程序会创建一个舞台并显示一个Barnsley fern的图像,每个点都是通过迭代规则随机生成的。运行这个程序,你会看到一个复杂的分叉图案。
阅读全文