Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.29;
Скачать: CL | DM;

Вниз

Геометрия на плоскости   Найти похожие ветки 

 
Dyakon_Frost ©   (2005-06-02 05:30) [0]

У меня вопрос:

Дано N- количество точек. Точки заданы парой чисел (x[i],y[i]) и образуют множество. И меняется от 1 до N.
Вводим количество точек, их координаты и радиус (для всех точек один).
Из заданного множества точек на плоскости выбрать две различные точки так, чтобы окружности заданного радиуса с центром в этих точках содержали внутри себя одинаковое количество заданных точек.


 
Defunct ©   (2005-06-02 06:01) [1]

А где вопрос?


 
Dyakon_Frost ©   (2005-06-02 06:25) [2]

Вопрос: Как это реализовать? Причем желательно с выводом правельных точек на Canvas


 
Defunct ©   (2005-06-02 06:51) [3]

> Как это реализовать?

есть 2 пути:
1. Математический. (более точный)
2. Графический. (более простой)

В обоих случаях надо подсчитать количество принадлежащих каждой i-й окружности точек. Выбрать такое множество окружностей, у которых совпадает число принадлежащих им точек.


> Причем желательно с выводом правельных точек на Canvas

это уже обёртка к конфетке. Выводите эти точки хоть вместе с окружностями прямо на принтер.


 
alertus ©   (2005-06-02 08:30) [4]

Вот пример реализации:
procedure TForm1.Button1Click(Sender: TObject);
var
 q:array[0..49] of TPoint;
 i,j,k:integer;
 c:integer;
const
 R = 30; //радиус окружностей
 L = 200; //сторона квадрата, в котором все дело происходит
begin
 image1.Width:=L;
 image1.Height:=L;
 randomize;
 for i:=0 to 49 do begin
   q[i].X:=random(L);
   q[i].Y:=random(L);
 end;

 for i:=0 to 49 do begin
   image1.Canvas.Ellipse(q[i].X-2,q[i].Y-2,q[i].X+2,q[i].Y+2);
 end;

 for i:=0 to 49 do begin
   c:=0; //количество точек, лежащих в пределах R от i-ой точки
   for j:=0 to 49 do begin
     if i=j then continue;
     if sqrt(sqr(q[i].X-q[j].X)+sqr(q[i].Y-q[j].Y))<R then inc(c);
   end;
   listbox1.Items.Add("Номер точки: "+inttostr(i)+", точек в пределах R - "+inttostr(c));
 end;
end;

Нужна Форма, TButton, TImage, TListBox.
Нажимайте на кнопку и из полученного списка в TListBox"е выбирайте точки. Можно нарисовать окружности с заданным количеством точек внутри. Будет красиво.

А зачем такая задача??


 
Dyakon_Frost ©   (2005-06-02 08:35) [5]

Defunct - спасибо! Но пример было бы здорова!
alertus - спасибо за пример!

Курсовик такой!
Я весь день мучаюсь!



Страницы: 1 вся ветка

Текущий архив: 2005.06.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.025 c
1-1117790059
sofs
2005-06-03 13:14
2005.06.29
Как преодразовать HEX-число в символ?


3-1116316623
Dell3r
2005-05-17 11:57
2005.06.29
Помогите составить запрос


1-1117622499
Ega23
2005-06-01 14:41
2005.06.29
Динамические массивы - правильно ли я понял help?


4-1114869698
psa247
2005-04-30 18:01
2005.06.29
Изменения реестра


1-1118293185
Wood
2005-06-09 08:59
2005.06.29
Иконка в Application.MessageBox