#include "edge_equation.h" void EdgeEquationInit(EdgeEquation* edge, const float* v0, const float* v1) { edge->a = v0[1] - v1[1]; edge->b = v1[0] - v0[0]; edge->c = -(edge->a * (v0[0] + v1[0]) + edge->b * (v0[1] + v1[1])) / 2; edge->tie = edge->a != 0 ? edge->a > 0 : edge->b > 0; } float EdgeEquationEvaluate(const EdgeEquation* edge, float x, float y) { return edge->a * x + edge->b * y + edge->c; } bool EdgeEquationTestValue(const EdgeEquation* edge, float value) { return (value >= 0 || (value == 0 && edge->tie)); } bool EdgeEquationTestPoint(const EdgeEquation* edge, float x, float y) { return EdgeEquationTestValue(edge, EdgeEquationEvaluate(edge, x, y)); }