我试图制作一个绘制Koch分形的程序。有什么方法可以用Java而不是坐标在Java中画一条线?
koch分形看起来有点像雪花。重复图案是在每条线的1/3处插入的等边三角形(三角形的边是线的长度的1/3)。
最初我试图递归绘制三角形,但我无法弄清楚如何计算坐标。然后我认为如果我可以只绘制一定长度的线并旋转它们,并且每次都减少线的长度会更容易。除了我不知道我是否可以在Java中绘制长度。我试过在互联网上搜索这个并没有找到答案,这让我认为这是不可能的,但我想我会问这里只是为了确保。
我意识到这远远超出了我的技术大学水平。我也意识到我可能会找到一个其他人已经编写的完整程序,但我想知道我是否可以自己解决(主要是)我自己。
答案 0 :(得分:0)
首先,我假设您在用于Java的任何API中都有某种函数drawLine(int x1, int y1, int x2, int y2)
。如果这是真的,并且你想要按长度绘制一条线,我相信你可以使用标准的三角函数(Math.sin(...)
,Math.cos(...)
和Math.tan(...)
)来完成它。
示例强>
您希望使用给定长度绘制的内容至少是以下数据:
您的代码可以使用以下内容:
public void drawLineByLength(int xStart, int yStart, double angle, double length) {
int xEnd = (int) (xStart + (Math.cos(angle) * length));
int yEnd = (int) (yStart + (Math.sin(angle) * length));
drawLine(xStart, yStart, xEnd, yEnd);
}
请注意,您必须为此方法导入Math类。此外,只有当你有一个drawLine(...)
函数可以获得两点坐标时,它才会起作用。
<强>实施强>
如果我理解你的意图,你会想要跟踪当前的坐标&#34; pen&#34;在;它吸引的角度;以及它要绘制的下一行的长度。您可以在更新这些变量的drawLineByLength(...)
方法的末尾添加一些内容。