Class: TMatrix

Inherits:
Matrix
  • Object
show all
Defined in:
lib/transformatrix.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.reflection(lx, ly) ⇒ Object

Create matrix for reflecting about a line interpolating (0,0) and (lx,ly)



54
55
56
57
58
59
# File 'lib/transformatrix.rb', line 54

def self.reflection lx, ly
	rows [\
		[lx**2-ly**2,	2*lx*ly,		0			],\
		[2*lx*ly,		ly**2-lx**2,	0			],\
		[0,				0,				lx**2+ly**2	]]
end

.rotation(alpha) ⇒ Object

Create matrix for rotating alpha radians about origo



38
39
40
41
42
43
# File 'lib/transformatrix.rb', line 38

def self.rotation alpha
	rows [ \
		[Math::cos(alpha),	Math::sin(alpha),	0], \
		[-Math::sin(alpha),	Math::cos(alpha),	0], \
		[0,					0,					1]]
end

.scaling(sx, sy) ⇒ Object

Create matrix for scaling relative to origo



62
63
64
65
66
67
# File 'lib/transformatrix.rb', line 62

def self.scaling sx, sy
	rows [\
		[sx,	0,	0],\
		[0,		sy,	0],\
		[0,		0,	1]]
end

.translation(tx, ty) ⇒ Object

Create matrix for translating by [tx, ty]



46
47
48
49
50
51
# File 'lib/transformatrix.rb', line 46

def self.translation tx, ty
	rows [\
		[1, 0, tx	],\
		[0, 1, ty	],\
		[0, 0, 1	]]
end

Instance Method Details

#*(arg) ⇒ Object

Multiplication with 2D vector or array



7
8
9
10
11
12
13
14
15
# File 'lib/transformatrix.rb', line 7

def * arg
	if arg.is_a? Array
		multiply_array arg
	elsif arg.is_a? Vector
		Vector.elements multiply_array(arg.to_a)
	else
		super.* arg
	end
end