From 420ce2bc15daa2675e88bef0a51ba1da25b24957 Mon Sep 17 00:00:00 2001 From: Cogitary <84321459+DoubleDataStack@users.noreply.github.com> Date: Sun, 17 Mar 2024 23:50:36 +0300 Subject: [PATCH] Update vector2.lua --- res/modules/vector2.lua | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/res/modules/vector2.lua b/res/modules/vector2.lua index 3fb25023..dad44ee1 100644 --- a/res/modules/vector2.lua +++ b/res/modules/vector2.lua @@ -163,6 +163,21 @@ function vector2:dist(vector) return result:len() end +-- cross product for vec2 (in 3D space) +-- @param {vec2} v - The other vec2 +-- @return {number} -> float || integer +-- @usage +-- local v1 = vec2(10, 15) +-- local v2 = vec2(15, 10) +-- print(v1:cross(v2)) -- Output: -125 +function vector2:cross(v) + if type(v) == "number" then + print("\n(( TypeError : cross ))\nType arg cross(vec2)") + error("Invalid input argument. Expected a vec2 object.\n") + end + return self.x * v.y - self.y * v.x +end + -- rotate vec2 -- @param angle {number} -- @param axis {string} - axis rotate around (x, y, or z) @@ -217,6 +232,28 @@ function vector2.__add(value_1, value_2) end +-- sub vec +function vector2.__sub(value_1, value_2) + if type(value_1) == "number" then + if value_1 == 0 then + return vector2:new(value_2.x, value_2.y) + else + return vector2:new(value_2.x - value_1, value_2.y - value_1) + end + else + if type(value_2) == "number" then + if value_2 == 0 then + return vector2:new(value_1.x, value_1.y) + else + return vector2:new(value_1.x - value_2, value_1.y - value_2) + end + else + return vector2:new(value_1.x - value_2.x, value_1.y - value_2.y) + end + end +end + + -- mul vec function vector2.__mul(value_1, value_2)