All files / src vector.js

70% Statements 28/40
25% Branches 1/4
69.23% Functions 9/13
70% Lines 28/40

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70  64x 64x 64x 64x 64x       86x 86x 86x 86x 86x       127x 127x 127x 127x 127x     11x 11x     5x     2x     64x 64x 64x 64x 64x                       74x           22x 22x     22x                  
export function addVector(u, v) {
  const result = {}
  result.x = u.x + v.x
  result.y = u.y + v.y
  result.z = u.z + v.z
  return result
}
 
export function substractVector(u, v) {
  const result = {}
  result.x = u.x - v.x
  result.y = u.y - v.y
  result.z = u.z - v.z
  return result
}
 
export function multiplyVector(lambda, u) {
  const result = {}
  result.x = u.x * lambda
  result.y = u.y * lambda
  result.z = u.z * lambda
  return result
}
export function dotProduct(u, v) {
  const result = u.x * v.x + u.y * v.y + u.z * v.z
  return result
}
export function areCollinear(u, v) {
  return vectorLength(crossProduct(u, v)) == 0
}
export function areAlmostCollinear(u, v, tolerance) {
  return vectorLength(crossProduct(u, v)) < tolerance
}
export function crossProduct(u, v) {
  const result = {}
  result.x = u.y * v.z - u.z * v.y
  result.y = u.z * v.x - u.x * v.z
  result.z = u.x * v.y - u.y * v.x
  return result
}
export function meanVector(listVector) {
  let meanPoint = {}
  let sumPoint = { x: 0, y: 0, z: 0 }
  listVector.forEach((p) => {
    sumPoint = addVector(sumPoint, p)
  })
  meanPoint = multiplyVector(1 / listVector.length, sumPoint)
  return meanPoint
}
export function vectorLength(v) {
  return Math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z)
}
export function vectorLength2D(v) {
  return Math.sqrt(v.x * v.x + v.y * v.y)
}
export function normalizeVector(v) {
  let length = vectorLength(v)
  Iif (length == 0) {
    return v
  }
  return multiplyVector(1 / length, v)
}
export function normalize2DVector(v) {
  let length = vectorLength2D(v)
  if (length == 0) {
    return v
  }
  return multiplyVector(1 / length, v)
}