gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 09:00:57 24 4
gpt4 key购买 nike

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

最佳答案

这是一个避免所有案例逻辑的公式。 (我现在正好在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com