Closed nuintun closed 1 year ago
export function calculateTriangleArea(a: Point, b: Point, c: Point): number {
const { x: ax, y: ay } = a;
const { x: bx, y: by } = b;
const { x: cx, y: cy } = c;
return Math.abs(ax * (by - cy) + bx * (cy - ay) + cx * (ay - by)) / 2;
}
export function isPointInQuadrangle(p: Point, a: Point, b: Point, c: Point, d: Point): boolean {
const s1 = calculateTriangleArea(a, b, p);
const s2 = calculateTriangleArea(b, c, p);
const s3 = calculateTriangleArea(c, d, p);
const s4 = calculateTriangleArea(d, a, p);
const area = calculateTriangleArea(a, b, c) + calculateTriangleArea(c, d, a);
return s1 + s2 + s3 + s4 - area <= 0;
}