public static bool TestOverlap(AABBMask rMask, TriangleMask triMask) { VectorFP a = (VectorFP)triMask._pos + triMask._p0; VectorFP b = (VectorFP)triMask._pos + triMask._p1; VectorFP c = (VectorFP)triMask._pos + triMask._p2; if (rMask.IntersectsLine(a, b) || rMask.IntersectsLine(b, c) || rMask.IntersectsLine(a, c)) { return true; } VectorFP r = rMask._pos + new VectorFP(rMask._point.X + (rMask._w >> 1), rMask._point.Y + (rMask._h >> 1)); VectorFP q = triMask.Barycentric(r); return (q.X >= 0 && q.Y >= 0 && (q.X + q.Y) <= 1); }
public static bool TestOverlap(LineMask lnMask, AABBMask rMask) { VectorFP p0 = (VectorFP)lnMask._pos + lnMask._p0; VectorFP p1 = new VectorFP(p0.X + lnMask._w, p0.Y + lnMask._h); return rMask.IntersectsLine(p0, p1); }