计算圆上的最近点

时间:2018-06-11 01:43:23

标签: math three.js

我正在尝试计算用红色标记的点(在圆圈和框角之间创建一条线)

这与A JavaScript function that returns the x,y points of intersection between two circles?

类似

然而,这是2个圈子。

我知道两者的位置,圆半径等,如何计算圆上该角的最近点?

let nameArray = ["a", "b"]
let valueArray = ["banana", "food"]

let merged = nameArray.map((item, idx) => {
  return { "name": item, "value": valueArray[idx] }
})

console.log(merged)

circle

3 个答案:

答案 0 :(得分:3)

在three.js中,您可以像这样计算所需的点:

var vector = new THREE.Vector3(); // or Vector2

vector.copy( corner ).sub( center ).setLength( radius ).add( center );

three.js r.93

答案 1 :(得分:1)

核心问题是,如何在圆上找到距离给定矩形最短距离的点。

经过我的思考,我们可以将整个2D平面分成两个区域,一个是矩形可以通过其边界方向平移移动到的区域,另一个是矩形无法移动的位置那样。第一个区域描绘的是交叉道路(彩色区域),第二个区域是2D平面的其余区域(白色区域)。

The two areas

如果该圆的中心在第一个区域内,则所请求的点是((圆)和(从(圆心)到(矩形的最近边界)的垂直线的交点) ))。否则,如果中心位于第二个区域内,则请求的点是矩形的最近角。

更新:另一个想法就是只考虑这6个点:4是((圆)和(圆心与矩形的4个角之间的线))的交点,另外2个是((圆)和(从(圆心)到(矩形的边界)的垂直线的交点)。)

答案 2 :(得分:0)

正如@WestLangley's answer正确指出的那样,一旦矩形上最近的点已知,就很容易找到 circle 的最近点。< / p>

然而,矩形上有两种不同类型的“最近点”:角落或侧面。下图说明了两种可能性:

enter image description here

要确定您拥有哪种情况,请将圆心显示在四条线中的每条线上(例如,如this Q&A中所示)。如果进行标准化投影,则值<0或> 1表示该段的最近点是拐角。然后,您将留下四个角和任何导致值介于0和1之间的投影作为候选者。

一旦找到哪个候选人最接近圆圈的中心,请应用接受的答案。