Skip to content

Instantly share code, notes, and snippets.

@railsstudent
Created November 16, 2016 15:18
Show Gist options
  • Save railsstudent/55b77cfa729ea339bde1558afa4a231e to your computer and use it in GitHub Desktop.
Save railsstudent/55b77cfa729ea339bde1558afa4a231e to your computer and use it in GitHub Desktop.
class Vector
constructor: (@components) ->
add: (vector) ->
if @components.length isnt vector.components.length
throw new Error('different length')
else
result = []
for i in [[email protected]]
result.push (@components[i] + vector.components[i])
return new Vector(result)
subtract: (vector) ->
if @components.length isnt vector.components.length
throw new Error('different length')
else
result = []
for i in [[email protected]]
result.push (@components[i] - vector.components[i])
return new Vector(result)
dot: (vector) ->
if @components.length isnt vector.components.length
throw new Error('different length')
else
result = 0
for i in [[email protected]]
result += (@components[i] * vector.components[i])
return result
norm: () ->
result = 0
for e in @components
result += e * e
return Math.sqrt(result)
toString: () ->
str = ''
for e in @components
if str isnt '' then str += ','
str += e
'(' + str + ')'
equals: (vector) ->
if !@components? then return false
if !vector? then return false
if !vector.components? then return false
if @components.length isnt vector.components.length then return false
for i in [[email protected]]
if @components[i] isnt vector.components[i] then return false
return true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment