| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Построение касательной к двум окружностям

Построение касательной к двум окружностям

Ответ
Поиск в этой теме
Непрочитано 22.08.2006, 04:39
Построение касательной к двум окружностям
Никита В.
 
CAD Operator
 
Samara-Gorodok
Регистрация: 01.11.2005
Сообщений: 389

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

Метод последовательных приближений не предлагать.

П.С. Задача должна быть решена средствами акада в т.ч. и посредством лиспа.
__________________
АвтоКАД это не только электронный кульман,
Но и великий ГЕМОР
Просмотров: 52938
 
Непрочитано 16.09.2019, 12:33
| 1 #61
valerik88


 
Регистрация: 02.07.2016
Сообщений: 195


Цитата:
Сообщение от zenon Посмотреть сообщение
это не касательные
точно... двойка мне по геометрии

Разрешите исправиться!
Миниатюры
Нажмите на изображение для увеличения
Название: 1.gif
Просмотров: 25
Размер:	2.13 Мб
ID:	217907  

Последний раз редактировалось valerik88, 16.09.2019 в 12:44.
valerik88 вне форума  
 
Непрочитано 16.09.2019, 12:52
#62
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,064


для чего это всё?
Решение в #2 https://forum.dwg.ru/showpost.php?p=88441&postcount=2
справедливо для примитивов _line, _xline, _ray
Хмурый вне форума  
 
Непрочитано 16.09.2019, 13:00
#63
valerik88


 
Регистрация: 02.07.2016
Сообщений: 195


Хмурый, дык, этим способом шляпа какая-то выходит... отрезки не ровные, не точные получаются.
Миниатюры
Нажмите на изображение для увеличения
Название: 1.gif
Просмотров: 15
Размер:	1.10 Мб
ID:	217908  
valerik88 вне форума  
 
Непрочитано 16.09.2019, 13:13
#64
MaksN


 
Регистрация: 14.09.2019
Сообщений: 7


Цитата:
Сообщение от No M.P. Посмотреть сообщение
Дотяните ручками (grips) до исходного значения. Касательная, прилипшая к окружностям будет менять угол .


Цитата:
Сообщение от koMon Посмотреть сообщение
на радиус также можно поставить параметрический ограничитель


Цитата:
Сообщение от gumel Посмотреть сообщение
Да ладно! Как так то?
Автокад, используя штатные привязки, строит эту касательную весьма точно! Откуда у вас столько итераций?
Речь идет об одной линии как касательная сразу двум окружностям.
MaksN вне форума  
 
Непрочитано 16.09.2019, 14:55
| 2 #65
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,064


valerik88, а я что-то про полилинию написал?
Это относится к отрезку, прямой и лучу, но не к полилинии.
PS 1. команда _line
2. На запрос ввести точку- Включаем привязку "касательная"
3. указываем на одну из окружностей
4. На запрос ввести вторую точку- Включаем привязку "касательная"
5. указываем на вторую окружность
ВСЁ

Об этом и написано в #2 тринадцать лет назад

Цитата:
_line
Specify first point: _tan to
Specify next point or [Undo]: _tan to
Specify next point or [Undo]:
Хмурый вне форума  
 
Непрочитано 16.09.2019, 15:08
#66
koMon


 
Регистрация: 26.09.2017
Сообщений: 407


Цитата:
Сообщение от MaksN Посмотреть сообщение
Речь идет об одной линии как касательная сразу двум окружностям.
по-простому построение 4-х касательных для двух окружностей, которые могут иметь касательные
Код:
[Выделить все]
 
