forked from Mirrorlandia_minetest/minetest
Add vector.combine (#11920)
This commit is contained in:
parent
e9e671078c
commit
ae7664597e
@ -128,6 +128,14 @@ describe("vector", function()
|
|||||||
assert.equal(vector.new(4.1, 5.9, 5.5), a:apply(f))
|
assert.equal(vector.new(4.1, 5.9, 5.5), a:apply(f))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it("combine()", function()
|
||||||
|
local a = vector.new(1, 2, 3)
|
||||||
|
local b = vector.new(3, 2, 1)
|
||||||
|
assert.equal(vector.add(a, b), vector.combine(a, b, function(x, y) return x + y end))
|
||||||
|
assert.equal(vector.new(3, 2, 3), vector.combine(a, b, math.max))
|
||||||
|
assert.equal(vector.new(1, 2, 1), vector.combine(a, b, math.min))
|
||||||
|
end)
|
||||||
|
|
||||||
it("equals()", function()
|
it("equals()", function()
|
||||||
local function assertE(a, b)
|
local function assertE(a, b)
|
||||||
assert.is_true(vector.equals(a, b))
|
assert.is_true(vector.equals(a, b))
|
||||||
|
@ -110,6 +110,14 @@ function vector.apply(v, func)
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function vector.combine(a, b, func)
|
||||||
|
return fast_new(
|
||||||
|
func(a.x, b.x),
|
||||||
|
func(a.y, b.y),
|
||||||
|
func(a.z, b.z)
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
function vector.distance(a, b)
|
function vector.distance(a, b)
|
||||||
local x = a.x - b.x
|
local x = a.x - b.x
|
||||||
local y = a.y - b.y
|
local y = a.y - b.y
|
||||||
|
@ -580,6 +580,7 @@ Spatial Vectors
|
|||||||
* `vector.floor(v)`: returns a vector, each dimension rounded down
|
* `vector.floor(v)`: returns a vector, each dimension rounded down
|
||||||
* `vector.round(v)`: returns a vector, each dimension rounded to nearest int
|
* `vector.round(v)`: returns a vector, each dimension rounded to nearest int
|
||||||
* `vector.apply(v, func)`: returns a vector
|
* `vector.apply(v, func)`: returns a vector
|
||||||
|
* `vector.combine(v, w, func)`: returns a vector
|
||||||
* `vector.equals(v1, v2)`: returns a boolean
|
* `vector.equals(v1, v2)`: returns a boolean
|
||||||
|
|
||||||
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:
|
||||||
|
@ -3409,6 +3409,9 @@ vectors are written like this: `(x, y, z)`:
|
|||||||
* `vector.apply(v, func)`:
|
* `vector.apply(v, func)`:
|
||||||
* Returns a vector where the function `func` has been applied to each
|
* Returns a vector where the function `func` has been applied to each
|
||||||
component.
|
component.
|
||||||
|
* `vector.combine(v, w, func)`:
|
||||||
|
* Returns a vector where the function `func` has combined both components of `v` and `w`
|
||||||
|
for each component
|
||||||
* `vector.equals(v1, v2)`:
|
* `vector.equals(v1, v2)`:
|
||||||
* Returns a boolean, `true` if the vectors are identical.
|
* Returns a boolean, `true` if the vectors are identical.
|
||||||
* `vector.sort(v1, v2)`:
|
* `vector.sort(v1, v2)`:
|
||||||
|
Loading…
Reference in New Issue
Block a user