UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

36 lines (32 loc) 1.27 kB
import { v3_dot } from "../../vec3/v3_dot.js"; /** * Produces a numeric result to indicate which side of the plane the triangle is on * between +3 and -3, +3 means that all vertices ave above the plane, -3 means all vertices are below the plane, values in between indicate that plane cuts throught the triangle * @param {number} plane_normal_x * @param {number} plane_normal_y * @param {number} plane_normal_z * @param {number} plane_constant * @param {number} ax * @param {number} ay * @param {number} az * @param {number} bx * @param {number} by * @param {number} bz * @param {number} cx * @param {number} cy * @param {number} cz * @returns {number} */ export function computeTrianglePlaneSide( plane_normal_x, plane_normal_y, plane_normal_z, plane_constant, ax, ay, az, bx, by, bz, cx, cy, cz ) { let result = 0; // compute side for each point result += v3_dot(plane_normal_x, plane_normal_y, plane_normal_z, ax, ay, az) >= plane_constant ? 1 : -1; result += v3_dot(plane_normal_x, plane_normal_y, plane_normal_z, bx, by, bz) >= plane_constant ? 1 : -1; result += v3_dot(plane_normal_x, plane_normal_y, plane_normal_z, cx, cy, cz) >= plane_constant ? 1 : -1; return result; }