3d - 计算点和矩形框(最近点)之间的距离

标签 3d geometry distance

有没有一个简单的公式来计算这个?我一直在研究一些数学,但我只能找到一种方法来计算指向盒子中心的距离,而不是指向最近的点..有关于这个问题的一些资源吗?

最佳答案

这是一个避免所有案例逻辑的公式。 (我现在正好在 JS 中工作,所以这是一个 JS 实现)。让 rect = {max:{x:_, y:_}, min:{x:_, y:_}}p={x:_, y:_}

function distance(rect, p) {
  var dx = Math.max(rect.min.x - p.x, 0, p.x - rect.max.x);
  var dy = Math.max(rect.min.y - p.y, 0, p.y - rect.max.y);
  return Math.sqrt(dx*dx + dy*dy);
}

解释:
这将问题分解为计算 x 距离 dx和 y 距离 dy .然后它使用距离公式。

用于计算 dx ,这是它的工作原理。 ( dy 类似)

查看提供给 max 函数的元组:(min-p, 0, p-max) .让我们指定这个元组 (a,b,c) .

如果 p 是 min 的左边,那么我们有 p < min < max,这意味着元组将评估为 (+,0,-) ,因此 max 函数将正确返回 a = min - p .

如果 p 在 min 和 max 之间,那么我们有 min < p < max,这意味着元组将评估为 (-,0,-) .同样,max 函数将正确返回 b = 0 .

最后,如果 p 在 max 的右边,那么我们有, min < max < p,并且元组计算为 (-,0,+) . Math.max 再次正确返回 c = p - max .

所以结果证明所有的 case 逻辑都由 Math.max 处理,这导致了一个很好的 3 行、无控制流函数。

关于3d - 计算点和矩形框(最近点)之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5254838/

相关文章:

python - matplotlib 3d 曲面图不显示

css - 如何创建跨浏览器的 CSS 三 Angular 形?

java - 更快的距离测量

Python代码查找点和曲线之间的最小距离

java - 无法正确旋转 3D 点 A 到 B(在 X、Y、Z 轴上)

r - 如何在 R 中绘制 3D 条形图

java - 处理/Voronoi 图 3D - 简单框

python - 检查跨周期边界的欧氏距离

java - 找到一对 QuadCurve2D 的交点

sql - ORDER BY 到另一个值的距离