From 7aaf37d43e1ee76c1b3e2c034dfedb2d915531b9 Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Tue, 12 May 2020 09:32:50 -0500 Subject: [PATCH] Added Vector#multiply_transform, needs more testing. --- lib/cyberarm_engine/vector.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/cyberarm_engine/vector.rb b/lib/cyberarm_engine/vector.rb index 8b397f1..7fef61e 100644 --- a/lib/cyberarm_engine/vector.rb +++ b/lib/cyberarm_engine/vector.rb @@ -137,6 +137,17 @@ module CyberarmEngine operator("*", other) end + def multiply_transform(transform) + e = transform.elements + + x = @x * e[0] + @y * e[1] + @z * e[2] + 1 * e[3] + y = @x * e[4] + @y * e[5] + @z * e[6] + 1 * e[7] + z = @x * e[8] + @y * e[9] + @z * e[10] + 1 * e[11] + w = @x * e[12] + @y * e[13] + @z * e[14] + 1 * e[5] + + Vector.new(x / 1, y / 1, z / 1, w / 1) + end + # Divides Vector and Numeric or Vector and Vector, excluding {weight} # @return [CyberarmEngine::Vector] def /(other)