|
|
|
wowka19 |
|
|||
Опытный Профиль Группа: Участник Сообщений: 285 Регистрация: 30.11.2011 Репутация: нет Всего: нет |
Есть ломанная линия, отрезки которой являются хордами некой окружности.
Известны длины всех хорд и центральный угол, который охватывает эти хорды. Как найти радиус? Дано: w1,w2,...,wn и a Найти: R Это сообщение отредактировал(а) wowka19 - 15.5.2014, 02:22 |
|||
|
||||
maxim1000 |
|
|||
Эксперт Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
Решения одной закрытой формулой пока в голову не пришло, но численным методом несложно:
Зная длины отрезков и радиус, посчитать значение угла несложно. И зависимость эта будет монотонная (больше радиус - меньше угол). Так что можно оценить диапазон возможных знацений радиуса и воспользоваться, например, бинарным поиском. Для нижней оценки подойдёт ноль. Для верхней можно оценить длину дуги - она не будет больше, чем в Пи раз больше длины полилинии. Эту оценку делим на угол - получаем верхнюю границу для радиуса. -------------------- qqq |
|||
|
||||
Lipetsk |
|
|||
в форме ;) Профиль Группа: Участник Сообщений: 180 Регистрация: 28.1.2009 Где: Липецк Репутация: 2 Всего: 5 |
хорде Wi соответствует угол ai, такой, что
sin(ai/2)=Wi/2/R т.е. нужно выразить R из выражения a=sum(ai)=2*sum(arcsin(Wi/2/R)) |
|||
|
||||
wowka19 |
|
|||
Опытный Профиль Группа: Участник Сообщений: 285 Регистрация: 30.11.2011 Репутация: нет Всего: нет |
Друзья, чем вы слушаете читаете? Мне нужно выразить R, а не угол. И формула - мне давно известна, но для меня бесполезна, ибо нужен РАДИУС!!! а не угол. Добавлено @ 08:58 вопрос остался Это сообщение отредактировал(а) wowka19 - 15.5.2014, 08:59 |
|||
|
||||
mrgloom |
|
|||
Опытный Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
если известен угол значит известен центр окружности?
|
|||
|
||||
wowka19 |
|
|||
Опытный Профиль Группа: Участник Сообщений: 285 Регистрация: 30.11.2011 Репутация: нет Всего: нет |
нет.
|
|||
|
||||
mrgloom |
|
|||
Опытный Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
тогда интересно как вы получаете этот угол, ведь тогда точка центра может двигаться и угол соответственно тоже будет меняться.
|
|||
|
||||
maxim1000 |
|
|||
Эксперт Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
ну так в том ответе так и написано: в случае моего ответа: бинарный поиск - тоже способ посчитать R -------------------- qqq |
|||
|
||||
wowka19 |
|
|||
Опытный Профиль Группа: Участник Сообщений: 285 Регистрация: 30.11.2011 Репутация: нет Всего: нет |
mrgloom, Угол я не получаю, я его задаю.
maxim1000, ну так выразите R. |
|||
|
||||
mrgloom |
|
|||
Опытный Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
можно представить ломанную как точки и использовать МНК.
google -> fit circle least squares |
|||
|
||||
_Y_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Что-то я не понимаю. Есть формула в которой известно все, кроме радиуса. Решается любым численным методом на раз. Методов для решения уравнений с одним неизвестным море, а при такой простой формуле даже и Монте-Карло потянет без проблем Может можно и аналитически ее вывернуть, но я не настолько в этом силен, чтобы быстренько выдать решение. ЗЫ: Понятное дело, если отрезков очень уж много, то компу придется потрудиться чуть больше. Но, при большом числе отрезков, можно просто принять их сумму за длину дуги и посчитать радиус по школьной формуле без большой ошибки. Это сообщение отредактировал(а) _Y_ - 20.5.2014, 19:30 -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
Mirkes |
|
|||
Опытный Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 4 Всего: 17 |
Аналитически в действительных числах не решается. В комплексных формула получается в виде ряда определенного рекурентно, а потом этот ряд еще придется обращать. Думаю, что численное решение - наиболее быстрый путь.
Функция угла от радиуса является монотонно убывающей Взять R=1 если a®<А (А- требуемый угол), то делим R на 2, до тех пор пока неравенство сохраняется. Если a®>А, то умножаем R на два, пока неравенство сохраняется. Имеем два радиуса при меньшем верно a(R_1)>A, при большем a(R_2)<A Далее, например, дихотомией. Должно сойтись довольно быстро. В принципе, если считать что углы при каждой хорде достаточно малы, можно для определения стартовой точки воспользоваться оценкой sin(a)~a~arcsin(a). -------------------- Mirkes |
|||
|
||||
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |