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

Есть множество точек в которое необходимо вписать окружность и определить центр окружности и радиус.

16.09.2017, 23:13. Показов 3581. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Не направите или не подскажите как реализовать идею. Задача заключается в следующем. Есть множество точек в которое необходимо вписать окружность и определить центр окружности и радиус. Через три точки однозначно можно провести окружность эт ясно, если больше то возникает неоднозначность. Я думал через уравнение окружности как то попытаться решить, но не знаю как отбирать точки и как в них вписать окружности. Помоги кто может плиз
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.09.2017, 23:13
Ответы с готовыми решениями:

В множество точек вписать окружность и определить центр окружности и радиус
Здравствуйте! Не направите или не подскажите как реализовать идею. Задача заключается в следующем....

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

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

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

17
141 / 119 / 29
Регистрация: 12.02.2017
Сообщений: 308
17.09.2017, 02:20 2
Направить или подсказать как реализовать идею?
Одна из идей (возможно есть и получше), если исходные данные это рисунок с точками, то
1. Написать программу анализирующую рисунок и выявляющую все точки, изображенные на нем (и местоположение каждой из них). Возможные проблемы: выявление самой точки, что это? - пиксель другого цвета или группа пикселей?, если группа - то каков ее размер?, например, прямоугольник 5 на 5 мм это точка или нет? И т.д.

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

3. И самое простое, - нарисовать окружность.

Но если вы, цитата: "...не знаю как отбирать точки и как в них вписать...", то наверное не следует этим заниматься и проще обратиться к фрилансерам, т.к. готовую программу по вашему заказу, наверное, здесь никто выкладывать не будет.

Не по теме:

Это форум, а не стол заказов.

0
1846 / 1161 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
18.09.2017, 18:24 3
Лучший ответ Сообщение было отмечено gogo199 как решение

Решение

gogo199, думаю, что алгоритм должен быть такой: находите минимальные и максимальные X и У
Центр окружности (X-a)2 + (Y-b)2 = R2 определить так a=Xmin + (Xmax - Xmin)/2, аналогично для b через Y, как бы строите прямоугольник, включающий ваши точки - центр прямоугольника = центр окружности. Теперь радиус определить просто, это максимальное расстояние от центра до точек R2=max{(X-a)2 +(Y-b)2}

Добавлено через 41 минуту
gogo199, невнимательно прочитал постановку задачи, тот алгоритм, который я предложил, для окружности, которая включает в себя все ваши точки. Тут мне надо срочно бежать по делам, освобожусь, подумаю и пришлю новое сообщение, но принцип останется таким же.

Добавлено через 4 часа 8 минут
gogo199, вписать окружность во множество точек - такого понятия нет. Можно вписать в фигуру, образованную точками (и то не всегда, представьте себе множество виде гантели - и куда же вписывать?). Возможны варианты:
1 - вы путаете понятия вписанная и описанная окружность, для описанной я дал алгоритм.
2 - вы неверно сформулировали задачу, если вам ее дали как задание по программированию, поэтому требуются уточнения. Если вписать в тот прямоугольник, о котором я писал, по меньшему размеру - это можно.
0
1389 / 530 / 67
Регистрация: 10.04.2009
Сообщений: 8,715
18.09.2017, 20:00 4
Цитата Сообщение от gogo199 Посмотреть сообщение
Через три точки однозначно можно провести окружность эт ясно
я лично не уверен в этом
0
1846 / 1161 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
18.09.2017, 20:24 5
Ципихович Эндрю, сейчас это (через три точки окружность, если точки не лежат на одной прямой), наверно, знают уже в 10 классе, а если вы учились в вузе, то должно быть в курсе аналитической геометрии. Так что ваша неуверенность правила не отменит.
0
0 / 0 / 0
Регистрация: 16.09.2017
Сообщений: 11
18.09.2017, 23:40  [ТС] 6
Даны точки имеющие координаты и необходимо используя математические методы построить по этим данным окружность
Миниатюры
Есть множество точек в которое необходимо вписать окружность и определить центр окружности и радиус.  
0
0 / 0 / 0
Регистрация: 16.09.2017
Сообщений: 11
18.09.2017, 23:41  [ТС] 7
Спасибо за идею
0
1846 / 1161 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
19.09.2017, 05:36 8
gogo199, ну это совсем другое дело,надо было сразу прислать снимок. Всё, что я написал раньше забываем. Вам необходимо минимизировать функционал F=Сумма(Y-Yt)2=min. Приравняв частные производные от суммы по параметрам a, b, R нулю получим три уравнения для их определения. Это идея методики. Я беру тайм-аут для уточнения методики, может быть для удобства маленько изменю вид функционала и пришлю Word-документ с методикой. Там формулы писать удобнее. Если вы можете прислать координаты точек, то тоже бы неплохо.

