public static bool Intersect(Triangle triangle, BoundingSphere sphere, out object intersection)
 {
     intersection = null;
     return Common.Intersection.Intersect(sphere, triangle.A.Position, out intersection) ||
         Common.Intersection.Intersect(sphere, triangle.B.Position, out intersection) ||
         Common.Intersection.Intersect(sphere, triangle.C.Position, out intersection);
 }
 public static bool Intersect(Triangle triangle, Ray ray, out object intersection)
 {
     Common.RayIntersection r = new Common.RayIntersection();
     Vector2 uv;
     bool hit = triangle.Intersect(ray, false, out r.Distance, out uv);
     r.Userdata = uv;
     intersection = r;
     return hit;
 }
        public static Common.RSpatialRelation Relation(Software.Triangle a, Plane b)
        {
            var ra = Common.SpatialRelation.Relation(a.A.Position, b);
            var rb = Common.SpatialRelation.Relation(a.B.Position, b);
            var rc = Common.SpatialRelation.Relation(a.C.Position, b);

            if (ra == Common.RSpatialRelation.AInsideB &&
                rb == Common.RSpatialRelation.AInsideB &&
                rc == Common.RSpatialRelation.AInsideB)
            {
                return(Common.RSpatialRelation.AInsideB);
            }
            else if (ra == Common.RSpatialRelation.Outside &&
                     rb == Common.RSpatialRelation.Outside &&
                     rc == Common.RSpatialRelation.Outside)
            {
                return(Common.RSpatialRelation.Outside);
            }
            else
            {
                return(Common.RSpatialRelation.Intersect);
            }
        }
 public static Vector3 Translation(Triangle t)
 {
     return t.center;
 }