/* Express co as term of movement along 2 edges of a triangle. */ static float2 packed_edge_coordinate(const float2 v1, const float2 v2, const float2 v3, const float2 co) { float2 v13 = v3 - v1; float2 v12 = v2 - v1; float2 point_2b = co - v13; float2 isect_point; isect_line_line_v2_point(v1, v2, co, point_2b, isect_point); float len_v12 = len_v2(v12); float len_v12_isect = len_v2(isect_point - v1); float d1 = len_v12_isect / len_v12; float len_v13 = len_v2(v13); float len_v13_isect = len_v2(co - isect_point); float d2 = len_v13_isect / len_v13; return float2(d1, d2); }