UNPKG

@jscad/modeling

Version:

Constructive Solid Geometry (CSG) Library for JSCAD

38 lines (32 loc) 1.68 kB
const test = require('ava') const { closestPoint, create, fromPoints } = require('./index') const { compareVectors } = require('../../../test/helpers/index') test('line3: closestPoint() should return proper values', (t) => { const line1 = create() // line follows X axis const x1 = closestPoint(line1, [0, 0, 0]) t.true(compareVectors(x1, [0, 0, 0])) const x2 = closestPoint(line1, [0, 1, 0]) t.true(compareVectors(x2, [0, 0, 0])) const x3 = closestPoint(line1, [6, 0, 0]) t.true(compareVectors(x3, [0, 0, 0])) // rounding errors const line2 = fromPoints(create(), [-5, -5, -5], [5, 5, 5]) const x4 = closestPoint(line2, [0, 0, 0]) t.true(compareVectors(x4, [0.000000000000, 0.000000000000, 0.00000000000])) const x5 = closestPoint(line2, [1, 0, 0]) t.true(compareVectors(x5, [0.3333333333333339, 0.3333333333333339, 0.3333333333333339])) const x6 = closestPoint(line2, [2, 0, 0]) t.true(compareVectors(x6, [0.6666666666666661, 0.6666666666666661, 0.6666666666666661])) const x7 = closestPoint(line2, [3, 0, 0]) t.true(compareVectors(x7, [1, 1, 1])) const x8 = closestPoint(line2, [4, 0, 0]) t.true(compareVectors(x8, [1.3333333333333348, 1.3333333333333348, 1.3333333333333348])) const x9 = closestPoint(line2, [5, 0, 0]) t.true(compareVectors(x9, [1.666666666666667, 1.666666666666667, 1.666666666666667])) const x10 = closestPoint(line2, [50, 0, 0]) t.true(compareVectors(x10, [16.666666666666668, 16.666666666666668, 16.666666666666668])) const ya = closestPoint(line2, [-5, -5, -5]) t.true(compareVectors(ya, [-5, -5, -5])) const yb = closestPoint(line2, [5, 5, 5]) t.true(compareVectors(yb, [5, 5, 5])) t.true(true) })