有没有办法找出2个球体之间的交叉距离?我理解当两个球体相交时形成的交叉圆。但是我想要计算的是,我需要多少才能将圆圈1推到外面,这样它们就不会相交,而是处于彼此接触的位置。我拥有的唯一数据是球体的中心和它们各自的半径。
谢谢
答案 0 :(得分:2)
定义两个球体,其中心位于向量 a 和 b (即 a = a x i + a y j + a z k )。
从球体A的中心到球体B的中心定义矢量 c :
c = b - a
其长度为| c | = | b - a |
= sqrt([b x - a x ] 2 + [b y - a y < / sub>] 2 + [b z - a z ] 2 )
正如马赫什所说,两个球体之间的距离是:
| d | = | c | - r A - r B
因此,从球体A的最远点到B的最远点的向量 d 将指向 c (当球体尚未交叉时)或在相反的方向(当球体相交时)。
要移动一个球体以使它们不相交,您需要通过 d 移动它。由于这是 c ,我们可以将 c 乘以一个因子来得到 d 的成分:
f =(| d | / | c |)
d = f * c
例如,在x方向:
d x = f * c x
所以我想说试试这个:
您可以通过测试f上的符号来测试球体是否相交:如果它是负的,则球体相交。然后,您可以通过 d 移动A或B,或者通过 d 的某个部分移动它们,以便它们不再相交。
答案 1 :(得分:1)
( radius1 + radius2 ) - ( Current distance between the two centers )
是一个球体移动到彼此之间的距离。 (假设球体目前相交)
答案 2 :(得分:0)
如果您知道两个球体重叠,那么您可以计算它们的中心之间的距离。然后,您可以将两个球体的半径相加,以获得球体必须相互之间的最小距离,使得它们仅在一个点处接触。两者之间的差异(半径之和减去中心之间的距离)应该是球体需要彼此分开的量,以便它们仅在某一点接触。