我正在研究一种称为龙曲线的分形设计,它使用 Java 递归和 StdDraw 完成。它由一个正方形组成,另外两个正方形从它分支出来,一个顺时针 30 度,另一个逆时针 60 度。我的角度看起来是正确的,但是根据新的 x 和 y 坐标,正方形每次平移的量始终不正确。
根据我对 30 - 60 - 90 个三角形及其边长和角度比的了解,我尝试了 x 和 y 坐标的多个不同值。
public static void main(String[] args)
{
setUpBackground();
int n = 5;
if(args.length > 0)
{
n = Integer.parseInt(args[0]);
}
double xC = 0.5;
double yC = 0.45;
double sideLength = 0.1;
int degrees = 0;
dragonCurve(n, xC, yC, sideLength, degrees);
}
public static void setUpBackground()
{
StdDraw.setCanvasSize(1000, 1000);
StdDraw.setPenColor(Color.BLACK);
StdDraw.filledSquare(0, 0, 1);
}
public static void dragonCurve(int n, double xC, double yC, double sideLength, int degrees)
{
if(n == 0)
{
return;
}
// just a square
StdDraw.picture(xC, yC, "Square.png", sideLength, sideLength, degrees);
dragonCurve(n - 1, xC - sideLength * Math.sqrt(3), yC - sideLength, sideLength * Math.sqrt(3)/2, degrees + 60);
dragonCurve(n - 1, xC + sideLength/2, yC - sideLength * Math.sqrt(3)/2, sideLength/2, degrees - 30);
}
预期的结果是与这条龙曲线类似的设计:!https://photos.google.com/share/AF1QipMmXut-wZ-TQEE43iIl6o6LBS7DxdHhmp2-1FsyB41jaRznwoZ3m0XOw6Ubn0ZHbA?key=SU5TdDQzYWpfeU1aN0N0UTJzT1VHbHFsUTBhb2NR 但是,我的代码完全关闭了三角形。