matrix ライブラリーの使い方
question:1191841779
matrix ライブラリーの使い方が少しわかったので、それを使って書き直してみた。
require 'matrix' class Vector2 < Vector DIMENSION = 2 def self.[](*array) self.Raise ErrDimensionMismatch if array.size != DIMENSION super end def self.elements(array, copy = true) self.Raise ErrDimensionMismatch if array.size != DIMENSION super end def rotate(angle) cos = Math.cos(angle) sin = Math.sin(angle) mat = Matrix[[cos, -sin], [sin, cos]] mat * self # .class == Vector...orz end end x = 13.0 y = 6.0 angle_degree = 47.0 angle = angle_degree * Math::PI / 180.0 # convert degrees into radians p Vector2[x, y].rotate(angle) # => Vector[4.47785647109746, 13.5995882814242] p Vector2.elements([x, y]).rotate(angle)# => Vector[4.47785647109746, 13.5995882814242]
*1:クラス名を決め打ちにするのは止めて欲しい。