我不太确定在哪里问这个问题(在数学和这里之间)
我尝试使用此公式绘制对数螺旋
它可以工作(它在屏幕上显示一个螺旋),但是当我改变螺距(a)时,螺旋不会改变他的螺距,只有旋转和大小(并且将 a 设置为 1 应该形成一个圆圈,但它不会)
我试过那些:
double step = (end - start) / sample;
for (int i = 1;i <= sample;i++) {
double t = start+i*step;
coordinates[i-1][0] = a * Math.pow(Math.E,b*t) * Math.cos(t);
coordinates[i-1][1] = a * Math.pow(Math.E,b*t) * Math.sin(t);
}
(a 和 b 是常数,开始 = -4*PI,结束 = 4*PI)
和
double step = (end - start) / sample;
for (int i = 1;i <= sample;i++) {
double r = start+i*step;
double t = (1/b)*Math.log(r/a);
coordinates[i-1][0] = r* Math.cos(t);
coordinates[i-1][1] = r* Math.sin(t);
}
(a 和 b 是常数,开始 = 0,结束 = 10)
我猜我在公式中犯了一个大错误,但我没有看到其中一个。如果有帮助,我可以提供输出图片,但我不知道如何
编辑:我确实成功地使用 r = a exp(θ cot b) 使它工作
double r = Math.pow(a,t*(1/Math.tan(b)));
但我仍然不明白为什么其他公式没有成功,这就是我编辑这个问题而不是回答它的原因。