All files / src snap.js

0% Statements 0/14
100% Branches 0/0
0% Functions 0/1
0% Lines 0/14

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                                                             
import {
  addVector,
  crossProduct,
  dotProduct,
  multiplyVector,
  vectorLength
} from './vector'
 
export function snapRayToLine(ray, line) {
  // Variables to record and compare
 
  var u = ray.direction
  var A = ray.origin
  var v = line.direction
  var B = line.origin
 
  let n = crossProduct(v, u)
  let AB = substractVector(B, A)
  let dot = dotProduct(n, AB)
  let nLength = vectorLength(n)
  let distance = Math.abs(dot / nLength)
 
  let t1 = dotProduct(crossProduct(v, n), AB) / dotProduct(n, n)
  let t2 = dotProduct(crossProduct(u, n), AB) / dotProduct(n, n)
 
  let M = addVector(A, multiplyVector(t1, u))
  let N = addVector(B, multiplyVector(t2, v))
 
  return { distance, pointOnRay: M, pointOnLine: N }
}