Add vector.dot and vector.cross
authorHybridDog <ovvv@web.de>
Sat, 13 Jul 2019 11:46:44 +0000 (13:46 +0200)
committersfan5 <sfan5@live.de>
Tue, 16 Jul 2019 19:44:42 +0000 (21:44 +0200)
Mostly copied from MarkuBu's code

builtin/common/vector.lua
doc/lua_api.txt

index 9a53409fa0f7a44347674cfbf74a30e5817ef81a..782c137d6f7a2596dd8889b03e400555f9cc3ab6 100644 (file)
@@ -79,6 +79,18 @@ function vector.angle(a, b)
        return math.atan2(crossplen, dotp)
 end
 
+function vector.dot(a, b)
+       return a.x * b.x + a.y * b.y + a.z * b.z
+end
+
+function vector.cross(a, b)
+       return {
+               x = a.y * b.z - a.z * b.y,
+               y = a.z * b.x - a.x * b.z,
+               z = a.x * b.y - a.y * b.x
+       }
+end
+
 function vector.add(a, b)
        if type(b) == "table" then
                return {x = a.x + b.x,
index 2650bfedf7fee614bd046f890851c9222e78b479..be19d9e3d138b918dafd3c8f9ace297137fb9367 100644 (file)
@@ -2517,6 +2517,10 @@ 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`
 
 For the following functions `x` can be either a vector or a number: