Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скругление двух дуг, Координаты скругляющей дуги 
:(
    Опции темы
Чупакабро
Дата 14.9.2009, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



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

Присоединённый файл ( Кол-во скачиваний: 20 )
Присоединённый файл  ______________.JPG 6,89 Kb
--------------------
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.
PM MAIL   Вверх
Pavia
Дата 14.9.2009, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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 то биссектриса должна направленна в другую сторону.

PM MAIL   Вверх
AVA12
Дата 14.9.2009, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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
PM ICQ Jabber   Вверх
Bitter
Дата 15.9.2009, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

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



Прошу прощения за оффтоп, но 

Цитата(Pavia @  14.9.2009,  18:00 Найти цитируемый пост)
В точке соединения найди сосательные


меня порвало сразу  smile  smile . +1

PM MAIL ICQ Skype   Вверх
~FoX~
Дата 15.9.2009, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


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

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



Можно попробовать так:
1. Определяем радиус кривизны в точке пересечения кривых (или рядом с ней).
2. Выбираем радиус сопряжения.
3. Далее по формуле (R-R1) и (R-R2) ищем центр сопряжения, где R1 и R2 - радиусы кривизны, а R - радиус сопряжения.
4. Собственно, строим внутренне сопряжение.

Если кривые направлены в разные стороны, то используем смешанное сопряжение для внешнего сопряжения радиусом (R+R1), а для внутреннего - радиусом (R-R2).


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

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


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

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


 




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


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

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