Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 3.841 c
3-1116153034
Stef
2005-05-15 14:30
2005.06.29
Поиск подслова в слове


1-1117793543
zaw
2005-06-03 14:12
2005.06.29
ОКРУГЛЕНИЕ


3-1115987536
Roman_SVT
2005-05-13 16:32
2005.06.29
Delphi и Mysql


1-1118288871
TUser
2005-06-09 07:47
2005.06.29
Глюк консольного компилятора?


14-1117694379
12DFBDDh
2005-06-02 10:39
2005.06.29
файлы djvu





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский