UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

50 lines (38 loc) 1.21 kB
import { fabsf } from "../../../math/fabsf.js"; /** * * @param {number} x0 * @param {number} y0 * @param {number} x1 * @param {number} y1 * @param {number} origin_x * @param {number} origin_y * @param {number} direction_x * @param {number} direction_y * @return {boolean} true if hit found and false otherwise */ export function aabb2_intersects_ray( x0, y0, x1, y1, origin_x, origin_y, direction_x, direction_y ) { // Z Projection const extents_x = (x1 - x0) * 0.5; const center_x = x0 + extents_x; const diff_x = origin_x - center_x; if (diff_x * direction_x >= 0.0 && fabsf(diff_x) > extents_x) { return false; } // Y projection const extents_y = (y1 - y0) * 0.5; const center_y = y0 + extents_y; const diff_y = origin_y - center_y; if (diff_y * direction_y >= 0.0 && fabsf(diff_y) > extents_y) { return false; } const abs_direction_y = fabsf(direction_y); const abs_direction_x = fabsf(direction_x); const f2 = fabsf(direction_x * diff_y - direction_y * diff_x); return f2 <= extents_x * abs_direction_y + extents_y * abs_direction_x; }