Point distance (Lua): различия между версиями

Материал из UoPilot
Перейти к навигации Перейти к поиску
(Новая страница: «== Описание == '''point_distance''' - возвращает расстояние между двумя точками в виде дробного числ...»)
 
 
Строка 4: Строка 4:
 
== Синтаксис ==
 
== Синтаксис ==
 
Привязка к окну: нет.
 
Привязка к окну: нет.
<br>Работа со свернутым окном: да.
+
<br>Работа со свернутым окном: да.
&lt;br>Все параметры заключаются в скобки и разделяются запятыми.
+
<br>Все параметры заключаются в скобки и разделяются запятыми.
  point_distance (&lt;x1>, &lt;y1>, &lt;x2>, &lt;y2>)
+
  point_distance (<x1>, <y1>, <x2>, <y2>)
 
Где:
 
Где:
&lt;br>'''x1, y1''' - координаты x и y 1-й точки
+
<br>'''x1, y1''' - координаты x и y 1-й точки
&lt;br>'''x2, y2''' - координаты x и y 2-й точки.
+
<br>'''x2, y2''' - координаты x и y 2-й точки.
  
 
== Примеры ==
 
== Примеры ==
Строка 50: Строка 50:
 
     log ("Расстояние " .. dist)              -- записали данные в лог (для справки)
 
     log ("Расстояние " .. dist)              -- записали данные в лог (для справки)
 
   
 
   
     if dist &lt; min then
+
     if dist < min then
 
         min = dist
 
         min = dist
 
         minNum = i
 
         minNum = i

Текущая версия на 11:02, 28 августа 2019

Описание

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)