module Magick::RVG::Transformable

def rotate(angle, *args)

the point [cx, cy].
[rotate(angle, cx, cy)] rotate by angle degrees about
[rotate(angle)] rotate by angle degrees
This method can take either of two argument lists:
def rotate(angle, *args)
  begin
    case args.length
    when 0
      @transforms << [:rotate, [Float(angle)]]
    when 2
      cx = Float(args[0])
      cy = Float(args[1])
      @transforms << [:translate, [cx, cy]]
      @transforms << [:rotate, [angle]]
      @transforms << [:translate, [-cx, -cy]]
    else
      raise ArgumentError, "wrong number of arguments (#{args.length} for 1 or 3)"
    end
  rescue ArgumentError
    raise ArgumentError, "arguments must be convertable to float (got #{[angle, *args].map(&:class).join(', ')})"
  end
  yield(self) if block_given?
  self
end