pocket-physics
Version:
Verlet physics extracted from pocket-ces demos
132 lines (131 loc) • 3.31 kB
JavaScript
"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,
}
`);
});