gpt4 book ai didi

math - 如何在矩形的周长中找到与给定点最近的点?

转载 作者:行者123 更新时间:2023-12-04 13:19:33 25 4
gpt4 key购买 nike

这是一个与语言无关的问题。给定一个矩形的尺寸 l,t,w,h (左、上、宽、高)和一个点 x,y ,如何找到矩形周长上到该点最近的点?

我试图用 Lua 解决它,但任何其他语言都可以。到目前为止,这是我最大的努力:

local function nearest(x, a, b)
if a <= x and x <= b then
return x
elseif math.abs(a - x) < math.abs(b - x) then
return a
else
return b
end
end

local function getNearestPointInPerimeter(l,t,w,h, x,y)
return nearest(x, l, l+w), nearest(y, t, t+h)
end

这适用于周界外的点或周界本身。但是对于边界内的点,它失败了(它只返回 x,y )

我的直觉告诉我解决方案应该很简单,但我似乎没有找到。

最佳答案

这次我试图捕捉点到矩形任何一侧的最小距离。

local abs, min, max = math.abs, math.min, math.max

local function clamp(x, lower, upper)
return max(lower, min(upper, x))
end

local function getNearestPointInPerimeter(l,t,w,h, x,y)
local r, b = l+w, t+h

x, y = clamp(x, l, r), clamp(y, t, b)

local dl, dr, dt, db = abs(x-l), abs(x-r), abs(y-t), abs(y-b)
local m = min(dl, dr, dt, db)

if m == dt then return x, t end
if m == db then return x, b end
if m == dl then return l, y end
return r, y
end

关于math - 如何在矩形的周长中找到与给定点最近的点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20453545/

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