Главная страница
    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.049 c
4-1115369254
pavel_guzhanov
2005-05-06 12:47
2005.06.29
как определить размеры рисунка


1-1118068965
VadimX
2005-06-06 18:42
2005.06.29
Визуальный объект 2 в одном.


3-1116504029
makaron_x
2005-05-19 16:00
2005.06.29
Как добраться к значению поля через отображающий его DBText?


1-1117547810
alertus
2005-05-31 17:56
2005.06.29
Использование технологии MMX


3-1115878600
leonidus
2005-05-12 10:16
2005.06.29
Глюк базы dBase если поле пустое





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