Показать сообщение отдельно
  #1  
Старый 03.08.2011, 14:49
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию Проход по окружности

Задача такая: нужно разбить 360 градусов переменной (в котоой определенное значение) на равные промежутки, т.е. что-то типа 360/cnt - это значит "сколько градусов на каждую часть". Потом мне нужно по номеру (!) узнать угол: (360/cnt) * i. В теории, если пройтись:

Код:
 for i := 1 to cnt do begin
  нужный угол := (360 / cnt) * i;
  //рисуем луч из центра
 end;

то распределение лучей должно быть равномерно, однако выдает такое:



Код:
function getCoors(P: TPoint; const cnt, i: integer): TPoint;
var
 x, y: integer;
 a: real;
begin
 a := (360 / cnt) * i;
 x := Round(sin(180 * a / Pi) * 1550 + P.X);
 y := Round(cos(180 * a / Pi) * 1550 + P.Y);
 Result := Point(x, y);
end;
Ответить с цитированием