/* ************************************************************************** */ /* */ /* :::::::: */ /* bsp.cpp :+: :+: */ /* +:+ */ /* By: whaffman +#+ */ /* +#+ */ /* Created: 2025/03/27 16:01:44 by whaffman #+# #+# */ /* Updated: 2025/03/27 16:07:02 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ #include "Point.hpp" #include "Fixed.hpp" #include "bsp.h" Fixed crossproduct(Point a, Point b, Point c) { Fixed x1 = b.x() - a.x(); Fixed y1 = b.y() - a.y(); Fixed x2 = c.x() - a.x(); Fixed y2 = c.y() - a.y(); return (x1 * y2 - x2 * y1); } bool bsp(Point a, Point b, Point c, Point point) { Fixed res1 = crossproduct(a, b, point); Fixed res2 = crossproduct(b, c, point); Fixed res3 = crossproduct(c, a, point); if ((res1 >= 0 && res2 >= 0 && res3 >= 0) || (res1 <= 0 && res2 <= 0 && res3 <= 0)) return true; return false; }