Point distance (Lua)
Перейти к навигации
Перейти к поиску
Содержание
Описание
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