add vecn.distance function
This commit is contained in:
parent
89c07cbf75
commit
f2aa77db8b
@ -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(...)*
|
#### Absolute value - *vecn.abs(...)*
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
@ -188,6 +195,10 @@ print("mul: " .. vec3.tostring(result_mul)) -- {10, 40, 80}
|
|||||||
local result_mul_scal = vec3.mul(v1_3d, scal)
|
local result_mul_scal = vec3.mul(v1_3d, scal)
|
||||||
print("mul_scal: " .. vec3.tostring(result_mul_scal)) -- {6, 12, 12}
|
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
|
-- vector normalization
|
||||||
local result_norm = vec3.normalize(v1_3d)
|
local result_norm = vec3.normalize(v1_3d)
|
||||||
print("norm: " .. vec3.tostring(result_norm)) -- {0.333, 0.667, 0.667}
|
print("norm: " .. vec3.tostring(result_norm)) -- {0.333, 0.667, 0.667}
|
||||||
|
|||||||
@ -100,6 +100,13 @@ vecn.length(a: vector)
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Дистанция - *vecn.distance(...)*
|
||||||
|
|
||||||
|
```lua
|
||||||
|
-- возвращает расстояние между двумя векторами
|
||||||
|
vecn.distance(a: vector, b: vector)
|
||||||
|
```
|
||||||
|
|
||||||
#### Абсолютное значение - *vecn.abs(...)*
|
#### Абсолютное значение - *vecn.abs(...)*
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
@ -192,6 +199,10 @@ print("mul_scal: " .. vec3.tostring(result_mul_scal)) -- {6, 12, 12}
|
|||||||
local result_norm = vec3.normalize(v1_3d)
|
local result_norm = vec3.normalize(v1_3d)
|
||||||
print("norm: " .. vec3.tostring(result_norm)) -- {0.333, 0.667, 0.667}
|
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)
|
local result_len = vec3.length(v1_3d)
|
||||||
print("len: " .. result_len) -- 3
|
print("len: " .. result_len) -- 3
|
||||||
|
|||||||
@ -74,6 +74,14 @@ static int l_scalar_op(lua::State* L) {
|
|||||||
return lua::pushnumber(L, func(vec));
|
return lua::pushnumber(L, func(vec));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <int n>
|
||||||
|
static int l_distance(lua::State* L) {
|
||||||
|
lua::check_argc(L, 2);
|
||||||
|
auto a = lua::tovec<n>(L, 1);
|
||||||
|
auto b = lua::tovec<n>(L, 2);
|
||||||
|
return lua::pushnumber(L,glm::distance(a, b));
|
||||||
|
}
|
||||||
|
|
||||||
template <int n>
|
template <int n>
|
||||||
static int l_pow(lua::State* L) {
|
static int l_pow(lua::State* L) {
|
||||||
uint argc = lua::check_argc(L, 2, 3);
|
uint argc = lua::check_argc(L, 2, 3);
|
||||||
@ -182,6 +190,7 @@ const luaL_Reg vec2lib[] = {
|
|||||||
{"sub", lua::wrap<l_binop<2, std::minus>>},
|
{"sub", lua::wrap<l_binop<2, std::minus>>},
|
||||||
{"mul", lua::wrap<l_binop<2, std::multiplies>>},
|
{"mul", lua::wrap<l_binop<2, std::multiplies>>},
|
||||||
{"div", lua::wrap<l_binop<2, std::divides>>},
|
{"div", lua::wrap<l_binop<2, std::divides>>},
|
||||||
|
{"distance", lua::wrap<l_distance<2>>},
|
||||||
{"normalize", lua::wrap<l_unaryop<2, glm::normalize>>},
|
{"normalize", lua::wrap<l_unaryop<2, glm::normalize>>},
|
||||||
{"length", lua::wrap<l_scalar_op<2, glm::length>>},
|
{"length", lua::wrap<l_scalar_op<2, glm::length>>},
|
||||||
{"tostring", lua::wrap<l_tostring<2>>},
|
{"tostring", lua::wrap<l_tostring<2>>},
|
||||||
@ -198,6 +207,7 @@ const luaL_Reg vec3lib[] = {
|
|||||||
{"sub", lua::wrap<l_binop<3, std::minus>>},
|
{"sub", lua::wrap<l_binop<3, std::minus>>},
|
||||||
{"mul", lua::wrap<l_binop<3, std::multiplies>>},
|
{"mul", lua::wrap<l_binop<3, std::multiplies>>},
|
||||||
{"div", lua::wrap<l_binop<3, std::divides>>},
|
{"div", lua::wrap<l_binop<3, std::divides>>},
|
||||||
|
{"distance", lua::wrap<l_distance<3>>},
|
||||||
{"normalize", lua::wrap<l_unaryop<3, glm::normalize>>},
|
{"normalize", lua::wrap<l_unaryop<3, glm::normalize>>},
|
||||||
{"length", lua::wrap<l_scalar_op<3, glm::length>>},
|
{"length", lua::wrap<l_scalar_op<3, glm::length>>},
|
||||||
{"tostring", lua::wrap<l_tostring<3>>},
|
{"tostring", lua::wrap<l_tostring<3>>},
|
||||||
@ -214,6 +224,7 @@ const luaL_Reg vec4lib[] = {
|
|||||||
{"sub", lua::wrap<l_binop<4, std::minus>>},
|
{"sub", lua::wrap<l_binop<4, std::minus>>},
|
||||||
{"mul", lua::wrap<l_binop<4, std::multiplies>>},
|
{"mul", lua::wrap<l_binop<4, std::multiplies>>},
|
||||||
{"div", lua::wrap<l_binop<4, std::divides>>},
|
{"div", lua::wrap<l_binop<4, std::divides>>},
|
||||||
|
{"distance", lua::wrap<l_distance<4>>},
|
||||||
{"normalize", lua::wrap<l_unaryop<4, glm::normalize>>},
|
{"normalize", lua::wrap<l_unaryop<4, glm::normalize>>},
|
||||||
{"length", lua::wrap<l_scalar_op<4, glm::length>>},
|
{"length", lua::wrap<l_scalar_op<4, glm::length>>},
|
||||||
{"tostring", lua::wrap<l_tostring<4>>},
|
{"tostring", lua::wrap<l_tostring<4>>},
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user