Quaternion type: Difference between revisions

Content added Content deleted
Line 1,523: Line 1,523:
private def sgn(n)
private def sgn(n)
n.sign == 1 ? "+ #{n}" : "- #{n.abs}"
n.sign == 1 ? "+ #{n}" : "- #{n.abs}"
end
end

struct Number
def +(rhs : Quaternion)
n = self.to_i64
Quaternion.new(n + rhs.a, rhs.b, rhs.c, rhs.d)
end

def *(rhs : Quaternion)
n = self.to_i64
Quaternion.new(n * rhs.a, n * rhs.b, n * rhs.c, n * rhs.d)
end
end
end
end
Line 1,542: Line 1,554:
puts "(conjugate of q0) * q0 = #{(q0.conj * q0).to_s}"
puts "(conjugate of q0) * q0 = #{(q0.conj * q0).to_s}"
puts
puts
puts "r + q0 = #{(r + q0).to_s}"
puts "q0 + r = #{(q0 + r).to_s}"
puts "q0 + r = #{(q0 + r).to_s}"
puts
puts "r * q0 = #{(r * q0).to_s}"
puts "q0 * r = #{(q0 * r).to_s}"
puts "q0 * r = #{(q0 * r).to_s}"
puts
puts
Line 1,574: Line 1,589:
(conjugate of q0) * q0 = (30 - 0i - 0j - 0k)
(conjugate of q0) * q0 = (30 - 0i - 0j - 0k)


r + q0 = (8 + 2i + 3j + 4k)
q0 + r = (8 + 2i + 3j + 4k)
q0 + r = (8 + 2i + 3j + 4k)

r * q0 = (7 + 14i + 21j + 28k)
q0 * r = (7 + 14i + 21j + 28k)
q0 * r = (7 + 14i + 21j + 28k)