Главная страница
    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
Время: 0.038 c
1-1118174495
Scorp123
2005-06-08 00:01
2005.06.29
Не работает функция Time


1-1117788235
Elvis
2005-06-03 12:43
2005.06.29
принцип вставления смайликов в ICQ.


14-1117471924
Cerberus
2005-05-30 20:52
2005.06.29
Новый значёк


9-1110528883
Guest2005
2005-03-11 11:14
2005.06.29
Вывод изображения используя средства D3D


8-1109931722
Gear
2005-03-04 13:22
2005.06.29
Проблема с ACM





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский