Нахождение точек пересечения, когда две сферы пересекаются - PullRequest
1 голос
/ 19 февраля 2011

У меня есть центр (xyz - в трехмерном пространстве) и радиус двух сфер A и B.

Теперь я должен выяснить точку или более 1 точки, где эти сферы встречаются. Довольно легко выяснить, сталкиваются ли две сферы или нет, но как мне определить точки пересечения двух сфер?

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 19 февраля 2011

Кривая, где они пересекаются, представляет собой круг. Уравнение для радиуса круга немного сложнее, но показано здесь , в уравнении. 8, и это расстояние круга от центра одной из сфер показано в уравнении. 5.

2 голосов
/ 19 февраля 2011

Если радиус меньшей сферы равен A, а большой - B, а их центры находятся на расстоянии D единиц друг от друга, то точки пересечения находятся на окружности радиуса r с центром в точке, расположенной непосредственно между центрами двух сферы, то есть у единиц от центра большей сферы, и х единиц от центра другой, где

y = 1/2 (D + (B ^ 2 - A ^ 2) / D)

и

x = 1/2 (D - (B ^ 2 - A ^ 2) / D)

с радиусом

r = B ^ 2 - x ^ 2 = A ^ 2 - y ^ 2

Если вам нужно уравнение для этого круга, лучше всего представить его в виде набора из трех параметризованных уравнений, где координаты x, y и z выражены в виде функции некоторого t, который представляет собой прохождение радиуса вектора один раз по кругу, от нуля до 2PI ...

Чтобы построить эти уравнения, подумайте о том, чтобы выразить точку, которая является радиусом r от центра, на 2D-плоскости, которая перпендикулярна линии между двумя сферами.

Проверьте эту ссылку , чтобы узнать, как это сделать ..

Вывод выглядит следующим образом: проведите линию между центрами двух сфер. Маркируйте это как D
Обозначьте точку на этой линии как центр круга окончательного решения, обозначьте ее точкой O
Пометьте меньшую часть D как x, а большую часть как y
нарисуйте линию от O перпендикулярно к D, для некоторого расстояния r, чтобы представить радиус круга решения
Пометьте конец этого радиуса как Q Теперь нарисуйте B между центром большей сферы и Q и A от центра меньшей сферы и Q

.

Из Пифагора:
B ^ 2 = y ^ 2 + r ^ 2 и A ^ 2 = x ^ 2 + r ^ 2
итак, после исключения г и немного алгебры,
у-х = (В ^ 2 - А * 2) / (х + у)
Но х + у = D так,

y-x = (B ^ 2 - A * 2) / D

Добавление уравнения x + y = D к приведенному выше исключает x, давая

2y = D + (B ^ 2 - A * 2) / D
или

y = 1/2 (  D  + (B^2 - A*2) / D  )
...