![]() |
|
![]() ![]() ![]() |
|
Чупакабро |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.2.2007 Репутация: нет Всего: 4 |
Помогите пожалуйста рассчитать координаты центра дуги заданного радиуса, скругляющей две другие пересекающиеся дуги.
Присоединённый файл ( Кол-во скачиваний: 20 ) ![]() --------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue. |
|||
|
||||
Pavia |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Советую поискать готовые работы. Я так думаю точно тут не рассчитаешь, а вот с некоторыми приближениями можно. Возьми императорскую формулу.
В точке соединения найди сосательные они дадут угол. На биссектрисе угла располагаем центр окружности. Даль предлагаю сделать так Если у нас угол 90 градусов то располагаем на расстояние от точки пересечения sqrt(2)*R Если угол 180 градусов то на R. Откуда для произвольного угла. y=kx+b b=2*sqrt(2)-1 k=(1-sqrt(2))/90 вдоль биссектрисы располагаешь на расстоянии y*R. Это для угла меньше 180. Если угол больше 180 то биссектриса должна направленна в другую сторону. |
|||
|
||||
AVA12 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 4.5.2008 Репутация: 1 Всего: 4 |
Имеем пересекающиеся окружности {x1, y1, r1} и {x2, y2, r2}, нужно скруглить их дугой радиуса r. Очевидно, что центр скругляющей дуги будет отстоять от каждой окружности на r. В случае, изображенном на картинке, очевидно, что центр дуги будет лежать внутри обеих окружностей. Т. е., искомый центр принадлежит окружностям {x1, y1, r1-r} и {x2, y2, r2-r}. Находим точки пересечения этих двух окружностей и выбираем ту, что ближе к точке пересечения исходных окружностей.
Дополнительная проблема: определить, где лежит центр скругляющей дуги относительно исходной окружности (внутри/снаружи). Если дуга 1 из точки пересечения "уходит" внутрь окружности 2, то центр скругляющей окружности лежит, соответственно, внутри окружности 2. Кстати, центр скругляющей дуги очень редко лежит на биссектрисе угла касательных. Это сообщение отредактировал(а) AVA12 - 14.9.2009, 19:06 |
|||
|
||||
Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 4 Всего: 27 |
||||
|
||||
~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
Можно попробовать так:
1. Определяем радиус кривизны в точке пересечения кривых (или рядом с ней). 2. Выбираем радиус сопряжения. 3. Далее по формуле (R-R1) и (R-R2) ищем центр сопряжения, где R1 и R2 - радиусы кривизны, а R - радиус сопряжения. 4. Собственно, строим внутренне сопряжение. Если кривые направлены в разные стороны, то используем смешанное сопряжение для внешнего сопряжения радиусом (R+R1), а для внутреннего - радиусом (R-R2). |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |