forked from Mirrorlandia_minetest/minetest
Add vector.offset (#10321)
This commit is contained in:
parent
9976f36b18
commit
28e87ce9d5
@ -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 }))
|
assert.same({ x = 2, y = 4, z = 6 }, vector.add(vector.new(1, 2, 3), { x = 1, y = 2, z = 3 }))
|
||||||
end)
|
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.
|
-- This function is needed because of floating point imprecision.
|
||||||
local function almost_equal(a, b)
|
local function almost_equal(a, b)
|
||||||
if type(a) == "number" then
|
if type(a) == "number" then
|
||||||
|
@ -137,6 +137,12 @@ function vector.divide(a, b)
|
|||||||
end
|
end
|
||||||
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)
|
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)},
|
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)}
|
{x = math.max(a.x, b.x), y = math.max(a.y, b.y), z = math.max(a.z, b.z)}
|
||||||
|
@ -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`.
|
* Returns in order minp, maxp vectors of the cuboid defined by `v1`, `v2`.
|
||||||
* `vector.angle(v1, v2)`:
|
* `vector.angle(v1, v2)`:
|
||||||
* Returns the angle between `v1` and `v2` in radians.
|
* Returns the angle between `v1` and `v2` in radians.
|
||||||
* `vector.dot(v1, v2)`
|
* `vector.dot(v1, v2)`:
|
||||||
* Returns the dot product of `v1` and `v2`
|
* Returns the dot product of `v1` and `v2`.
|
||||||
* `vector.cross(v1, v2)`
|
* `vector.cross(v1, v2)`:
|
||||||
* Returns the cross product of `v1` and `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:
|
For the following functions `x` can be either a vector or a number:
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user