Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как расчитать точки по окружности циклом 
:(
    Опции темы
Serhik_z
  Дата 16.4.2006, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 108
Регистрация: 4.12.2004

Репутация: нет
Всего: нет



Как расчитать точки по окружности циклом
Зная радиус и колличество точек.

Исходник Здесь 
PM MAIL   Вверх
maxim1000
Дата 16.4.2006, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 4
Всего: 110



x=xcenter+radius*cos(2*pi*n/N)
y=ycenter+radius*sin(2*pi*n/N)
N - общее количество точки
n - номер текущей точки...  

Это сообщение отредактировал(а) maxim1000 - 16.4.2006, 11:10


--------------------
qqq
PM WWW   Вверх
Albinos_x
Дата 16.4.2006, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



где-то так на вскидку:
Код
...
// Х, Y - координаты точки 
// R - радиус окружности
// ColPix - количество пикселей
for i:=0 to Trunc((360/ColPix)-1) do
   begin
   X:=cos((360/ColPix)*i)*R;
   Y:=sin((360/ColPix)*i)*R;
   // здесь рисуем точку
   end;
...


ЗЫ: по ссылке ничего не качается...

Добавлено @ 11:11 
соответственно необходимо прибавлять смещение цента относительно верхнего левого угла ...

Добавлено @ 11:14 
т.е.:
Код

...    
// Х, Y - координаты точки    
// Хc, Yc - координаты цента окружности
// R - радиус окружности    
// ColPix - количество пикселей    
for i:=0 to Trunc((360/ColPix)-1) do    
   begin    
   X:=Xc+cos((360/ColPix)*i)*R;    
   Y:=Yc+sin((360/ColPix)*i)*R;    
   // здесь рисуем точку    
   end;    
...
  

Это сообщение отредактировал(а) Albinos_x - 16.4.2006, 16:31


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Serhik_z
Дата 16.4.2006, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 108
Регистрация: 4.12.2004

Репутация: нет
Всего: нет



Спасибо за примеры!

Вот ссылка, должно скачиваться.

http://s24tem.narod.ru/krug.zip
 
PM MAIL   Вверх
Albinos_x
Дата 16.4.2006, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Цитата(Serhik_z @  16.4.2006,  14:04 Найти цитируемый пост)
Вот ссылка, должно скачиваться.

http://s24tem.narod.ru/krug.zip

не качается...  


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Serhik_z
Дата 16.4.2006, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 108
Регистрация: 4.12.2004

Репутация: нет
Всего: нет



Не компилируется на цикле (n: integer;)
можно добавить угол смещения 1-точки и далее расчет
остальных точек.

Код

procedure TForm1.Button1Click(Sender: TObject);
var
 t: real;     // Колличество точек
 g: real;     //  Градусы для смещения 1-ой точки
 m: real;     //  Минуты
 s: real;     // Секунды
 x: real;     // Координата Х центра окружности
 y: real;     // Координата Y центра окружности
 c: integer;  // челое число
 d: integer;  // дробное число
 r: real;     // Радиус
 n: integer;  // Счетчик
 v: real;     // вычисления
 vu:  real;  // вычисления
 xa: real;    // вычисления
 ya: real;    // вычисления
begin
 // получить исходные данные из полей ввода
x:= StrToFloat(Edit1.Text); // Координата Х
y:= StrToFloat(Edit2.Text); // Координата Y
g:= StrToFloat(Edit3.Text); // Градусы (смещение 1-ой точки)
m:= StrToFloat(Edit4.Text); // Минуты
s:= StrToFloat(Edit5.Text); // Секунды
t:= StrToFloat(Edit6.Text); // Колличество точек
r:= StrToFloat(Edit7.Text); // Радиус
// предварительные преобразования
c:= Trunc(t); // это целая часть числа t
d:= Trunc(t/2) mod 10000; // это дробная часть числа t

{
// вычисление         (g+(m/60+(s/3600)))-перевод градусы
v:=360/t;// Угол от колличества точек
//vu:=v+(g+(m/60+(s/3600)));// угол смещения
xa:= x+r*cos((vu)*pi/180);// расчет Т1 по Х
ya:= y+r*sin((vu)*pi/180);// расчет Т1 по Y
// вывод результата
Memo1.Lines.Add(FloatToStrF(xa,ffFixed,9,8) + '');// вывод по осям X и Y
Memo2.Lines.Add(FloatToStrF(ya,ffFixed,9,8) + '');
}

 for n:=0 to ((360/t)-1) do
 begin
xa:= x+r*cos((n)*pi/180);
ya:= y+r*sin((n)*pi/180);
// вывод результата
Memo1.Lines.Add(FloatToStrF(xa,ffFixed,9,8) + '');// вывод по осям X и Y
Memo2.Lines.Add(FloatToStrF(ya,ffFixed,9,8) + '');
end;
end;


 smile  smile  smile 
 
PM MAIL   Вверх
Albinos_x
Дата 16.4.2006, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



надо так:
Код

...
for n:=0 to Trunc((360/t)-1) do
...
 


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0592 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.