(setq 2_circles_sset (ssget '((0 . "CIRCLE"))))
(if (< (vla-get-radius (setq major_circle_object (vlax-ename->vla-object (ssname 2_circles_sset 0))))
	   (vla-get-radius (setq minor_circle_object (vlax-ename->vla-object (ssname 2_circles_sset 1))))
	)
	(setq major_circle_object (vlax-ename->vla-object (ssname 2_circles_sset 1))
		  minor_circle_object (vlax-ename->vla-object (ssname 2_circles_sset 0))
	)
)
(setq difference_radius (- (setq major_radius (vla-get-radius major_circle_object))
						   (setq minor_radius (vla-get-radius minor_circle_object))
						)
	  summary_radius (+ (setq major_radius (vla-get-radius major_circle_object))
						(setq minor_radius (vla-get-radius minor_circle_object))
					 )
 	  centers_distance (distance (vlax-get major_circle_object 'center) (vlax-get minor_circle_object 'center))
 	  sin_of_tangent_angle_1 (/ difference_radius centers_distance)
 	  cos_of_tangent_angle_1 (sqrt (- 1.0 (* sin_of_tangent_angle_1 sin_of_tangent_angle_1)))
 	  tangent_angle_1 (atan (/ sin_of_tangent_angle_1 cos_of_tangent_angle_1))
 	  major_circle_tangent_point_1 (polar (vlax-get major_circle_object 'center)
	  									  (setq minus_normal_tangent_angle_1 (- (angle (vlax-get minor_circle_object 'center)
	  									  	 	    					 	  		   (vlax-get major_circle_object 'center)
										  	 							        )
										  	 							        (- pi (- (* 0.5 pi) tangent_angle_1))
																	  	     )
										  )
										  major_radius
								   )
 	  minor_circle_tangent_point_1 (polar (vlax-get minor_circle_object 'center)
	  									  minus_normal_tangent_angle_1
										  minor_radius
								   )
 	  major_circle_tangent_point_2 (polar (vlax-get major_circle_object 'center)
	  									  (setq plus_normal_tangent_angle_1 (+ (angle (vlax-get minor_circle_object 'center)
	  									  	 	    					 	  		  (vlax-get major_circle_object 'center)
										  	 							       )
										  	 							       (- pi (- (* 0.5 pi) tangent_angle_1))
																	  	    )
										  )
										  major_radius
								   )
 	  minor_circle_tangent_point_2 (polar (vlax-get minor_circle_object 'center)
	  									  plus_normal_tangent_angle_1
										  minor_radius
								   )
 	  sin_of_tangent_angle_2 (/ summary_radius centers_distance)
 	  cos_of_tangent_angle_2 (sqrt (- 1.0 (* sin_of_tangent_angle_2 sin_of_tangent_angle_2)))
 	  tangent_angle_2 (atan (/ sin_of_tangent_angle_2 cos_of_tangent_angle_2))
 	  major_circle_tangent_point_3 (polar (vlax-get major_circle_object 'center)
	  									  (setq minus_normal_tangent_angle_2 (- (angle (vlax-get minor_circle_object 'center)
	  									  	 	    					 	  		   (vlax-get major_circle_object 'center)
										  	 							        )
										  	 							        (- pi (- (* 0.5 pi) tangent_angle_2))
																	  	     )
										  )
										  major_radius
								   )
 	  minor_circle_tangent_point_3 (polar (vlax-get minor_circle_object 'center)
	  									  (+ minus_normal_tangent_angle_2 pi)
										  minor_radius
								   )
 	  major_circle_tangent_point_4 (polar (vlax-get major_circle_object 'center)
	  									  (setq plus_normal_tangent_angle_2 (+ (angle (vlax-get minor_circle_object 'center)
	  									  	 	    					 	  		  (vlax-get major_circle_object 'center)
										  	 							       )
										  	 							       (- pi (- (* 0.5 pi) tangent_angle_2))
																	  	    )
										  )
										  major_radius
								   )
 	  minor_circle_tangent_point_4 (polar (vlax-get minor_circle_object 'center)
	  									  (- plus_normal_tangent_angle_2 pi)
										  minor_radius
								   )
)
(command "_line" "_non" major_circle_tangent_point_1 "_non" minor_circle_tangent_point_1 "")
(command "_line" "_non" major_circle_tangent_point_2 "_non" minor_circle_tangent_point_2 "")
(command "_line" "_non" major_circle_tangent_point_3 "_non" minor_circle_tangent_point_3 "")
(command "_line" "_non" major_circle_tangent_point_4 "_non" minor_circle_tangent_point_4 "")
koMon на форуме  
 
Непрочитано 16.09.2019, 15:16
| 1 #67
valerik88


 
Регистрация: 02.07.2016
Сообщений: 195


Хмурый, действительно с отрезком всё получается. Не думал, что отрезок с полилинией будет по разному себя вести.
valerik88 вне форума  
 
Непрочитано 16.09.2019, 15:50
| 1 #68
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,400
<phrase 1=


Цитата:
Сообщение от valerik88 Посмотреть сообщение
Не думал, что отрезок с полилинией будет по разному себя вести.
Хм, прикольно.
Судя по всему при использовании полилинии AutoCAD строит касательную к окружности как будто продолжение от последней точки любого построенного объекта.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 16.09.2019, 16:07
#69
MaksN


 
Регистрация: 14.09.2019
Сообщений: 7


Цитата:
Сообщение от Хмурый Посмотреть сообщение
а я что-то про полилинию написал?
Это относится к отрезку, прямой и лучу, но не к полилинии.
PS 1. команда _line
2. На запрос ввести точку- Включаем привязку "касательная"
3. указываем на одну из окружностей
4. На запрос ввести вторую точку- Включаем привязку "касательная"
5. указываем на вторую окружность
ВСЁ

Цитата:
Сообщение от valerik88 Посмотреть сообщение
Хмурый, действительно с отрезком всё получается. Не думал, что отрезок с полилинией будет по разному себя вести.
Действительно так
MaksN вне форума  
 
Непрочитано 17.09.2019, 21:14
#70
VladiT

Архитектор, 3д-виз.
 
Регистрация: 26.07.2019
Москва
Сообщений: 143


Что-то меня заклинило при анализе этой темы. Прошу прощения, но мне кажется очевидным, что касательные могут быть только к окружностям, расположенным в одной плоскости.
А если они лежат в разных плоскостях (как указано в первоначальном задании) , то касательной будет любая линия, просто имеющая общую точку с каждой окружностью. Ведь что есть касательная в геометрическом смысле? Это линия, имеющая только одну точку касания с окружностью. Если линия и окружность расположены в одной плоскости, а линия исходит из ранее определенной точки, то касание ее к окружности возможно только в одной единственной точке, и это дает известная привязка Автокада.
Но если линия и окружность в разных плоскостях, то линия может коснуться окружности в любой точке, и все они будут "касательными".

Собственно, достаточно провести в 3д-виде линию между такими окружностями с помощью привязки "NEAREST" - и это будет касательная к обоим окружностям. Причем, таких "касательных" можно создать бесконечно много.

Другое дело, если требуется чтобы касательная в результате была создана в какой-то указанной ранее проекции просмотра обоих окружностей, находящихся в разных плоскостях. Тогда задача сводится к проведению касательной к проекции этих окружностей, из которых как минимум одна неизбежно будет тогда уже эллипсом. .Но в начальном примере вроде-бы речь не об этом.
VladiT вне форума  
 
Непрочитано 18.09.2019, 14:54
#71
koMon


 
Регистрация: 26.09.2017
Сообщений: 407


Цитата:
Сообщение от VladiT Посмотреть сообщение
что касательные могут быть только к окружностям, расположенным в одной плоскости
кстати да! если это окружности в пространстве, то линией, касающейся обеих окружностей (не касательной), может быть любая прямая лежащая на замкнутой криволинейной поверхности соединяющей эти окружности и имеющая с ней общую прямю линию соприкосновения.
koMon на форуме  
 
Непрочитано 18.09.2019, 15:04
#72
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,064


VladiT, koMon, об этом тоже сказано в #2
Хмурый вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Построение касательной к двум окружностям

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск