Я не был так уверен, где задать этот вопрос (между математикой и здесь)
Я пытаюсь нарисовать логарифмическую спираль, используя эту формулу
Это работает (хорошо, на экране отображается спираль), но когда я меняю шаг (а), спираль не меняет свой шаг, а только вращение и размер (и установка значения 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 (θ кроватка b)
double r = Math.pow(a,t*(1/Math.tan(b)));
Но я до сих пор не понимаю, почему другая формула не сработала, поэтому я отредактировал этот вопрос, а не ответил на него.