123456789101112131415161718192021222324252627282930313233343536373839 |
- import barycentricCoordinates from "./barycentricCoordinates.js";
- import Cartesian3 from "./Cartesian3.js";
- import defined from "./defined.js";
- const scratchBarycentricCoords = new Cartesian3();
- /**
- * Determines if a point is inside a triangle.
- *
- * @function pointInsideTriangle
- *
- * @param {Cartesian2|Cartesian3} point The point to test.
- * @param {Cartesian2|Cartesian3} p0 The first point of the triangle.
- * @param {Cartesian2|Cartesian3} p1 The second point of the triangle.
- * @param {Cartesian2|Cartesian3} p2 The third point of the triangle.
- * @returns {Boolean} <code>true</code> if the point is inside the triangle; otherwise, <code>false</code>.
- *
- * @example
- * // Returns true
- * const p = new Cesium.Cartesian2(0.25, 0.25);
- * const b = Cesium.pointInsideTriangle(p,
- * new Cesium.Cartesian2(0.0, 0.0),
- * new Cesium.Cartesian2(1.0, 0.0),
- * new Cesium.Cartesian2(0.0, 1.0));
- */
- function pointInsideTriangle(point, p0, p1, p2) {
- const coords = barycentricCoordinates(
- point,
- p0,
- p1,
- p2,
- scratchBarycentricCoords
- );
- if (!defined(coords)) {
- return false;
- }
- return coords.x > 0.0 && coords.y > 0.0 && coords.z > 0;
- }
- export default pointInsideTriangle;
|