Нарисуйте равноудаленные точки на спирали

Мне нужен алгоритм для расчета распределения точек по спиральной траектории.

Входные параметры этого алгоритма должны быть:

Ширина петли (расстояние от самой внутренней петли)Фиксированное расстояние между точкамиКоличество точек для рисования

Спираль рисовать являетсяархимедова спираль и полученные очки должны бытьэквидистантный друг от друга.

Алгоритм должен распечатать последовательность декартовых координат отдельных точек, например:

Точка 1: (0.0) Точка 2: (..., ...) ........ Точка N (..., ...)

Язык программирования не важен, и вся помощь очень ценится!

РЕДАКТИРОВАТЬ:

Я уже получаю и изменяю этот пример с этого сайта:

    //
//
// centerX-- X origin of the spiral.
// centerY-- Y origin of the spiral.
// radius--- Distance from origin to outer arm.
// sides---- Number of points or sides along the spiral's arm.
// coils---- Number of coils or full rotations. (Positive numbers spin clockwise, negative numbers spin counter-clockwise)
// rotation- Overall rotation of the spiral. ('0'=no rotation, '1'=360 degrees, '180/360'=180 degrees)
//
void SetBlockDisposition(float centerX, float centerY, float radius, float sides, float coils, float rotation)
{
    //
    // How far to step away from center for each side.
    var awayStep = radius/sides;
    //
    // How far to rotate around center for each side.
    var aroundStep = coils/sides;// 0 to 1 based.
    //
    // Convert aroundStep to radians.
    var aroundRadians = aroundStep * 2 * Mathf.PI;
    //
    // Convert rotation to radians.
    rotation *= 2 * Mathf.PI;
    //
    // For every side, step around and away from center.
    for(var i=1; i<=sides; i++){

        //
        // How far away from center
        var away = i * awayStep;
        //
        // How far around the center.
        var around = i * aroundRadians + rotation;
        //
        // Convert 'around' and 'away' to X and Y.
        var x = centerX + Mathf.Cos(around) * away;
        var y = centerY + Mathf.Sin(around) * away;
        //
        // Now that you know it, do it.

        DoSome(x,y);
    }
}

Но расположение точек неверно, точки не равноудалены друг от друга.

Правильный пример распространения - изображение слева:

Ответы на вопрос(4)

Ваш ответ на вопрос