UNPKG

pocket-physics

Version:

Verlet physics extracted from pocket-ces demos

132 lines (131 loc) 3.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const project_point_edge_1 = require("./project-point-edge"); const v2_1 = require("./v2"); const projection = (0, project_point_edge_1.createPointEdgeProjectionResult)(); test("point above edge 2", () => { const ball = (0, v2_1.v2)(0, 5); const p0 = (0, v2_1.v2)(-10, 0); const p1 = (0, v2_1.v2)(10, 0); (0, project_point_edge_1.projectPointEdge)(ball, p0, p1, projection); expect(projection).toMatchInlineSnapshot(` Object { "distance": 5, "edgeNormal": Object { "x": 0, "y": 1, }, "projectedPoint": Object { "x": 0, "y": 0, }, "similarity": 5, "u": 0.5, } `); }); test("point below edge 2", () => { const ball = (0, v2_1.v2)(0, -5); const p0 = (0, v2_1.v2)(-10, 0); const p1 = (0, v2_1.v2)(10, 0); (0, project_point_edge_1.projectPointEdge)(ball, p0, p1, projection); expect(projection).toMatchInlineSnapshot(` Object { "distance": 5, "edgeNormal": Object { "x": 0, "y": 1, }, "projectedPoint": Object { "x": 0, "y": 0, }, "similarity": -5, "u": 0.5, } `); }); test("point above and behind edge 2", () => { const ball = (0, v2_1.v2)(-15, 5); const p0 = (0, v2_1.v2)(-10, 0); const p1 = (0, v2_1.v2)(10, 0); (0, project_point_edge_1.projectPointEdge)(ball, p0, p1, projection); expect(projection).toMatchInlineSnapshot(` Object { "distance": 5, "edgeNormal": Object { "x": 0, "y": 1, }, "projectedPoint": Object { "x": -15, "y": 0, }, "similarity": 5, "u": -0.25, } `); }); test("point above and ahead of edge 2", () => { const ball = (0, v2_1.v2)(15, 5); const p0 = (0, v2_1.v2)(-10, 0); const p1 = (0, v2_1.v2)(10, 0); (0, project_point_edge_1.projectPointEdge)(ball, p0, p1, projection); expect(projection).toMatchInlineSnapshot(` Object { "distance": 5, "edgeNormal": Object { "x": 0, "y": 1, }, "projectedPoint": Object { "x": 15, "y": 0, }, "similarity": 5, "u": 1.25, } `); }); test("point below and behind edge 2", () => { const ball = (0, v2_1.v2)(-15, -5); const p0 = (0, v2_1.v2)(-10, 0); const p1 = (0, v2_1.v2)(10, 0); (0, project_point_edge_1.projectPointEdge)(ball, p0, p1, projection); expect(projection).toMatchInlineSnapshot(` Object { "distance": 5, "edgeNormal": Object { "x": 0, "y": 1, }, "projectedPoint": Object { "x": -15, "y": 0, }, "similarity": -5, "u": -0.25, } `); }); test("point below and ahead edge 2", () => { const ball = (0, v2_1.v2)(15, -5); const p0 = (0, v2_1.v2)(-10, 0); const p1 = (0, v2_1.v2)(10, 0); (0, project_point_edge_1.projectPointEdge)(ball, p0, p1, projection); expect(projection).toMatchInlineSnapshot(` Object { "distance": 5, "edgeNormal": Object { "x": 0, "y": 1, }, "projectedPoint": Object { "x": 15, "y": 0, }, "similarity": -5, "u": 1.25, } `); });