Class: IRB::Vec

Inherits:
Object show all
Defined in:
lib/irb/easter-egg.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(x, y, z) ⇒ Vec

Returns a new instance of Vec.



6
7
8
# File 'lib/irb/easter-egg.rb', line 6

def initialize(x, y, z)
  @x, @y, @z = x, y, z
end

Instance Attribute Details

#xObject (readonly)

Returns the value of attribute x.



10
11
12
# File 'lib/irb/easter-egg.rb', line 10

def x
  @x
end

#yObject (readonly)

Returns the value of attribute y.



10
11
12
# File 'lib/irb/easter-egg.rb', line 10

def y
  @y
end

#zObject (readonly)

Returns the value of attribute z.



10
11
12
# File 'lib/irb/easter-egg.rb', line 10

def z
  @z
end

Instance Method Details

#cross(other) ⇒ Object



20
21
22
23
# File 'lib/irb/easter-egg.rb', line 20

def cross(other)
  ox, oy, oz = other.x, other.y, other.z
  Vec.new(@y*oz-@z*oy, @z*ox-@x*oz, @x*oy-@y*ox)
end

#dot(other) ⇒ Object



16
17
18
# File 'lib/irb/easter-egg.rb', line 16

def dot(other)
  @x*other.x + @y*other.y + @z*other.z
end

#normalizeObject



25
26
27
28
# File 'lib/irb/easter-egg.rb', line 25

def normalize
  r = Math.sqrt(self.dot(self))
  Vec.new(@x / r, @y / r, @z / r)
end

#sub(other) ⇒ Object



12
13
14
# File 'lib/irb/easter-egg.rb', line 12

def sub(other)
  Vec.new(@x - other.x, @y - other.y, @z - other.z)
end