Сфера - Пересечение сферы: Вектор расстояния - PullRequest
0 голосов
/ 23 февраля 2011

Есть ли способ узнать расстояние пересечения между 2 сферами? Я понимаю, когда две сферы пересекаются, образуется круг пересечения. Но то, что я пытаюсь понять, это то, насколько мне нужно будет вытолкнуть круг 1 наружу, чтобы они не пересекались и находились в точке, где они просто касались друг друга. Единственные данные, которые у меня есть, это центры сфер и их соответствующие радиусы.

Спасибо

Ответы [ 3 ]

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

Определить две сферы с центрами в позиционных векторах a и b (т.е. a = a x i + a y j + a z k ).

Определение вектора c от центра сферы A к центру сферы B:

c = b - a

Его длина составляет| с |= | b - a |= sqrt ([b x - a x ] 2 + [b y - a y ] 2 + [b z - a z ] 2 )

Как сказал Махеш, расстояние между двумя сферамиэто:

| d |= | c |- r A - r B

Таким образом, вектор d от самой дальней точки сферы A до самой дальней точки B будет либоуказывая вдоль c (когда сферы еще не пересекаются) или в противоположном направлении (когда сфера пересекается).

Чтобы переместить одну сферу, чтобы она не пересекалась, вам нужно переместить ее на d .Поскольку это c , мы можем просто умножить c на коэффициент, чтобы получить компоненты d :

f = (| d | / | c |) d = f * c

Например, в направлении x:

d x = f * c x

Итак, я бы сказал, попробуйте следующее:

  • Вычислите компоненты смещения c из векторов положения A и B.
  • Вычислить длину c из его составляющих
  • Вычислить длину d из длины c и радиусов
  • Вычислить коэффициент f между c и d
  • Вычислить компоненты d путем масштабирования компонентов c по коэффициенту f.

Вы можете проверить, пересекаются ли сферы, проверив знак f: если он отрицательный, то сферы пересекаются.Затем вы можете либо переместить A или B на d , либо на обе части на d , чтобы они больше не пересекались.

1 голос
/ 23 февраля 2011

( radius1 + radius2 ) - ( Current distance between the two centers ) - это расстояние, которое должно пройти любая сфера, чтобы точно коснуться друг друга.(Предполагается, что сферы в настоящее время пересекаются)

0 голосов
/ 23 февраля 2011

Если вы знаете, что две сферы перекрываются, то вы можете вычислить расстояние между их центрами. Затем можно сложить радиусы двух сфер, чтобы получить минимальные расстояния, на которых сферы должны быть друг от друга, чтобы они касались только в одной точке. Разница между ними (сумма радиусов минус расстояние между центрами) должна представлять собой величину, которую сферы должны раздвинуть друг от друга, чтобы они касались только в одной точке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...