Anonymous user
Quaternion type: Difference between revisions
→{{header|Crystal}}
Line 1,478:
=={{header|Crystal}}==
{{trans|Rust:Ruby}}
<lang ruby>class Quaternion
property a, b, c, d
def initialize(@a : Int64, @b : Int64, @c : Int64, @d : Int64)
def norm; Math.sqrt(
def conj; Quaternion.new(
def +(rhs : Quaternion)
Quaternion.new(
▲ Quaternion.new(self.a + rhs, self.b, self.c, self.d)
end
def -(rhs : Quaternion)
Quaternion.new(
end
def *(rhs : Quaternion)
Quaternion.new(
end
def *(n) Quaternion.new(a * n, b * n, c * n, d * n) end
def -() Quaternion.new(
def ==(rhs : Quaternion) self.to_s == rhs.to_s end▼
private def sgn(n) n.sign|1 == 1 ? "+ #{n}" : "- #{n.abs}" end▼
▲ def ==(rhs : Quaternion)
▲ "(#{self.a} #{sgn(self.b)}i #{sgn(self.c)}j #{sgn(self.d)}k)\n"
▲ n.sign == 1 ? "+ #{n}" : "- #{n.abs}"
end
Line 1,586 ⟶ 1,570:
-q0 = (-1 - 2i - 3j - 4k)
conjugate of q0 = (1 - 2i - 3j - 4k)
q0 * (conjugate of q0) = (30
(conjugate of q0) * q0 = (30
r + q0 = (8 + 2i + 3j + 4k)
|