Exemple #1
0
        public double Determinant()
        {
            Matrix2 D    = SubmatrixD();
            double  detD = D.Determinant();

            Matrix2 invD = D.Inverse();

            Matrix2 iA = (SubmatrixA() - SubmatrixB() * invD * SubmatrixC());

            return(detD * iA.Determinant());
        }
        public bool Intersect(LineSegment l, out Vector2 pt, out Vector2 K)
        {
            Vector2 P = P1 - P0;
            Vector2 S = l.P1 - l.P0;

            Matrix2 A = new Matrix2(P.X, -S.X, P.Y, -S.Y);

            if (Math.Abs(A.Determinant()) < 1e-10) {
                pt = default(Vector2);
                K = default(Vector2);
                return false;
            }

            K = A.Inverse()*(l.P0 - P0);

            if (K.X >= 0 && K.X <= 1 && K.Y >= 0 && K.Y <= 1) {
                pt = P0 + P*K.X;
                return true;
            }
            else {
                pt = default(Vector2);
                return false;
            }
        }