【发布时间】:2015-06-01 17:12:47
【问题描述】:
我有两个圆圈,它们完美地位于彼此的边界上。它们有位置 A 和 B(都是向量),以及半径 Ra 和 Rb。
现在我添加第三个半径为 Rc 的圆。如何找到三个圆尽可能靠近而不重叠的位置向量C?
我写这篇文章是为了我正在建立的网站的插图,所以效率加分:)
编辑: 当我最初发布时,我没有足够的代表来发布插图。 其中两个圆(B 和 C)将重叠,但与 A 相切。我想将 C 移出它与 B 共享的重叠区域,进入虚线。
编辑 2: 很抱歉,这太不清楚了,我创建了一个图表来试图解释我正在尝试做的事情。
我正在 Pixi.js 中创建一个插图,这是一个简单的 canvas/webGL 库。我正在使用 Vectors(通过 Victor.js)来定位圆圈并移动它们。
我随机生成一堆圆圈,然后我将最大的圆圈 (A) 放在容器的中间。之后,我想将 A 周围的所有圆圈聚集在一起,在发生碰撞时解决它们。这很重要,因为我将在用户点击或悬停单个圆圈时缩放它们。
对于没有碰撞的简单情况,矢量解决方案非常简单,如果可能,我想解决两个圆以相同方式碰撞的情况。
【问题讨论】:
-
问题描述不清楚。
-
C有2个答案,你不能有1个答案
-
圆圈是否相互接触?
-
任何答案都可以,但最接近的答案会更好
标签: algorithm math geometry computational-geometry