![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Задача такая: нужно разбить 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; |
#2
|
||||
|
||||
![]() Вот так у меня работает:
Код:
procedure TForm1.Button1Click(Sender: TObject); Var a, t: Real; x, y: Integer; begin a:= 360/StrToInt(Edit1.Text); ShowMessage(FloatToStr(a*StrToInt(Edit2.Text))); t:= -180; While t <= 180 Do begin Form1.Canvas.MoveTo(200, 200); t:= t + a; x := Round(200 + 150 * Sin(pi/180*t)); y := Round(200 + 150 * Cos(pi/180*t)); Form1.Canvas.LineTo(x, y); end; end; If end Then begin; |
#3
|
|||
|
|||
![]() Спасибо. Я тупанул. Неправильно в радианы перевел.
|