Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 22
1

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

28.06.2016, 16:38. Показов 2001. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Определить радиус и центр такой окружности, проходящей хотя бы через три разные точки множества точек, минимального радиуса
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.06.2016, 16:38
Ответы с готовыми решениями:

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

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

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

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

1
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
28.06.2016, 18:16 2
Лучший ответ Сообщение было отмечено Headklif как решение

Решение

Примерно так.
Delphi
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
implementation
type Point=record
           x,y:double;
           end;
{$R *.dfm}
//определение параметров окружности
procedure Okr(a,b,c:Point;var o:Point;var r:double);
var ab,ac:Point;
    a1,b1,a2,b2,c1,c2:double;
begin
//середины сторон
ab.x:=(a.x+b.x)/2;
ab.y:=(a.y+b.y)/2;
ac.x:=(a.x+c.x)/2;
ac.y:=(a.y+c.y)/2;
//координаты центра
a1:=b.x-a.x;
b1:=b.y-a.y;
c1:=ab.x*(b.x-a.x)+ab.y*(b.y-a.y);
a2:=c.x-a.x;
b2:=c.y-a.y;
c2:=ac.x*(c.x-a.x)+ac.y*(c.y-a.y);
o.x:=(c1*b2-c2*b1)/(a1*b2-a2*b1);
o.y:=(a1*c2-a2*c1)/(a1*b2-a2*b1);
//радиус
r:=sqrt(sqr(a.x-o.x)+sqr(a.y-o.y));
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
with StringGrid1 do
 begin
  colcount:=3;
  defaultcolwidth:=40;
  rowcount:=2;
  cells[0,0]:='№пп';
  cells[1,0]:='X';
  cells[2,0]:='Y';
  scrollbars:=ssVertical;
 end;
Memo1.Clear;
end;
procedure TForm1.Button1Click(Sender: TObject);
var a:array of Point;
    n,i,j,k,imn,jmn,kmn,q:integer;
    o,omn:Point;
    r,rmn:double;
begin
randomize;
val(Edit1.Text,n,k);
if(k<>0)or(n<3)then
 begin
  ShowMessage('Неверно введено количество точек');
  Edit1.Clear;
  Edit1.SetFocus;
  exit;
 end;
setlength(a,n);
StringGrid1.RowCount:=2;
for i:=0 to n-1 do
 begin
  a[i].X:=-10+20*random;
  a[i].Y:=-10+20*random;
  with StringGrid1 do
   begin
    cells[0,i+1]:=inttostr(i+1);
    cells[1,i+1]:=format('%.2f',[a[i].X]);
    cells[2,i+1]:=format('%.2f',[a[i].Y]);
    rowcount:=rowcount+1;
   end;
  end;
StringGrid1.RowCount:=StringGrid1.RowCount-1;
q:=0;
rmn:=0;
imn:=-1;
jmn:=-1;
kmn:=-1;
for i:=0 to n-3 do//перебираем точи
for j:=i+1 to n-2 do
for k:=j+1 to n-1 do
 begin
  q:=q+1;
  Okr(a[i],a[j],a[k],o,r);
  if q=1 then
   begin
    rmn:=r;
    omn.x:=o.x;
    omn.y:=o.y;
    imn:=i;
    jmn:=j;
    kmn:=k;
   end
  else if r<rmn then
   begin
    rmn:=r;
    omn.x:=o.x;
    omn.y:=o.y;
    imn:=i;
    jmn:=j;
    kmn:=k;
   end;
 end;
Memo1.Lines.Add('Окружность минимального радуса');
Memo1.Lines.Add('Радиус='+format('%.2f',[rmn]));
Memo1.Lines.Add('Координаты центра: x='+format('%.2f',[omn.x])+'  y='+format('%.2f',[omn.y]));
Memo1.Lines.Add('Образована точками c координатами:');
Memo1.Lines.Add('('+format('%.2f',[a[imn].x])+';'+format('%.2f',[a[imn].y])+')'+
              '  ('+format('%.2f',[a[jmn].x])+';'+format('%.2f',[a[jmn].y])+')'+
              '  ('+format('%.2f',[a[kmn].x])+';'+format('%.2f',[a[kmn].y])+')');
 
end;
Вложения
Тип файла: rar Описанная окружность минимального радиуса.rar (193.0 Кб, 12 просмотров)
0
28.06.2016, 18:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.06.2016, 18:16
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru