Checking if a point is inside a triangle.

Point In Triangle

The following is a small code snippet in Odin of determining if a point is inside of a triangle.

package main

import "core:math/linalg"

// Vector Primitives
Vec2 :: [2]f32
VEC2_ZERO: Vec2 = {0, 0}

vec2_is_point_in_triangle :: proc(p, v1, v2, v3: Vec2) -> bool {
    line_ab := v2 - v1
    line_bc := v3 - v2
    line_ca := v1 - v3

    ap := p - v1
    bp := p - v2
    cp := p - v3

    cross1 := linalg.vector_cross2(line_ab, ap)
    cross2 := linalg.vector_cross2(line_bc, bp)
    cross3 := linalg.vector_cross2(line_ca, cp)

    if cross1 <= 0.0 || cross2 <= 0.0 || cross3 <= 0.0 {
        return false
    }

    return true
}

main :: proc() {

}