Это вопрос, не зависящий от языка. Учитывая размеры прямоугольника с 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
)
Моя интуиция подсказывает мне, что решение должно быть простым, но я, кажется, не нахожу его.