0 / 0 / 0
Регистрация: 14.03.2011
Сообщений: 3
1

Определить радиус и центр окружности минимального радиуса

14.03.2011, 23:40. Показов 3641. Ответов 4
Метки нет (Все метки)

Здравствуйте люди, помогите пожалуста сделатьэту программу.

Определить радиус и центр окружности минимального радиуса, проходящей хотя бы через три различные точки заданного множества точек на плоскости.

Добавлено через 4 часа 46 минут
Кто поможет?

Добавлено через 3 часа 45 минут
Ну кто нибудь =)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.03.2011, 23:40
Ответы с готовыми решениями:

Определить радиус и центр окружности
Определить радиус и центр такой окружности, проходящей хотя бы через три различные точки заданного...

Определить радиус и центр окружности
а)определить радиус и центр окружности,на которой лежит наибольшее число точек заданного на...

Определить радиус и центр окружности, на котором лежит наибольшее число точек заданных на плоскости
определить радиус и центр окружности, на котором лежит наибольшее число точек заданных на плоскости...

Определить радиус и центр окружности, проходящей по крайней мере через три точки множества
Определить радиус и центр окружности, проходящей по крайней мере через три точки множества и...

4
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
15.03.2011, 00:32 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

решение в лоб:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for i:=1 to n do
  for j:=1 to n do
    if (j<>i) then
    begin
//вот тут нам надо найти расстояние между точками зная их координаты
//Теперь у нас есть диаметр радиуса, который представлен прямой от x1,y1 до x2,y2 
//находим центр этой прямой, находим точки x0 и y0 нашей окружности пробегаемся ещё раз по
//всему циклу и просматриваем все точки не входят ли они в нашу окружность (нам известны 
//координаты центра, радиус (Диаметр пополам) и координаты проверяемой точки (не забываем
//исключить точки с индексом i и j. Если нашли хотя бы одну точку (входящую в радиус),
//останавливаем цикл, сравниваем радиус с тем, что у нас уже есть 
//(если это первый радиус, то просто его запоминаем ну и позицию центра не забываем 
//сохранять). И продолжаем цикл.
    end;
//После выполнения всего цикла выводим радиус и его центр.
Ссылка на википедию (окружность) Там вы найдете формулу окружности, зная x0 y0 R вы всегда можете узнать входит ли искомая точка в данную окружность ( Если расстояние от точки до центра круга меньше или равно радиуса, то точка в круге.). Вроде всё. Может быть данный алгоритм и не совсем верен, не могу со 100% уверенностью сказать, что он полностью правильный. Если что не так, то пусть кто-нибудь ещё подскажет.
1
0 / 0 / 0
Регистрация: 14.03.2011
Сообщений: 3
15.03.2011, 13:25  [ТС] 3
Что?
=)
Я не силен в математике и програмировании неочень, не понимаю как и что делать?
0
Почетный модератор
64277 / 47576 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
15.03.2011, 16:27 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

В принципе алгоритм описан например здесь. Вертикальные линии вычислил напрямую без обмена точек.
http://algolist.manual.ru/math... circle.php
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
uses crt;
const nmax=15;{макс. кол. точек}
      e=0.0001;{точность определения}
type
Point=record{тип точка}
      x,y:real;
      end;
MassP=array[1..nmax] of Point;{массив точек}
procedure Tochki(var t:MassP;var n:integer);{создание массива точек}
var i:integer;
begin
repeat
write('Количество точек от 3 до ',nmax,' n=');
readln(n);
until n in [3..nmax];
for i:=1 to n do
 begin
  t[i].x:=20*random-10;
  t[i].y:=20*random-0;
 end;
writeln('Координаты точек:');
write('X:');
for i:=1 to n do
write(t[i].x:5:1);
writeln;
write('Y:');
for i:=1 to n do
write(t[i].y:5:1);
writeln;
end;
{вычисление координат центра и радиуса окружности}
procedure Okr(t1,t2,t3:Point;var o:Point;var r:real);
var a,b,x,y:real;
    k0,k1,k2,m0,m1,m2:real;
begin
k0:=sqr(t1.x)-sqr(t2.x)+sqr(t1.y)-sqr(t2.y);
k1:=2*(t1.y-t2.y);
k2:=2*(t1.x-t2.x);
m0:=sqr(t1.x)-sqr(t3.x)+sqr(t1.y)-sqr(t3.y);
m1:=2*(t1.y-t3.y);
m2:=2*(t1.x-t3.x);
a:=k2*m0-k0*m2;
b:=k2*m1-k1*m2;
if b=0 then exit;
y:=a/b;
o.y:=y;
if abs(m2) > e then x:=(m0-y*m1)/m2
else
  if abs(k2) > e then x:=(k0-y*k1)/k2
  else exit;
o.x:=x;
r:=sqrt(sqr(t1.x-x)+sqr(t1.y-y));
end;
 
 
var t:MassP;
    rc:Point;
    n,i,j,k,imn,jmn,kmn:integer;
    r,mn:real;
begin
clrscr;
randomize;
Tochki(t,n);
Okr(t[1],t[2],t[3],rc,r);
mn:=r;{пока минимальный в точках 1,2,3}
{ищем самый маленький радиус}
for i:=1 to n-2 do
for j:=i+1 to n-1 do
for k:=j+1 to n do
 begin
  Okr(t[i],t[j],t[k],rc,r);
  if r<mn then
   begin
    mn:=r;
    imn:=i;
    jmn:=j;
    kmn:=k;
   end;
 end;
writeln('Окружность c минимальным радиусом:');
writeln(' координаты центра x0=',rc.x:0:2,' Y0=',rc.y:0:2);
writeln(' радиус R=',r:0:2);
writeln(' номера точек ',imn,' ',jmn,' ',kmn);
readln
end.
Добавлено через 56 секунд
Цитата Сообщение от Nikc-1 Посмотреть сообщение
Я не силен в математике и програмировании неочень,
Ну так не для тебя и написал, может кому-то кто чуть понимает пригодится...

Добавлено через 27 секунд
Кстати и в русском языке смотрю не очень....
2
0 / 0 / 0
Регистрация: 14.03.2011
Сообщений: 3
15.03.2011, 19:29  [ТС] 5
Ого, =/
Опечатки вышли =|
Сори!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2011, 19:29
Помогаю со студенческими работами здесь

Радиус и центр окружности.
Задача: Определите радиус и центр окружности, проходящей по крайней мере через три различные точки...

Определить радиус и центр окружности минимального радиуса, проходящей хотя бы через три различные точки заданн
Определить радиус и центр окружности минимального радиуса, проходящей хотя бы через три различные...

Определить радиус и центр окружности минимального радиуса, проходящей хотя бы через три различные точки заданного множества точек на плоскости
Определить радиус и центр окружности минимального радиуса, проходящей хотя бы через три различные...

Определить радиус и центр окружности минимального радиуса, проходящей хотя бы через три различные точки заданного множества точук на плоскости
Определить радиус и центр окружности минимального радиуса, проходящей хотя бы через три различные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru