All pastes #743525 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-10-20 15:04 UTC
rendered paste body
        public bool Intersect()
        {
            float t = 0, u = 0, v = 0;

            Vector3 ray_direction = new Vector3(0, -1, 0);
            Vector3 edge1 = four[1] - four[0];
            Vector3 edge2 = four[2] - four[0];

            Vector3 tvec, pvec, qvec;
            float det, inv_det;

            pvec = Vector3.Cross(ray_direction, edge2);

            det = Vector3.Dot(edge1, pvec);



            inv_det = 1.0f / det;

            tvec = posi - four[0];

            u = Vector3.Dot(tvec, pvec) * inv_det;
            if (u < -0.001f || u > 1.001f)
                return false;

            qvec = Vector3.Cross(tvec, edge1);

            v = Vector3.Dot(ray_direction, qvec) * inv_det;
            if (v < -0.001f || u + v > 1.001f)
                return false;

            t = Vector3.Dot(edge2, qvec) * inv_det;

            if (t <= 0)
                return false;

            return true;

        }