private bool IsReflex(LinkedListNode <TriVx> node, Vec3F normal) { TriVx v0 = PrevNode(node).Value; TriVx v1 = node.Value; TriVx v2 = NextNode(node).Value; return(!IsLeftOf(v0, v1, v2, normal)); }
private bool IsEar(LinkedListNode <TriVx> node, Vec3F normal) { bool isEar = true; TriVx v0 = PrevNode(node).Value; TriVx v1 = node.Value; TriVx v2 = NextNode(node).Value; foreach (TriVx v in node.List) { if (v.IsReflex && v != v0 && v != v1 && v != v2) { // Chec for containment if (IsLeftOf(v0, v1, v, normal) && IsLeftOf(v1, v2, v, normal) && IsLeftOf(v2, v0, v, normal)) { isEar = false; } } } return(isEar); }
private bool IsLeftOf(TriVx v0, TriVx v1, TriVx v2, Vec3F normal) { Vec3F cross = Vec3F.Cross(v1.V - v0.V, v2.V - v0.V); return(Vec3F.Dot(cross, normal) > 0.0f); }
private bool IsLeftOf(TriVx v0, TriVx v1, TriVx v2, Vec3F normal) { Vec3F cross = Vec3F.Cross(v1.V - v0.V, v2.V - v0.V); return Vec3F.Dot(cross, normal) > 0.0f; }