- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试绘制一棵分形树。
它会绘制树,但我想制作一个动画,以便树可以从它的“树干”中生长?还有可能让动画变得流畅吗?
如果我使用 Thread.sleep 方法,它会绘制出非常奇怪的树。
谁能帮助我?非常感谢
这是我的代码:
import java.awt.BasicStroke;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.JFrame;
public class FractalTree extends Canvas {
private JFrame frame;
//Breedte en hoogte voor GUI
private final int WINDOW_WIDTH = 1280;
private final int WINDOW_HEIGHT = 720;
public FractalTree() {
frame = new JFrame("Fractal Tree");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
frame.setLocationRelativeTo(null);
frame.setResizable(false);
frame.add(this);
frame.setVisible(true);
}
public static void main(String[] args) {
FractalTree ft = new FractalTree();
ft.setVisible(true);
ft.setBackground(Color.black);
}
class FractalPanel extends JPanel implements ActionListener {
private int x;
private int y;
private int xNew;
private int yNew;
private double angle;
private int depth;
public FractalPanel() {
setBackground(Color.black);
Timer timer = new Timer(200, this);
}
public void paintComponent(Graphics g) {
g.setColor(Color.cyan);
drawFractalTree(g, WINDOW_WIDTH / 2, WINDOW_HEIGHT - 75, -90, 11);
}
public void drawFractalTree(Graphics g, int x, int y, double angle, int depth) {
if (depth == 0) {
} else {
int xNew = x + (int) (Math.cos(Math.toRadians(angle)) * depth * 10.0);
int yNew = y + (int) (Math.sin(Math.toRadians(angle)) * depth * 10.0);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setStroke(new BasicStroke(0.5f * depth));
g2d.drawLine(x, y, xNew, yNew);
drawFractalTree(g, xNew, yNew, angle + 30, depth - 1);
drawFractalTree(g, xNew, yNew, angle - 30, depth - 1);
}
}
public void actionPerformed(ActionEvent e) {
if (depth == 0) {
} else {
int xNew = x + (int) (Math.cos(Math.toRadians(angle)) * depth * 10.0);
int yNew = y + (int) (Math.sin(Math.toRadians(angle)) * depth * 10.0);
repaint();
}
}
}}
PS:对不起我的英语
最佳答案
不要混合使用 swing 和 awt(Canvas
和 JFrame
)。您可以扩展 JPanel 并重写 paintComponent(Grahics g)
方法,而不是使用 Canvas ,您可以在其中完成所有绘图。
不要在绘制中调用Thread.sleep(10);
。它只是阻止事件调度程序线程并阻止绘制。
而是创建一个计时器
,以便在每个所需的时间间隔内调用。在计时器的操作中更改模型(x、y 等)并调用 repaint()
以反射(reflect)更改。
关于Java 2D 图形 : Animate Fractal tree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22756639/
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 3年前关闭。 Improve thi
我正在尝试实现 buddhabrot fractal .我无法理解一件事:我检查的所有实现都在图像上随机选取点来计算粒子逃逸的路径。他们为什么这样做呢?为什么不检查所有像素? 随机点有什么作用?更多的
我正在玩 Mandelbrot 和 Julia 集,我遇到了有趣的问题。 Mandelbrot 集可以以 double 渲染,直到在任何地方缩放约 2^56。但是,Julia 集有时会更快地产生伪像,
这是我的PostTransformer,我在其中包含了关系 public function includeComments(Post $post) { if (($post->is_paid
我在数学堆栈交换上发布了这个,但由于它与编程相关,我想知道是否有人可以在这里提供帮助。 我正在研究涉及 L-Systems 的主题指南,并使用以下字母 A = {a, b, c}。发起者是字符串“a”
我正在玩欧拉计划的 Problem 220 ,我对维基百科关于该主题的文章有点困惑,Dragon Curve .关于无需绘制整条曲线即可计算第 n 圈方向的主题,它说: First, express
我想从字段表中返回默认头像的数据,我将字段的值设置为default.png,当我返回数据时显示为空,我该怎么办? public function register(Request $request,
快速提问,Eloquent: API Resources 和 Fractal 有什么区别? 对我来说,这看起来是一样的吗? 最佳答案 两者都用于转换 API json 响应以标准化响应结构。 但是,L
我已经成功地在 GLSL(OpenGL ES) 上实现了几个分形,但是我似乎对 Mandelbrot 集的变化一无所获,其中指数是任意正数。 我在复极坐标中进行求幂,但算法在某处是错误的,至于 exp
我正在尝试绘制一棵分形树。 它会绘制树,但我想制作一个动画,以便树可以从它的“树干”中生长?还有可能让动画变得流畅吗? 如果我使用 Thread.sleep 方法,它会绘制出非常奇怪的树。 谁能帮助我
我尝试使用此代码 ( via Fractal) 获得结果: public static function doIt($array, $transformer) { $manager = new
我已经让 API 使用标准流程工作,但我想从 JSON 输出中删除 data 命名空间。我看到我需要实现 ArraySerializer,我已经阅读了 Fractal 文档,但我无法确定我需要在 La
我正在尝试在处理 javascript 时实现一个分形工厂(最高级别 - 6)。即使满足基本条件,我也会收到“超出最大调用堆栈大小”错误。 代码如下:第一个函数自定义画线根据长度、 Angular 和
我是一名优秀的程序员,十分优秀!