diff options
author | DS <vorunbekannt75@web.de> | 2020-08-29 17:41:29 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-29 16:41:29 +0100 |
commit | 28e87ce9d5fdf163c1eb0daf83279e949f84765d (patch) | |
tree | abf144b7c8e5ee21c5dfbd16495a70e3475a056e | |
parent | 9976f36b18b8d227e3240feb24000dda0916ee44 (diff) | |
download | minetest-28e87ce9d5fdf163c1eb0daf83279e949f84765d.tar.gz minetest-28e87ce9d5fdf163c1eb0daf83279e949f84765d.tar.bz2 minetest-28e87ce9d5fdf163c1eb0daf83279e949f84765d.zip |
Add vector.offset (#10321)
-rw-r--r-- | builtin/common/tests/vector_spec.lua | 4 | ||||
-rw-r--r-- | builtin/common/vector.lua | 6 | ||||
-rw-r--r-- | doc/lua_api.txt | 10 |
3 files changed, 16 insertions, 4 deletions
diff --git a/builtin/common/tests/vector_spec.lua b/builtin/common/tests/vector_spec.lua index 6f308a4a8..0f287363a 100644 --- a/builtin/common/tests/vector_spec.lua +++ b/builtin/common/tests/vector_spec.lua @@ -44,6 +44,10 @@ describe("vector", function() assert.same({ x = 2, y = 4, z = 6 }, vector.add(vector.new(1, 2, 3), { x = 1, y = 2, z = 3 })) end) + it("offset()", function() + assert.same({ x = 41, y = 52, z = 63 }, vector.offset(vector.new(1, 2, 3), 40, 50, 60)) + end) + -- This function is needed because of floating point imprecision. local function almost_equal(a, b) if type(a) == "number" then diff --git a/builtin/common/vector.lua b/builtin/common/vector.lua index 1fd784ce2..d6437deda 100644 --- a/builtin/common/vector.lua +++ b/builtin/common/vector.lua @@ -137,6 +137,12 @@ function vector.divide(a, b) end end +function vector.offset(v, x, y, z) + return {x = v.x + x, + y = v.y + y, + z = v.z + z} +end + function vector.sort(a, b) return {x = math.min(a.x, b.x), y = math.min(a.y, b.y), z = math.min(a.z, b.z)}, {x = math.max(a.x, b.x), y = math.max(a.y, b.y), z = math.max(a.z, b.z)} diff --git a/doc/lua_api.txt b/doc/lua_api.txt index acbaf421e..5ed84fe9a 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -3062,10 +3062,12 @@ For the following functions, `v`, `v1`, `v2` are vectors, * Returns in order minp, maxp vectors of the cuboid defined by `v1`, `v2`. * `vector.angle(v1, v2)`: * Returns the angle between `v1` and `v2` in radians. -* `vector.dot(v1, v2)` - * Returns the dot product of `v1` and `v2` -* `vector.cross(v1, v2)` - * Returns the cross product of `v1` and `v2` +* `vector.dot(v1, v2)`: + * Returns the dot product of `v1` and `v2`. +* `vector.cross(v1, v2)`: + * Returns the cross product of `v1` and `v2`. +* `vector.offset(v, x, y, z)`: + * Returns the sum of the vectors `v` and `{x = x, y = y, z = z}`. For the following functions `x` can be either a vector or a number: |