diff --git a/spec/vec3_spec.lua b/spec/vec3_spec.lua index 7db88b5..d620eca 100644 --- a/spec/vec3_spec.lua +++ b/spec/vec3_spec.lua @@ -225,9 +225,29 @@ describe("vec3:", function() assert.is.equal(temp, vec3(-1, -2, -3)) end) - -- it("get two 3-vectors angle", function() - -- local a = vec3(1,2,3) - -- local b = vec3(3,2,1) - -- -- assert.is.equal(a:angle_to(b), 1) - -- end) + it("get two 3-vectors angle", function() + local angle_to = function(a, b) + local deg = math.deg(a:angle_to(b)) + return string.format('%.2f', deg) + end + local a = vec3(1,2,3) + assert.is.equal(angle_to(a, vec3(3, 2, 1)), '44.42') + assert.is.equal(angle_to(a, vec3(0, 10, 0)), '57.69') + assert.is.equal(angle_to(a, vec3(0, -12, -10)), '157.51') + + a = vec3.unit_z + assert.is.equal(angle_to(a, vec3(0, 10, 0)), '90.00') + assert.is.equal(angle_to(a, vec3(-123, 10, 0)), '90.00') + assert.is.equal(angle_to(a, vec3(-10, 0, 10)), '45.00') + assert.is.equal(angle_to(a, vec3(-10, 0, -10)), '135.00') + assert.is.equal(angle_to(a, vec3(0, -10, -10)), '135.00') + assert.is.equal(angle_to(a, vec3(0, 0, -10)), '180.00') + assert.is.equal(angle_to(a, vec3(0, 0, 100)), '0.00') + + a = vec3(100, 100, 0) + assert.is.equal(angle_to(a, vec3(0, 0, 100)), '90.00') + assert.is.equal(angle_to(a, vec3(0, 0, -100)), '90.00') + assert.is.equal(angle_to(a, vec3(-10, -10, 0)), '180.00') + assert.is.equal(angle_to(a, vec3.unit_z), '90.00') + end) end)