Module: Savage::Transformable

Included in:
Direction, Path, SubPath
Defined in:
lib/ext/savage/lib/savage/transformable.rb

Instance Method Summary collapse

Instance Method Details

#rotate(angle, cx = 0, cy = 0) ⇒ Object

TODO: make cx, cy be origin center



22
23
24
25
26
27
# File 'lib/ext/savage/lib/savage/transformable.rb', line 22

def rotate( angle, cx=0, cy=0 )
  a = (angle.to_f/180).to_d * Math::PI
  translate( cx, cy )
  transform( Math.cos(a),  Math.sin(a), -Math.sin(a), Math.cos(a), 0, 0)
  translate( -cx, -cy )
end

#scale(sx, sy = sx) ⇒ Object



16
17
18
# File 'lib/ext/savage/lib/savage/transformable.rb', line 16

def scale(sx, sy=sx)
  transform( sx, 0, 0, sy, 0, 0 )
end

#skew_x(angle) ⇒ Object



29
30
31
32
# File 'lib/ext/savage/lib/savage/transformable.rb', line 29

def skew_x( angle )
  a = angle.to_f/180 * Math::PI
  transform( 1, 0, Math.tan(a), 1, 0, 0 )
end

#skew_y(angle) ⇒ Object



34
35
36
37
# File 'lib/ext/savage/lib/savage/transformable.rb', line 34

def skew_y( angle )
  a = angle.to_f/180 * Math::PI
  transform( 1, Math.tan(a), 0, 1, 0, 0 )
end

#transform(scale_x, skew_x, skew_y, scale_y, tx, ty) ⇒ Object

Matrix:



9
10
# File 'lib/ext/savage/lib/savage/transformable.rb', line 9

def transform(scale_x, skew_x, skew_y, scale_y, tx, ty)
end

#translate(tx, ty = 0) ⇒ Object



12
13
14
# File 'lib/ext/savage/lib/savage/transformable.rb', line 12

def translate(tx, ty=0)
  transform( 1, 0, 0, 1, tx, ty )
end