【发布时间】:2021-06-28 17:36:32
【问题描述】:
我正在尝试使用this answer 来检测两个圆之间是否存在交集。答案是:The above solution should work even for the "one circle inside the other" case.
但是,当我尝试使用以下输入时:
x0: 296
y0: 728
r0: 14
x1: 299
y1: 731
r1: 7
在视觉上看起来像这样:
然后它似乎不起作用。也就是说,下面的等式不成立:
(R0 - R1)^2 <= (x0 - x1)^2 + (y0 - y1)^2 <= (R0 + R1)^2
49 <= 18 <= 441
也就是说,当它们明显相交时,函数将返回 false(它们不相交)。
是我做错了什么,还是公式不正确?
【问题讨论】:
-
所以我需要做的就是删除等式的左边,然后它会起作用吗?也就是改用
(x0 - x1)^2 + (y0 - y1)^2 <= (R0 + R1)^2? -
哦,他们删除了他们的评论。
-
^^ 是的。只检查 (r0 + r1),(r0 - r1) 部分允许嵌套的圆圈不相交 - 所以删除它。
标签: javascript math geometry collision intersection