Re: круг

From
Ivan Storogev ()
To
Alexandr Gavrilov
Date
2002-06-24T03:38:59Z
Area
RU.ALGORITHMS
From: Ivan Storogev <rezeda@dol.ru>

Привет Alexandr,

Friday, June 21, 2002, 5:52:42 PM, вы писали:

AG> Пpивет, All !

AG> Подcкажите алгоритм равномерного движения точки по окружноcти радиуcом R.
Недавно отвечал в этой эхе на аналогичный вопрос, так что цитирую сам себя:

Классический алгоритм поворота, в нем 4 умножения и 2 сложения
на итерацию:

//Входные данные
//R         -- радиус
//alpha     -- шаг в радианах

//Инициализация
S := sin(alpha);
C := cos(alpha);
x := 0;
y := R:
//Главный цикл
loop
  xt := x; yt := y;
  x := xt*C - yt*S;
  y := yt*C + xt*S;
end loop;


Вот, взятый из книжки Р. Брейсуэлла "Преобразование Хартли",
алгоритм, в нем 3 умножения и 3 сложения на итерацию:

//Инициализация
x := 0; y := R;
dSin := sin(alpha);
dTg :=  tg(alpha/2);

//Главный цикл
loop
    temp := y+x*dTg;
    x    := x - temp*dSin;
    y    := x*dTg + temp;
end loop

Если вас интересует целочисленная арифметика, приглядитесь к
алгоритмам рисования окружности, например Брезенхема.
Правда в известных мне вариантах получается _неравномерное_ вращение.

-- 
Всех благ, Иван.



Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
--- ifmail v.2.15dev5
 * Origin: KKK (2:5020/400)