Point distance (Lua)

Материал из UoPilot
Перейти к навигации Перейти к поиску

Описание

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

Смотрите также

Point_direction (Lua)