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

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

пересечение окружностей

Ответ
Поиск в этой теме
Непрочитано 20.06.2007, 15:32 #1
пересечение окружностей
pele
 
ташкент
Регистрация: 19.06.2007
Сообщений: 3

В моей программе пересекаются две окружности. 1 окружность с центром (65.5, 0,0) радиусом 140.
2 окружность с центром (15,-375,0) радиусом 390. Как мне в программе найти точку пересечения этих окружностей друг с другом, чтобы затем соединить эти точки с точкой А (0,0,0)
Просмотров: 6412
 
Непрочитано 20.06.2007, 15:51
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450


Решай систему уравнний и получишь координаты точек пересечения, если они вообще могут быть.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.06.2007, 16:20
#3
PSW


 
Регистрация: 12.01.2006
Донецк
Сообщений: 30


; Пересечение 2-х окружностей заданных центром и радиусом, лежащих в одной плоскости
;-------------------------------------------------------------------------
;Параметры:
;P1, R1 - ценр и радиус 1-й окружности
;P2, R2 - ценр и радиус 2-й окружности
; Возвращает список точек пересечения окружностей или nil если не пересекаются
(defun 2d_inters_circle (P1 R1 P2 R2 / A A1 CosA D)
(setq D (distance P1 P2) A1 (angle P1 P2))
(cond
((equal D (+ R1 R2) $Dopusk) (list (polar P1 A1 R1) (polar P1 A1 R1)))
((> D (+ R1 R2)) nil)
(T
(setq CosA (/ (- (+ (* R1 R1) (* D D)) (* R2 R2)) 2.0 R1 D)
A (atan (sqrt (- 1 (* CosA CosA))) CosA)
)
(list (polar P1 (+ A1 A) R1) (polar P1 (- A1 A) R1))
)
)
)
PSW вне форума  
 
Непрочитано 20.06.2007, 16:29
#4
PSW


 
Регистрация: 12.01.2006
Донецк
Сообщений: 30


Автор выше приведенной функции : Григорий Черевков
http://www.elecran.com.ua/
===========================
Никакой ответственности за использование этих текстов и возможных Глобальные переменные
$Dopusk имеет значение 0.00001 – содержит величину погрешности используемую при различных сравнениях (например координат точек). Он просто необходим для борьбы с накопленной погрешностью при вычислениях.
Для инициализации переменных в стартовую часть Вашей программы нужно вставить строки
(setq $Dopusk 0.00001 )
PSW вне форума  
 
Непрочитано 20.06.2007, 17:23
#5
GWA18

Механизатор широкого профиля (б/у)
 
Регистрация: 23.12.2006
Черновцы
Сообщений: 2,933


Исходная система двух уравнений:
(X - X1) ^2 + (Y - Y1) ^2 = R1 ^2
(X - X2) ^2 + (Y - Y2) ^2 = R2 ^2

где X1;Y1 и X2;Y2 - координаты центра первой и второй окружности соотвественно
R1 и R2 - радиусы первой и второй окружностей

Решение системы уравнений дает координаты двух точек (если окружности пересекаются), одной точки (если окружности соприкасаются) либо, если система не имеет решения в действительных числах - окружности не пересекаются и не соприкасаются.
GWA18 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > пересечение окружностей