作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经编写了我的应用程序来完全绘制科赫雪花,但是无论我使用调试器单步调试多少次,我都无法理解这一行的递归过程drawKochCurve
以及它如何产生分形曲线。
(level - 1,segmentSize);
这是我的 AP“递归”项目,但尽管我实际上理解了老师给我的大部分递归示例,但我无法掌握这个项目。
我的代码:
import gpdraw.*;
public class buildShape {
public SketchPad paper = new SketchPad(700,700);
public DrawingTool pencil = new DrawingTool(paper);
public buildShape(){
drawKochCurve(2,100);
pencil.setDirection(-30);
drawKochCurve(2,400);
pencil.setDirection(-150);
drawKochCurve(2,400);
}
private void drawKochCurve(int level, double initialSize){
double segmentSize = initialSize / 3;
if (level < 1){
pencil.forward(initialSize);
} else {
drawKochCurve(level - 1, segmentSize);
pencil.turnLeft(60);
drawKochCurve(level - 1, segmentSize);
pencil.turnRight(120);
drawKochCurve(level - 1, segmentSize);
pencil.turnLeft(60);
drawKochCurve(level - 1, segmentSize);
}
}
}
最佳答案
您似乎正在画科赫雪花。您可以通过消除 buildShape() 函数中对 drawKochCurve 的 2 次调用来获得简单的科赫曲线。在剩余的函数调用中,将数字 2 替换为 0。这将导致它在递归深度 0 处生成一条直线。然后在连续运行中使用数字 1、2、3、4、5 再次运行它。每次增加此数字时,图形中的每条线段都会被细节较少的科赫曲线替换(由于递归限制)。通过放回其他函数调用,您可以从一个三角形而不是单个线段开始,但它实际上是通过 3 条不同的科赫曲线来制作雪花。
关于java - 无法理解科赫曲线分形曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19624940/
我是一名优秀的程序员,十分优秀!