Вы можете приблизить длину дуги, значительно упрощая решение Жиля-Филиппа .Это упрощение, которое означает, что расстояние между маркерами не везде одинаково.Однако расстояния довольно постоянны, особенно дальше.
Приближением здесь является допущение, что спираль локально является окружностью.Длина дуги в этом случае равна r*dt
в положении по спирали на расстоянии r
от начала координат, для изменения угла dt
радиан.
Теперь нам больше не нужно решать символические уравнения.Я написал код в цикле.Я уверен, что можно векторизовать его, сделав все это двумя строками кода, но я оставлю это в качестве упражнения для читателя.
Это код:
d = 1; % step size
q = 1/(2*pi); % spiral constant -- radius grows by q every 1 radian turn
N = 300; % number of points
t = 0; % initial angle
r = d; % initial radius
p = zeros(100,2);
p(1,:) = [r*cos(t),r*sin(t)]; % first point
for ii=2:N
dt = d/r;
t = t+dt;
r = r+dt*q;
p(ii,:) = [r*cos(t),r*sin(t)];
end
clf
plot(p(:,1),p(:,2),'o-')
axis equal