Class: Bayonetta::Linalg::Vector

Inherits:
Object
  • Object
show all
Defined in:
lib/bayonetta/linalg.rb

Overview

Matrix

Instance Method Summary collapse

Constructor Details

#initialize(x = 0.0, y = 0.0, z = 0.0, w = 1.0) ⇒ Vector

Returns a new instance of Vector.



116
117
118
# File 'lib/bayonetta/linalg.rb', line 116

def initialize(x=0.0, y=0.0, z=0.0, w=1.0)
  @data = [x, y, z, w]
end

Instance Method Details

#*(scalar) ⇒ Object



172
173
174
# File 'lib/bayonetta/linalg.rb', line 172

def *(scalar)
  Vector::new(x*scalar, y*scalar, z*scalar, w)
end

#+(other) ⇒ Object



168
169
170
# File 'lib/bayonetta/linalg.rb', line 168

def +(other)
  Vector::new(x+other.x, y+other.y, z+other.z, w)
end

#-(other) ⇒ Object



164
165
166
# File 'lib/bayonetta/linalg.rb', line 164

def -(other)
  Vector::new(x-other.x, y-other.y, z-other.z, w)
end

#-@Object



180
181
182
# File 'lib/bayonetta/linalg.rb', line 180

def -@
  self.class::new(-x, -y, -z, w)
end

#[](i) ⇒ Object



120
121
122
# File 'lib/bayonetta/linalg.rb', line 120

def [](i)
  return @data[i]
end

#[]=(i, v) ⇒ Object



124
125
126
# File 'lib/bayonetta/linalg.rb', line 124

def []=(i,v)
  return @data[i]=v
end

#dot(other) ⇒ Object



176
177
178
# File 'lib/bayonetta/linalg.rb', line 176

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

#dupObject



128
129
130
# File 'lib/bayonetta/linalg.rb', line 128

def dup
  self.class::new(x,y,z,w)
end

#lengthObject



184
185
186
# File 'lib/bayonetta/linalg.rb', line 184

def length
  Math.sqrt(x*x + y*y + z*z)
end

#normalizeObject



202
203
204
# File 'lib/bayonetta/linalg.rb', line 202

def normalize
  self.dup.normalize!
end

#normalize!Object



188
189
190
191
192
193
194
195
196
197
198
199
200
# File 'lib/bayonetta/linalg.rb', line 188

def normalize!
  l = length
  if l != 0.0 && ! l.nan?
    @data[0] /= l
    @data[1] /= l
    @data[2] /= l
  else
    @data[0] = 0.0
    @data[1] = 0.0
    @data[2] = 0.0
  end
  self
end

#wObject



156
157
158
# File 'lib/bayonetta/linalg.rb', line 156

def w
  @data[3]
end

#w=(v) ⇒ Object



160
161
162
# File 'lib/bayonetta/linalg.rb', line 160

def w=(v)
  @data[3] = v
end

#xObject



132
133
134
# File 'lib/bayonetta/linalg.rb', line 132

def x
  @data[0]      
end

#x=(v) ⇒ Object



136
137
138
# File 'lib/bayonetta/linalg.rb', line 136

def x=(v)
  @data[0] = v
end

#yObject



140
141
142
# File 'lib/bayonetta/linalg.rb', line 140

def y
  @data[1]
end

#y=(v) ⇒ Object



144
145
146
# File 'lib/bayonetta/linalg.rb', line 144

def y=(v)
  @data[1] = v
end

#zObject



148
149
150
# File 'lib/bayonetta/linalg.rb', line 148

def z
  @data[2]
end

#z=(v) ⇒ Object



152
153
154
# File 'lib/bayonetta/linalg.rb', line 152

def z=(v)
  @data[2]=v
end