Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Радиус из угла длин хорд 
:(
    Опции темы
wowka19
Дата 15.5.2014, 01:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 30.11.2011

Репутация: нет
Всего: нет



Есть ломанная линия, отрезки которой являются хордами некой окружности.
Известны длины всех хорд и центральный угол, который охватывает эти хорды.
Как найти радиус?

user posted image
Дано: w1,w2,...,wn и a
Найти: R

Это сообщение отредактировал(а) wowka19 - 15.5.2014, 02:22
PM MAIL   Вверх
maxim1000
Дата 15.5.2014, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Решения одной закрытой формулой пока в голову не пришло, но численным методом несложно:

Зная длины отрезков и радиус, посчитать значение угла несложно. И зависимость эта будет монотонная (больше радиус - меньше угол).

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

Для нижней оценки подойдёт ноль.

Для верхней можно оценить длину дуги - она не будет больше, чем в Пи раз больше длины полилинии. Эту оценку делим на угол - получаем верхнюю границу для радиуса.



--------------------
qqq
PM WWW   Вверх
Lipetsk
  Дата 15.5.2014, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в форме ;)
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 28.1.2009
Где: Липецк

Репутация: 2
Всего: 5



хорде Wi соответствует угол ai, такой, что
sin(ai/2)=Wi/2/R
т.е. нужно выразить R из выражения
a=sum(ai)=2*sum(arcsin(Wi/2/R))
PM   Вверх
wowka19
Дата 15.5.2014, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 30.11.2011

Репутация: нет
Всего: нет



Цитата(Lipetsk @  15.5.2014,  08:54 Найти цитируемый пост)
a=sum(ai)=2*sum(arcsin(Wi/2/R)) 

Друзья, чем вы слушаете читаете? Мне нужно выразить R, а не угол. И формула user posted image  - мне давно известна, но для меня бесполезна, ибо нужен РАДИУС!!! а не угол.

Добавлено @ 08:58
вопрос остался

Это сообщение отредактировал(а) wowka19 - 15.5.2014, 08:59
PM MAIL   Вверх
mrgloom
Дата 15.5.2014, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



если известен угол значит известен центр окружности?
PM MAIL   Вверх
wowka19
Дата 15.5.2014, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 30.11.2011

Репутация: нет
Всего: нет



нет.
PM MAIL   Вверх
mrgloom
Дата 15.5.2014, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



тогда интересно как вы получаете этот угол, ведь тогда точка центра может двигаться и угол соответственно тоже будет меняться.
PM MAIL   Вверх
maxim1000
Дата 15.5.2014, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Цитата(wowka19 @  15.5.2014,  08:58 Найти цитируемый пост)
Друзья, чем вы слушаете читаете? Мне нужно выразить R, а не угол.


ну так в том ответе так и написано:

Цитата(Lipetsk @  15.5.2014,  08:54 Найти цитируемый пост)
т.е. нужно выразить R из выражения


в случае моего ответа: бинарный поиск - тоже способ посчитать R


--------------------
qqq
PM WWW   Вверх
wowka19
Дата 16.5.2014, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 30.11.2011

Репутация: нет
Всего: нет



mrgloom, Угол я не получаю, я его задаю.

maxim1000, ну так выразите R.
PM MAIL   Вверх
mrgloom
Дата 19.5.2014, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



можно представить ломанную как точки и использовать МНК.

google -> fit circle least squares
PM MAIL   Вверх
_Y_
Дата 20.5.2014, 19:29 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Цитата(wowka19 @ 15.5.2014,  08:58)
Мне нужно выразить R, а не угол. И формула user posted image  - мне давно известна, но для меня бесполезна, ибо нужен РАДИУС!!! а не угол.

Что-то я не понимаю.

 Есть формула в которой известно все, кроме радиуса. Решается любым численным методом на раз. Методов для решения уравнений с одним неизвестным море, а при такой простой формуле даже и Монте-Карло потянет без проблем smile 


Может можно и аналитически ее вывернуть, но я не настолько в этом силен, чтобы быстренько выдать решение.

ЗЫ: Понятное дело, если отрезков очень уж много, то компу придется потрудиться чуть больше. Но, при большом числе отрезков, можно просто принять их сумму за длину дуги и посчитать радиус по школьной формуле без большой ошибки.


Это сообщение отредактировал(а) _Y_ - 20.5.2014, 19:30


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Mirkes
Дата 21.5.2014, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1645 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.