Добавлено через 9 минут
gogo199, индекс t относится к вашим точкам
0
1846 / 1161 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
19.09.2017, 09:04 9
gogo199, посылаю файл с методикой определения параметров окружности. Если что, пишите
Вложения
Тип файла: doc Расчёт параметров окружности.doc (25.0 Кб, 38 просмотров)
0
1846 / 1161 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
19.09.2017, 09:40 10
gogo199, из-за сокращений в формулах совсем вылетело из головы, что в fi тоже присутствуют эти же параметры окружности, доработаю, но если не получится получить значения в параметров в явном виде, то придется решать систему нелинейных уравнений. Позже пришлю решение
0
0 / 0 / 0
Регистрация: 16.09.2017
Сообщений: 11
19.09.2017, 10:44  [ТС] 11
Спасибо огромное!! сейчас посмотрю. Да координаты сегодня возьму и отправлю
0
185 / 183 / 31
Регистрация: 11.10.2016
Сообщений: 599
19.09.2017, 11:20 12
Burk, судя по фразе
Цитата Сообщение от gogo199 Посмотреть сообщение
множество точек в которое необходимо вписать окружность
и присланной картинке, где точки как раз и образуют окружность, ТС подойдет ваш первый алгоритм. Где точки сначала вписываются в прямоугольник, образованный наиболее удаленными друг от друга точками; определяется центр этого прямоугольника, как центр окружности; и вычисляется радиус, как
Цитата Сообщение от Burk Посмотреть сообщение
максимальное расстояние от центра до точек
То есть делаем два цикла, в первом находим максимальные и минимальные значения X и Y, что и будет являться углами прямоугольника, во втором проверяем квадраты расстояний до центра, на случай если какая-либо из точек будет близка к углу прямоугольника и вычисляем наибольшее значение, которое и будет являться радиусом
0
58 / 57 / 13
Регистрация: 10.09.2009
Сообщений: 255
19.09.2017, 12:37 13
Если это статистическая обработка, то при использовании "метода прямоугольника" может привести к неточному определению радиуса и центра окружности.
По идее может надо обработать все токи и при наибольшем количестве совпадений окружности с точками выбрать за базовую эту окружность и она точно будет отличатся от той которая построена по прямоугольнику

Добавлено через 1 минуту
а остальные точки сместить по одной из координат или по радиусу.
0
1846 / 1161 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
19.09.2017, 15:39 14
_shark, Владимир_Сар, я все это знаю, но такие задачи так не делаются. Приду домой, нарисую правильную методику автору через стандартное отклонение, предыдущая не проходит, а так хотелось обойтись без коней
0
1846 / 1161 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
19.09.2017, 17:49 15
gogo199, Оставляем функционал каким был без корней, только малость подправил и даже всё упростилось
Вложения
Тип файла: doc Расчёт параметров окружности.doc (25.5 Кб, 38 просмотров)
0
1846 / 1161 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
20.09.2017, 18:38 16
_shark, я тоже сначала попался на описанная окружность, т. е окружность включающая в себя все точки. Тогда, конечно, первый вариант. Но там ВПИСАННАЯ, вернее АППРОКСИМАЦИЯ экспериментальных точек окружностью. Тогда вариант 2.
gogo199, будут проблемы, обращайтесь

