Point distance (Lua)
Версия от 11:02, 28 августа 2019; Tatikoma (обсуждение | вклад)
Содержание
Описание
point_distance - возвращает расстояние между двумя точками в виде дробного числа, представленного строкой.
Синтаксис
Привязка к окну: нет.
Работа со свернутым окном: да.
Все параметры заключаются в скобки и разделяются запятыми.
point_distance (<x1>, <y1>, <x2>, <y2>)
Где:
x1, y1 - координаты x и y 1-й точки
x2, y2 - координаты x и y 2-й точки.
Примеры
--lua local x1 = 0 -- координаты 1-й точки local y1 = 0 local x2 = 3 -- координаты 2-й точки local y2 = 5 -- можно присвоить одной строкой -- local x1, y1, x2, y2 = 0, 0, 3, 5 -- функция возвращает расстояние между двумя точками function point_dist(a, b, a1, b1) return math.sqrt((a1-a)^2+(b1-b)^2) end local d = point_dist(x1, y1, x2, y2) -- получили расстояние log (d)
--lua
log ("clear") log ("mode compact") -- очистить лог, компактный режим
local persX = 10 -- координаты перса
local persY = 10
local a = {}
table.insert(a, {3, 2}) -- координаты X Y 1-й точки
table.insert(a, {16, 14}) -- координаты X Y 2-й точки
table.insert(a, {25, 31}) -- координаты X Y 3-й точки
local min = 9999999 -- тут будем подбирать расстояние
local minNum = -1 -- тут будем хранить номер строки массива с "оптимальными" координатами
local sizearray = #a -- число строк в массиве a
-- функция возвращает расстояние между двумя точками
function point_dist(a, b, a1, b1) return math.sqrt((a1-a)^2+(b1-b)^2) end
for i = 1, sizearray do
local x = a[i][1]
local y = a[i][2]
log ("x= " .. x, "y= " ..y) -- записали данные в лог (для справки)
local dist = point_dist(persX, persY, x, y) -- получили дробное число в виде строки
log ("Расстояние " .. dist) -- записали данные в лог (для справки)
if dist < min then
min = dist
minNum = i
end
end
if minNum > 0 then
log ("Ближайшая точка № " .. minNum, "расстояние = " .. min)
else
log ("Почему-то не удалось найти ближайшую точку")
end