diff --git a/doc/en/scripting/builtins/libvecn.md b/doc/en/scripting/builtins/libvecn.md index 22552eb7..36987dfb 100644 --- a/doc/en/scripting/builtins/libvecn.md +++ b/doc/en/scripting/builtins/libvecn.md @@ -100,6 +100,13 @@ vecn.length(a: vector) ``` +#### Distance - *vecn.distance(...)* + +```lua +-- returns the distance between two vectors +vecn.distance(a: vector, b: vector) +``` + #### Absolute value - *vecn.abs(...)* ```lua @@ -188,6 +195,10 @@ print("mul: " .. vec3.tostring(result_mul)) -- {10, 40, 80} local result_mul_scal = vec3.mul(v1_3d, scal) print("mul_scal: " .. vec3.tostring(result_mul_scal)) -- {6, 12, 12} +-- calculating distance between vectors +local result_distance = vec3.distance(v1_3d, v2_3d) +print("distance: " .. result_distance) -- 43 + -- vector normalization local result_norm = vec3.normalize(v1_3d) print("norm: " .. vec3.tostring(result_norm)) -- {0.333, 0.667, 0.667} diff --git a/doc/ru/scripting/builtins/libvecn.md b/doc/ru/scripting/builtins/libvecn.md index 44cfa994..939e2da1 100644 --- a/doc/ru/scripting/builtins/libvecn.md +++ b/doc/ru/scripting/builtins/libvecn.md @@ -100,6 +100,13 @@ vecn.length(a: vector) ``` +#### Дистанция - *vecn.distance(...)* + +```lua +-- возвращает расстояние между двумя векторами +vecn.distance(a: vector, b: vector) +``` + #### Абсолютное значение - *vecn.abs(...)* ```lua @@ -192,6 +199,10 @@ print("mul_scal: " .. vec3.tostring(result_mul_scal)) -- {6, 12, 12} local result_norm = vec3.normalize(v1_3d) print("norm: " .. vec3.tostring(result_norm)) -- {0.333, 0.667, 0.667} +-- дистанция между векторами +local result_distance = vec3.distance(v1_3d, v2_3d) +print("distance: " .. result_distance) -- 43 + -- длина вектора local result_len = vec3.length(v1_3d) print("len: " .. result_len) -- 3 diff --git a/src/logic/scripting/lua/libs/libvecn.cpp b/src/logic/scripting/lua/libs/libvecn.cpp index 724885fe..000a4367 100644 --- a/src/logic/scripting/lua/libs/libvecn.cpp +++ b/src/logic/scripting/lua/libs/libvecn.cpp @@ -74,6 +74,14 @@ static int l_scalar_op(lua::State* L) { return lua::pushnumber(L, func(vec)); } +template +static int l_distance(lua::State* L) { + lua::check_argc(L, 2); + auto a = lua::tovec(L, 1); + auto b = lua::tovec(L, 2); + return lua::pushnumber(L,glm::distance(a, b)); +} + template static int l_pow(lua::State* L) { uint argc = lua::check_argc(L, 2, 3); @@ -182,6 +190,7 @@ const luaL_Reg vec2lib[] = { {"sub", lua::wrap>}, {"mul", lua::wrap>}, {"div", lua::wrap>}, + {"distance", lua::wrap>}, {"normalize", lua::wrap>}, {"length", lua::wrap>}, {"tostring", lua::wrap>}, @@ -198,6 +207,7 @@ const luaL_Reg vec3lib[] = { {"sub", lua::wrap>}, {"mul", lua::wrap>}, {"div", lua::wrap>}, + {"distance", lua::wrap>}, {"normalize", lua::wrap>}, {"length", lua::wrap>}, {"tostring", lua::wrap>}, @@ -214,6 +224,7 @@ const luaL_Reg vec4lib[] = { {"sub", lua::wrap>}, {"mul", lua::wrap>}, {"div", lua::wrap>}, + {"distance", lua::wrap>}, {"normalize", lua::wrap>}, {"length", lua::wrap>}, {"tostring", lua::wrap>},