我的对数螺旋函数无法正确计算

时间:2013-01-21 17:04:28

标签: java formula logarithm spiral

我不太确定在哪里提出这个问题(在数学和这里之间)

我尝试使用此公式绘制对数螺旋

enter image description here

它起作用(它在屏幕上显示螺旋),但当我改变音高(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是常数,start = -4 * PI,end = 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是常数,start = 0,end = 10)

我猜我在公式中犯了一个大错误,但我没看到一个错误。 我可以提供一个输出图片,如果这可以帮助,但我不知道如何

编辑: 我确实成功地使用它 r = a exp(θcotb)

    double r = Math.pow(a,t*(1/Math.tan(b)));

但我仍然不明白为什么其他公式没有成功,这就是为什么我编辑这个问题而不是回答它。

1 个答案:

答案 0 :(得分:0)

我的猜测是有一个四舍五入的问题正在进行中。 我假设'a'和'b'都是双打...我不得不问,因为它没有写在代码中但是假设是这种情况。如果不是那就是问题:)

接下来我会看一下i * step并确保这是你所期待的...我会认为这是可以的但是你没有把int'我'转换为双重所以如果要问问题你重新洗牌。

啊,其实我想看看'样品'。如果这是一个int,因为我会期望这会给你一个错误的结果,因为你要除以一个int,我期望它会给出一个int返回值...实际上我的1p的赌注是在它的样本声明为中间体

如果不能解决问题,您可以打印出步进值并确保它符合您的预期,如果不是此示例问题,也请检查't'是否正确计算。