Quaternion type: Difference between revisions

Line 1,507:
def -() Quaternion.new(-a, -b, -c, -d) end
def ==(rhs : Quaternion) self.to_s == rhs.to_s end
def to_s()io : "(#{a} #{sgn(bIO)}i #{sgn(c)}j #{sgn(d)}k)\n" end
io << "(#{a} #{sgn(b)}i #{sgn(c)}j #{sgn(d)}k)\n"
end
private def sgn(n) n.sign|1 == 1 ? "+ #{n}" : "- #{n.abs}" end
end
Line 1,530 ⟶ 1,532:
r = 7
 
puts "q0 = #{q0.to_s}"
puts "q1 = #{q1.to_s}"
puts "q2 = #{q2.to_s}"
puts "r = #{r}"
puts
puts "normal of q0 = #{q0.norm.to_s}"
puts "-q0 = #{(-q0).to_s}"
puts "conjugate of q0 = #{q0.conj.to_s}"
puts "q0 * (conjugate of q0) = #{(q0 * q0.conj).to_s}"
puts "(conjugate of q0) * q0 = #{(q0.conj * q0).to_s}"
puts
puts "r + q0 - r = #{(q0r -+ r).to_sq0}"
puts "-q0 -+ r = #{(-q0 -+ r).to_s}"
puts " r - q0 = #{(r - q0).to_s}"
puts "-q0 + r = #{(-q0 + r).to_s}"
puts
puts "r * q0 - r = #{(rq0 *- q0).to_sr}"
puts "-q0 *- r = #{(-q0 *- r).to_s}"
puts " r - q0 = #{(r - q0).to_s}"
puts "-q0 + r = #{(-q0 + r).to_s}"
puts
puts "q0r +* q1q0 = #{(q0r +* q1).to_sq0}"
puts "q0 -* q1r = #{(q2q0 -* q1).to_sr}"
puts
puts "q0 * q1 = #{(q0 * q1).to_s}"
 
puts "q0 + q1 = #{q0 + q1}"
puts "q0 - q1 = #{q2 - q1}"
puts "q0 * q1 = #{(q0 * q1).to_s}"
puts
puts " q0 + q1 * q2 = #{(q0 + q1 * q2).to_s}"
puts "(q0 + q1) * q2 = #{((q0 + q1) * q2).to_s}"
puts
puts " q0 * q1 * q2 = #{(q0 * q1 * q2).to_s}"
puts "(q0 * q1) * q2 = #{((q0 * q1) * q2).to_s}"
puts " q0 * (q1 * q2) = #{(q0 * (q1 * q2)).to_s}"
puts
puts "q1 * q2 = #{(q1 * q2).to_s}"
puts "q2 * q1 = #{(q2 * q1).to_s}"
puts
puts "q1 * q2 != q2 * q1 => #{(q1 * q2) != (q2 * q1)}"
puts "q1 * q2 == q2 * q1 => #{(q1 * q2) == (q2 * q1)}"</lang>
</lang>
{{out}}
<pre>q0 = (1 + 2i + 3j + 4k)
Anonymous user