Class: Vector
- Inherits:
-
Object
- Object
- Vector
- Defined in:
- lib/aurora-geometry/vector.rb
Overview
Monkeypatch Vector to overcome some deficiencies
Direct Known Subclasses
Constant Summary collapse
- X =
Vector[1,0,0]
- Y =
Vector[0,1,0]
- Z =
Vector[0,0,1]
Unary operators collapse
Instance Method Summary collapse
-
#cross(other) ⇒ Vector
(also: #**)
Cross-product of two Vectors.
Instance Method Details
#+@ ⇒ Object
10 11 12 |
# File 'lib/aurora-geometry/vector.rb', line 10 def +@ self end |
#-@ ⇒ Object
14 15 16 |
# File 'lib/aurora-geometry/vector.rb', line 14 def -@ Vector[*(@elements.map {|e| -e })] end |
#cross(other) ⇒ Vector Also known as: **
Cross-product of two Vectors
21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/aurora-geometry/vector.rb', line 21 def cross(other) Vector.Raise ErrDimensionMismatch unless @elements.size == other.size case @elements.size when 0 then raise ArgumentError, "Can't multply zero-length Vectors" when 1 then @elements.first * other.first when 2 then @elements.first * other[1] - @elements.last * other.first when 3 then Vector[ @elements[1]*other[2] - @elements[2]*other[1], @elements[2]*other[0] - @elements[0]*other[2], @elements[0]*other[1] - @elements[1]*other[0]] end end |