|
|
|
Вписывание многоугольника
|
|||
|---|---|---|---|
|
#18+
Эх знал бы я так математику..... Если не найдется аналитическое решение, придется делать численное. Никуда не денешься. Или методом перебора с заданным шагом :-))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2006, 20:16:48 |
|
||
|
Вписывание многоугольника
|
|||
|---|---|---|---|
|
#18+
Алексей Вк.углы между сторонами максимальныМожет, сумма углов? если нет, то квадрат будет более приоритетен, чем ромб при равной сумме углов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2006, 20:30:43 |
|
||
|
Вписывание многоугольника
|
|||
|---|---|---|---|
|
#18+
Алексей Вк.Эх знал бы я так математику..... Если не найдется аналитическое решение, придется делать численное. Никуда не денешься. Или методом перебора с заданным шагом :-))))) Ну численный то я тебе сразу предложу.. строишь окружность радиуса R0 - откладываешь ломанную по окружности из сторон многоугольника (это всегда можно сделать). вычисляешь из расстояния между конечными точками - на сколько необходимо уменьшить радиус (или увеличить).. Например : R1 = R0 - D / 2PI. ( надо подумать ещё!) Метод должен сходится стопудов! зы. между прочим отсюда похоже следует что для любого значения сторон существует и единственен с точностью до поворота вписаный в окружность многоугольник. и площадь его максимальна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2006, 20:38:32 |
|
||
|
Вписывание многоугольника
|
|||
|---|---|---|---|
|
#18+
Мне все таки кажется, что можно это решить без перебора. В итоговом многоугольнике, каждая из сторон многоугольника является хордой к описывающей окружности. Значит окружность можно разбить на кучу секторов с одинаковым радиусом и задаными длинами хорд. А дальше, зная что длина хорды относится к углу 2*R*sin(a/2) получаем систему с одним уравнением для каждого из исходных отрезков: Код: plaintext 1. 2. 3. 4. Потом (для определенности) кладем один из отрезков на координатную ось и зная радиус (и возможно углы) посторить окружность и вписаный в нее многоугольник плевое дело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2006, 21:01:07 |
|
||
|
Вписывание многоугольника
|
|||
|---|---|---|---|
|
#18+
Ну численный то я тебе сразу предложу.. строишь окружность радиуса R0 - откладываешь ломанную по окружности из сторон многоугольника (это всегда можно сделать). вычисляешь из расстояния между конечными точками - на сколько необходимо уменьшить радиус (или увеличить).. Например : R1 = R0 - D / 2PI. ( надо подумать ещё!) Метод должен сходится стопудов! Не должен. В основе лежит неверная посылка что длина хорды зависит от радиуса окружности линейно, что справедливо для длины дуги окружности. Если бы это было бы так, то задача решалась бы аналитически в три действия. Эх знал бы я так математику..... Если не найдется аналитическое решение, придется делать численное. Никуда не денешься. Или методом перебора с заданным шагом :-))))) В свете Ваших последних признаний, то что Вы запостили вначале не совсем эквивалентно тому, что Вы на самом деле ищите (может и эквивалентно, но это не очевидно и, вообще говоря, надо доказывать). Если хотите, я могу сбросить систему уравнений к которым приведет вариационная постановка задачи, но предупреждаю, она будет также нелинейной и будет выглядеть ещё пострашнее, чем в случае с окружностью, так что от итерационных методов решения систем нелинейных алгебраических уравнений Вам, похоже, никуда не деться. Xотя, чёрт его знает, например до открытия дифференциального/интегрального исчисления был такой оригинал (кажется Гюйгенс), так он некоторые задачи, кот. теперь решаются при помощи диффуров умудрялся решать без этих прибамбасов. Так что never say never! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2006, 21:14:40 |
|
||
|
Вписывание многоугольника
|
|||
|---|---|---|---|
|
#18+
Мне все таки кажется, что можно это решить без перебора. Но если теперь вспомнить что сумма всех углов должна дать в итоге 360 градусов и добавить это уравнение в систему - получим вполне простую систему которую уже можно решить традиционными методами. Осталась мелочь - найти традиционный НЕИТЕРАЦИОННЫЙ метод решения нелинейных алгебраических уравнений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2006, 21:20:30 |
|
||
|
Вписывание многоугольника
|
|||
|---|---|---|---|
|
#18+
Не должен. В основе лежит неверная посылка что длина хорды зависит от радиуса окружности линейно, что справедливо для длины дуги окружности. Если бы это было бы так, то задача решалась бы аналитически в три действия. Блин, имел ввиду от угла сектора конечно. От радиуса то как раз линейно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2006, 21:23:49 |
|
||
|
Вписывание многоугольника
|
|||
|---|---|---|---|
|
#18+
Так, чтобы застолбить приоритет - задача с окружностью кажется действительно решается аналитически в три действия... Продолжение следует... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2006, 21:47:17 |
|
||
|
Вписывание многоугольника
|
|||
|---|---|---|---|
|
#18+
Э..., нет. Май бед. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2006, 21:51:40 |
|
||
|
Вписывание многоугольника
|
|||
|---|---|---|---|
|
#18+
Продолжу численную идею в таком варианте.. (см. рисунок1) P - сторона. Считаем углы при вершине -> P^2 = R^2 - 2R^2 COS(A) A = arccos((R^2 - P^2)/(2 R^2)) Далее.. сумма углов для вписанного многоугольника на рисунке должна быть равна 2PI (когда начальные и конечные точки совпадут) F(R) = SUM(arccos((R^2 - P^2)/(2 R^2))) Решаем F(R) = 2 * PI методом ньютона или его модификациями (в принципе даже знаем функцию производную в точке) Найденный R и есть искомый. (Площадь элементарно из радиуса описаной окружности считается) Проблема N1: Существует много решений. (см. рис 2) => для ньютона R0 надо попасть в локальную область вокруг искомого R. Проблема N2: Если центр описаной лежит вне многоугольника - надо решать уравнение F(R) - 2 * Amax = 0 (Amax - угол напротив большей стороны) воть. строго алгоритма разрешающего эти 2 проблемы предложить пока не могу. (рис.1): ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 09:20:08 |
|
||
|
Вписывание многоугольника
|
|||
|---|---|---|---|
|
#18+
рис.2 : ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 09:21:10 |
|
||
|
Вписывание многоугольника
|
|||
|---|---|---|---|
|
#18+
рис.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 09:21:53 |
|
||
|
Вписывание многоугольника
|
|||
|---|---|---|---|
|
#18+
сори. пропали индексы из за тега [ i ] :-) F(R) = SUM(arccos((R^2 - P(i)^2)/(2 R^2))) - где P(i) длина i-той стороны. сумма по всем сторонам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 09:23:41 |
|
||
|
Вписывание многоугольника
|
|||
|---|---|---|---|
|
#18+
Кстати mikhail_n Начальное приближение для R - Sum(di)/(2*pi). Совсем не факт, что попадём в окрестность сходимости метода Ньютона к искомому решению.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 09:57:22 |
|
||
|
Вписывание многоугольника
|
|||
|---|---|---|---|
|
#18+
У меня родилась новая формулировка задачи :-) Т.к. действительно может быть немало случаев когда многоугольник и не впишешь, и не опишешь. То можно переформулировать. Мне нужно чтобы все стороны многоугольника описали фигуру, максимально близкую к кругу. ИМХО это условие выполняется когда каждая сторона является касательной к окружности, причем радиус окружности для каждой стороны может быть свой. Вот рисунок: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 13:32:49 |
|
||
|
Вписывание многоугольника
|
|||
|---|---|---|---|
|
#18+
Алексей Вк.У меня родилась новая формулировка задачи :-)А можно поинтересоваться практическим смыслом этой задачи? Алексей Вк.может быть немало случаев когда многоугольник и не впишешьПримерчик можно? что-то не могу такого представить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 13:37:55 |
|
||
|
Вписывание многоугольника
|
|||
|---|---|---|---|
|
#18+
А вот теперь вопрос - как будет выглядеть сиcтема уравнений для такого случая? И реально ли ее решить вообще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 13:38:05 |
|
||
|
Вписывание многоугольника
|
|||
|---|---|---|---|
|
#18+
Алексей Вк.У меня родилась новая формулировка задачи :-)Кстати, эта формулировка ничем не отличается от вписывания многоугольника в окружность и, соответственно, имеет то же решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 13:46:00 |
|
||
|
Вписывание многоугольника
|
|||
|---|---|---|---|
|
#18+
miksoft Алексей Вк.У меня родилась новая формулировка задачи :-)А можно поинтересоваться практическим смыслом этой задачи? Алексей Вк.может быть немало случаев когда многоугольник и не впишешьПримерчик можно? что-то не могу такого представить... Поинтересоваться можно - мне нужно описать проекцию траектории движения тела в трехмерном пространстве по оси Z :-) Попросту говоря - есть траектория движения тела по оси Z на разных участках, у нас етсь проекция этого движения на плоскости под ним. Траектория состоит из прямолинейных участков. Причем траектория движения в области x-y не представляет из себя интереса. Нужно произвести визуализацию этого процесса. Для упрощения траектория движения замыкается и сворачивается в круг - проблема именно в этом моменте. Можно было бы траекторию описывать вдоль прямой, но это не то. Ведь процесс повторяющийся. Задача в общем-то научная, так что здесь свои особенности. И поэтому у меня есть проекции - длины прямолинейных участков на плоскости x-y. Теперь требуется их расположить в требуемом порядке и по возможности наиболее близко к круговой фрме для наилучшего обзора процесса. По полученным углам я уже без проблем построю траекторию в пространстве. А насчет примера невозможности - так я же его и нарисовал - в данном случае одна из сторон (наименьшая) не будет касаться окружности, если предположить, что радиус у нее жестко задан. Причем ни описывающей окружности (или же пострадают другие стороны), ни вписанной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 13:47:17 |
|
||
|
Вписывание многоугольника
|
|||
|---|---|---|---|
|
#18+
Жуть получается: sin(ai/2)=(li/2)/ri ... sum(ai)=2*pi Или sum( arcsin(li/(2*ri)) )=2*pi Зато хорошо подходит почти для любого многоугольника. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 13:51:47 |
|
||
|
Вписывание многоугольника
|
|||
|---|---|---|---|
|
#18+
miksoft Алексей Вк.У меня родилась новая формулировка задачи :-)Кстати, эта формулировка ничем не отличается от вписывания многоугольника в окружность и, соответственно, имеет то же решение.Это я не совсем прав. Формулировка будет идентичной, только если радиусы на рисунке делят стороны на две равные части. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 14:09:24 |
|
||
|
Вписывание многоугольника
|
|||
|---|---|---|---|
|
#18+
Алексей Вк.Нужно произвести визуализацию этого процесса.Так для визуализации не нужно особой точности. Все равно точнее, чем плюс-минус полпискселя не нарисуешь на экране. А приблизительно (3-4 значащих знака) можно и итерационно решить за вполне приемлемое время, имхо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 14:23:33 |
|
||
|
Вписывание многоугольника
|
|||
|---|---|---|---|
|
#18+
Алексей Вк.У меня родилась новая формулировка задачи :-) Можно поинтересоваться откуда они берутся=)) и предполагают ли они разумное обоснование зачем каждой стороне свою окружность? Кажется это самый неправдоподобный критерий, к тому же есть целые множества фигур, удовлетворяющих начальным условиям например все равносторонние четырёхугольники Первая часть задачи как раз определить правдоподобный критерий "стремления к окружности" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 16:37:08 |
|
||
|
Вписывание многоугольника
|
|||
|---|---|---|---|
|
#18+
Алексей Вк.Для упрощения траектория движения замыкается и сворачивается в круга окружность обязательно до полного замыкания доводить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 16:41:43 |
|
||
|
Вписывание многоугольника
|
|||
|---|---|---|---|
|
#18+
Я вот думаю - в процессе решения задачи последний отрезок можно конечно принудительно приводить к заданному значению. Но это тогда потребует тщательного подбора исходных данных для решения задачи - а это уже не совсем научный подход, во всяком случе не для целей визуализации. Насчет каждой стороны - а ИМХО будут проблемы со сторонами, котореы ну никак не захотят вписываться. Поэтому данный подход наверное наиболее корректный. Но - n+1 уравнений и 2n неизвестных. Где-то еще должны быть уравнения описывающие последний вариант. Вот только не могу понять что именно они должны связывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 17:24:34 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=34187443&tid=1343600]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
1477ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
87ms |
get tp. blocked users: |
2ms |
| others: | 210ms |
| total: | 1823ms |

| 0 / 0 |
