From 2fd14e1bd53918b3c4fcdfbc81294ff8b7afe1fa Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Fri, 5 Dec 2014 23:18:52 +0100 Subject: [PATCH] Add Lua helper functions vector.apply(v) math.sign(x, tolerance) --- builtin/common/misc_helpers.lua | 11 +++++++++++ builtin/common/vector.lua | 8 ++++++++ doc/lua_api.txt | 4 ++++ 3 files changed, 23 insertions(+) diff --git a/builtin/common/misc_helpers.lua b/builtin/common/misc_helpers.lua index 0b608126e..e1dc28965 100644 --- a/builtin/common/misc_helpers.lua +++ b/builtin/common/misc_helpers.lua @@ -212,6 +212,17 @@ function math.hypot(x, y) return x * math.sqrt(1 + t * t) end +-------------------------------------------------------------------------------- +function math.sign(x, tolerance) + tolerance = tolerance or 0 + if x > tolerance then + return 1 + elseif x < -tolerance then + return -1 + end + return 0 +end + -------------------------------------------------------------------------------- function get_last_folder(text,count) local parts = text:split(DIR_DELIM) diff --git a/builtin/common/vector.lua b/builtin/common/vector.lua index 88ccfe6da..e9ed3aab3 100644 --- a/builtin/common/vector.lua +++ b/builtin/common/vector.lua @@ -39,6 +39,14 @@ function vector.round(v) } end +function vector.apply(v, func) + return { + x = func(v.x), + y = func(v.y), + z = func(v.z) + } +end + function vector.distance(a, b) local x = a.x - b.x local y = a.y - b.y diff --git a/doc/lua_api.txt b/doc/lua_api.txt index e2ef3faab..6c33d92d4 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -1280,6 +1280,7 @@ vector.distance(p1, p2) -> number vector.length(v) -> number vector.normalize(v) -> vector vector.round(v) -> vector +vector.apply(v, func) -> vector vector.equals(v1, v2) -> bool For the following functions x can be either a vector or a number. vector.add(v, x) -> vector @@ -1296,6 +1297,9 @@ dump(obj, dumped={}) math.hypot(x, y) ^ Get the hypotenuse of a triangle with legs x and y. Useful for distance calculation. +math.sign(x, tolerance) +^ Get the sign of a number + Optional: Also returns 0 when the absolute value is within the tolerance (default 0) string:split(separator) ^ e.g. string:split("a,b", ",") == {"a","b"} string:trim()