這是一個語言不可知的問題。給定與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
)
我的直覺告訴我,該解決方案應該是簡單的,但我似乎還沒有找到它。
不幸的是,它沒有。你的算法返回最近的* corner *的座標。周邊的最近點並不總是其中一個角落。 – kikito
我用另一種算法編輯了我的答案。我在http://www.lua.org/cgi-bin/demo上用一些值對它進行了測試,它似乎運行良好。 – Keeper
對不起,我不認爲它的作品。我得到非常隨機的值 - 有時甚至在矩形本身之外。 – kikito