Class: Bayonetta::Linalg::Vector
- Inherits:
-
Object
- Object
- Bayonetta::Linalg::Vector
- Defined in:
- lib/bayonetta/linalg.rb
Overview
Matrix
Instance Method Summary collapse
- #*(scalar) ⇒ Object
- #+(other) ⇒ Object
- #-(other) ⇒ Object
- #-@ ⇒ Object
- #[](i) ⇒ Object
- #[]=(i, v) ⇒ Object
- #dot(other) ⇒ Object
- #dup ⇒ Object
-
#initialize(x = 0.0, y = 0.0, z = 0.0, w = 1.0) ⇒ Vector
constructor
A new instance of Vector.
- #length ⇒ Object
- #normalize ⇒ Object
- #normalize! ⇒ Object
- #w ⇒ Object
- #w=(v) ⇒ Object
- #x ⇒ Object
- #x=(v) ⇒ Object
- #y ⇒ Object
- #y=(v) ⇒ Object
- #z ⇒ Object
- #z=(v) ⇒ Object
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 |
#dup ⇒ Object
128 129 130 |
# File 'lib/bayonetta/linalg.rb', line 128 def dup self.class::new(x,y,z,w) end |
#length ⇒ Object
184 185 186 |
# File 'lib/bayonetta/linalg.rb', line 184 def length Math.sqrt(x*x + y*y + z*z) end |
#normalize ⇒ Object
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 |
#w ⇒ Object
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 |
#x ⇒ Object
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 |
#y ⇒ Object
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 |
#z ⇒ Object
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 |