http://twitter.com/maehrm/status/24239768785 とつぶやいたのですが,回転行列で実践してみました。
rot.rb
以下は,点(1, 0)を120度回転させて,次に120度回転させて,さらにもう一回120度回転させるスクリプトです。当然,もとの位置にもどらなければなりません。
require 'matrix' beta = 120 * Math::PI / 180 rot = Matrix[[Math.cos(beta), -Math.sin(beta)], [Math.sin(beta), Math.cos(beta)]] p (rot * rot * rot * Matrix.column_vector([1, 0])).map(&:to_i)
実行結果
$ ruby rot.rb Matrix[[1], [0]]