Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #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;
Ответить с цитированием
  #2  
Старый 03.08.2011, 16:27
Аватар для AND_REY
AND_REY AND_REY вне форума
Активный
 
Регистрация: 31.03.2009
Адрес: Украина, г.Днепропетровск
Сообщения: 324
Версия Delphi: Delphi7
Репутация: 3877
По умолчанию

Вот так у меня работает:
Код:
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  
Старый 03.08.2011, 16:52
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

Спасибо. Я тупанул. Неправильно в радианы перевел.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:27.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025