我正在尝试计算用红色标记的点(在圆圈和框角之间创建一条线)
这与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)
答案 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平面的其余区域(白色区域)。
如果该圆的中心在第一个区域内,则所请求的点是((圆)和(从(圆心)到(矩形的最近边界)的垂直线的交点) ))。否则,如果中心位于第二个区域内,则请求的点是矩形的最近角。
更新:另一个想法就是只考虑这6个点:4是((圆)和(圆心与矩形的4个角之间的线))的交点,另外2个是((圆)和(从(圆心)到(矩形的边界)的垂直线的交点)。)
答案 2 :(得分:0)
正如@WestLangley's answer正确指出的那样,一旦矩形上最近的点已知,就很容易找到 circle 的最近点。< / p>
然而,矩形上有两种不同类型的“最近点”:角落或侧面。下图说明了两种可能性:
要确定您拥有哪种情况,请将圆心显示在四条线中的每条线上(例如,如this Q&A中所示)。如果进行标准化投影,则值<0或> 1表示该段的最近点是拐角。然后,您将留下四个角和任何导致值介于0和1之间的投影作为候选者。
一旦找到哪个候选人最接近圆圈的中心,请应用接受的答案。