示例#1
0
 public bool Intersects(Polygon obj)
 {
     Vector3 n1 = Normal (), n2 = obj.Normal ();
     if (Vector3.Dot (n1,n2) == 0)
         //if(this.Contains(obj.U))
         return false;
     double d1 = -(n1.X * U.X + n1.Y * V.X + n1.Z * W.X);
     double d2 = -(n2.X * obj.U.X + n2.Y * obj.V.X + n2.Z * obj.W.X);
     double div1 = Vector3.Dot (n1, n1);
     double div2 = Vector3.Dot (n1, n2);
     double k2 = (-d1 / div1 - d2 / (div1 * div2)) * (div1 * div2 / (div1 * div2 + Vector3.Dot (n2, n2)));
     double k1 = (-d1 - k2 * div2) / div1;
     Rect3 intersection = new Rect3 (k1 * n1 + k2 * n2, Vector3.Cross (n1, n2), true);
 }