vector
Version:
76 lines (55 loc) • 1.41 kB
text/coffeescript
class Vector
constructor: ( = 0, = 0, = 0) ->
add: (vector) ->
+= vector.x
+= vector.y
+= vector.z
this
: (v1, v2) ->
new Vector v1.x + v2.x, v1.y + v2.y, v1.z + v2.z
sub: (vector) ->
-= vector.x
-= vector.y
-= vector.z
this
: (v1, v2) ->
new Vector v1.x - v2.x, v1.y - v2.y, v1.z - v2.z
mult: (scalar) ->
*= scalar
*= scalar
*= scalar
this
: (vector, scalar) ->
new Vector vector.x * scalar, vector.y * scalar, vector.z * scalar
div: (scalar) ->
/= scalar
/= scalar
/= scalar
this
: (vector, scalar) ->
new Vector vector.x / scalar, vector.y / scalar, vector.z / scalar
magSq: ->
* + * + *
mag: ->
Math.sqrt
normalize: ->
limit: (max) ->
do and if > max
dot: (vector) ->
* vector.x + * vector.y + * vector.z
distance: (vector) ->
dx = - vector.x
dy = - vector.y
dz = - vector.z
Math.sqrt dx*dx + dy*dy + dz*dz
: (v1, v2) ->
dx = v1.x - v2.x
dy = v1.y - v2.y
dz = v1.z - v2.z
Math.sqrt dx*dx + dy*dy + dz*dz
clone: ->
new Vector , ,
toString: ->
"(#{[@x, @y, @z].join(", ")})"
if window? then window.Vector = Vector else exports.Vector = Vector