Добавлено через 15 секунд
_shark, я тоже сначала попался на описанная окружность, т. е окружность включающая в себя все точки. Тогда, конечно, первый вариант. Но там ВПИСАННАЯ, вернее АППРОКСИМАЦИЯ экспериментальных точек окружностью. Тогда вариант 2.
gogo199, будут проблемы, обращайтесь, можно по мэйлу
0
1846 / 1161 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
22.09.2017, 00:22 17
gogo199, тут выдалось время и я нарисовал программу по приведённой методике. Если вы что-то делали, можете сравнить
Visual Basic
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
Private Sq As Double, Par(1 To 3) As Double
Private I As Integer, J As Integer, N As Integer
Private XY() As Variant
Sub BegI()
Dim R As Double, A As Double, B As Double, K As Integer, L As Integer
Dim Mt(1 To 3, 1 To 4) As Double, Fn() As Double, Fpl() As Double
Dim Xmin As Double, Ymin As Double, Xmax As Double, Ymax As Double
R = 6: A = 4: B = 4: L = 0
N = 26
ReDim XY(2, N)
'формируем модельный пример окружности со случайными отклонениями от нее
For I = -2 To 10
  XY(1, L + 1) = I: XY(1, L + 2) = I
  Sq = Sqr(R ^ 2 - (I - A) ^ 2)
  XY(2, L + 1) = (B + Sq) * (1 + (0.2 * (Rnd - 0.5)))
  XY(2, L + 2) = (B - Sq) * (1 + (0.2 * (Rnd - 0.5)))
  L = L + 2
Next
Xmin = 1000000: Ymin = 1000000: Xmax = 0: Ymax = 0
For I = 1 To N
  If Xmin > XY(1, I) Then Xmin = XY(1, I)
  If Ymin > XY(2, I) Then Ymin = XY(2, I)
  If Xmax < XY(1, I) Then Xmax = XY(1, I)
  If Ymax < XY(2, I) Then Ymax = XY(2, I)
Next
Par(2) = (Xmin + Xmax) / 2: Par(3) = (Ymin + Ymax) / 2
 
'начальное приближение для радиуса - половина длинной стороны
Xmin = (Xmax - Xmin) / 2: Ymin = (Ymax - Ymin) / 2
Par(1) = (IIf(Xmin > Ymin, Xmin, Ymin)) ^ 2
'Если вы координаты точек введете в лист Экселя, то
'вместо модельного примера поставьте следующие операторы
'N = число ваших точек
'XY = Range("A1:B") & N
'
 
L = 3 'ЧИСЛО УРАВНЕНИЙ
'формирование матрицы 3 на 4 для расчета по Ньютону-Рафсону
Beg:
Fn = FuncI
For I = 1 To L  'считаем производные
  Par(I) = Par(I) + 0.001
  Fpl = FuncI
  For J = 1 To L
    Mt(J, I) = 1000 * (Fpl(J) - Fn(J))
  Next
  Par(I) = Par(I) - 0.001
  Mt(I, L + 1) = Fn(I)
Next
'решение системы уравнений для уточнения значений параметров
For I = 1 To L
  Sq = Mt(I, I)
  For J = I To L + 1
    Mt(I, J) = Mt(I, J) / Sq
  Next
  For K = I + 1 To L
    For J = I + 1 To L + 1
      Mt(K, J) = Mt(K, J) - Mt(K, I) * Mt(I, J)
    Next
  Next
Next
For I = L To 1 Step -1
  For J = I - 1 To 1 Step -1
    Mt(J, L + 1) = Mt(J, L + 1) - Mt(I, L + 1) * Mt(J, I)
  Next
  Par(I) = Par(I) - Mt(I, L + 1)
Next
MsgBox "R=" & Sqr(Par(1)) & " a=" & Par(2) & " b=" & Par(3)
If Abs(Mt(1, L + 1)) > 0.0001 Then GoTo Beg
End Sub
Function FuncI() As Double()
Dim F(1 To 3) As Double, J As Integer
F(1) = 0: F(2) = 0: F(3) = 0
For J = 1 To N
  Sq = Par(1) - (XY(1, J) - Par(2)) ^ 2 - (XY(2, J) - Par(3)) ^ 2
  F(1) = F(1) + Sq: F(2) = F(2) + Sq * XY(1, J): F(3) = F(3) + Sq * XY(2, J)
Next
FuncI = F
End Function
0
1846 / 1161 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
25.09.2017, 14:01 18
gogo199, а вы получили мой ответ на ваше последнее личное сообщение для меня?
0
25.09.2017, 14:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.09.2017, 14:01
Помогаю со студенческими работами здесь

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

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

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

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


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

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