Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2012, 14:25   #1
Karlen1990
Пользователь
 
Регистрация: 12.07.2012
Сообщений: 12
По умолчанию определить точка принадлежит окружности

а как можно решать эту задачу для 5-и точек?определять пренадлежат или нет данной окружности. и если не пренадлежат нужно увеличить окружность, чтобы пренадлежал.
Karlen1990 вне форума Ответить с цитированием
Старый 12.07.2012, 14:43   #2
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

Логика решения несложная - есть центр окружности и радиус (вне зависимости от способа задания окружности их можно найти), ищем расстояние от центра до точек (формула расстояния между двумя точками - школьный курс), если расстояние меньше или равно радиусу - точка входит, иначе нет.
Кстати, окружности или все таки круга? Между понятиями кардинальное отличие
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 12.07.2012, 14:45   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Судя по описанию задания, речь идет о круге.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 12.07.2012, 14:57   #4
Terrance!
Пользователь
 
Регистрация: 12.05.2010
Сообщений: 66
По умолчанию

вот решение для вашей задачки(исходник во вложении)

Код:
......
var
  Form1: TForm1;
  p1:tpoint;//центр окружности
  Points:array[1..5]of tpoint;// набор из 5 точек
.....
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
randomize;
//устанавливаем центр окружности
p1.X:=100;
p1.Y:=100;
//расставляем точки случайным образом
for i:=1 to 5 do  begin
Points[i].X:=random(200);
Points[i].Y:=random(200);
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var I:integer;
begin
//чертим окружность(например, с радиусом 50)
form1.Canvas.Ellipse(p1.X-50,p1.Y-50,p1.X+50,p1.Y+50);
//для каждой из пяти точек проверяем, если расстояние от точки до центра< 50 то 
//рисуим их зелёным цветом
for i:=1 to 5 do begin
form1.Canvas.Pen.Color:=clblack;
if(sqrt(sqr(Points[i].X-p1.X)+sqr(Points[i].Y-p1.Y))<50)then
form1.Canvas.Pen.Color:=clgreen;
form1.Canvas.Ellipse(Points[i].X-5,Points[i].Y-5,Points[i].X+5,Points[i].Y+5);
end;
end;
P. S. это всего лишь один из вариантов, можно так, а можно иначе
Вложения
Тип файла: rar оно.rar (159.1 Кб, 12 просмотров)

Последний раз редактировалось Terrance!; 12.07.2012 в 15:03.
Terrance! вне форума Ответить с цитированием
Старый 12.07.2012, 15:00   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Чего-то ты не то увеличиваешь . Нужно основной круг, а не точки.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 12.07.2012, 15:05   #6
Terrance!
Пользователь
 
Регистрация: 12.05.2010
Сообщений: 66
По умолчанию

случайно написал комент

Последний раз редактировалось Terrance!; 12.07.2012 в 15:07.
Terrance! вне форума Ответить с цитированием
Старый 12.07.2012, 15:08   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Вот самый большой кружок в результате должен стать таким, чтобы все точки в него влазили. А ты только цветом выделяешь.

Цитата:
случайно написал комент
Случайно, не случайно, а уже на него ответил .
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 12.07.2012 в 15:18.
Utkin вне форума Ответить с цитированием
Старый 12.07.2012, 15:21   #8
Terrance!
Пользователь
 
Регистрация: 12.05.2010
Сообщений: 66
Смущение

аааа
ну тогда так )))

Код:
var
  Form1: TForm1;
  p1:tpoint;
  Points:array[1..5]of tpoint;
  R:integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
R:=50;
randomize;
p1.X:=100;
p1.Y:=100;
for i:=1 to 5 do  begin
Points[i].X:=random(200);
Points[i].Y:=random(200);
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var I:integer;
begin
for i:=1 to 5 do  begin
if not(sqrt(sqr(Points[i].X-p1.X)+sqr(Points[i].Y-p1.Y))<Round(R/2))
then R:=r+1;
end;

form1.Canvas.Ellipse(p1.X-Round(R/2),p1.Y-Round(R/2),p1.X+Round(R/2),p1.Y+Round(R/2));
for i:=1 to 5 do begin
form1.Canvas.Ellipse(Points[i].X-5,Points[i].Y-5,Points[i].X+5,Points[i].Y+5);
end;
end;
Вложения
Тип файла: rar оно.rar (160.1 Кб, 7 просмотров)
Terrance! вне форума Ответить с цитированием
Старый 12.07.2012, 15:38   #9
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Кстати, окружности или все таки круга? Между понятиями кардинальное отличие
В алгоритме решения задачи не столь принципиальное: в случае круга в проверке принадлежности будет ">=" вместо "="

Цитата:
а как можно решать эту задачу для 5-и точек?определять пренадлежат или нет данной окружности. и если не пренадлежат нужно увеличить окружность, чтобы пренадлежал.
И с каким шагом увеличивать окружность? с какой точностью производить сравнение (особенно актуально именно для окружности, а не круга)?
Если же перевести координаты точек в полярную систему, то задача практически теряет смысл)
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 12.07.2012, 15:42   #10
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
И с каким шагом увеличивать окружность?
Аналогово . То есть так чтобы задача была решено за 1 шаг.

Цитата:
Если же перевести координаты точек в полярную систему
На фига?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить принадлежит ли заданная точка с координатами (x,y) закрашенной области. Visual C Visual C++ 7 17.12.2011 19:49
Определить принадлежит ли точка с координатами х,у заштрихованной части плоскости. Брутальный М. Паскаль, Turbo Pascal, PascalABC.NET 8 04.04.2011 20:32
Определить принадлежит ли точка прямоугольнику Александр9999 Помощь студентам 1 03.12.2010 21:51
Определить, принадлежит ли точка с координатами (х, у) заштрихованной части плоскости.C++ Алексей_Warm Помощь студентам 2 15.11.2010 12:09