示例#1
0
 public Triangle(pt p1, pt p2, pt p3, pt n1, pt n2, pt n3)
 {
     P1 = p1;
     P2 = p2;
     P3 = p3;
     N1 = n1;
     N2 = n2;
     N3 = n3;
 }
示例#2
0
 public static Triangle Smooth(pt p1, pt p2, pt p3, pt n1, pt n2, pt n3)
 {
     return(new Triangle(p1, p2, p3)
     {
         N1 = n1,
         N2 = n2,
         N3 = n3,
         IsSmoothed = true
     });
 }
示例#3
0
 protected override pt LocalNormalAt(pt localPoint, Intersection hit = null)
 {
     if (!IsSmoothed)
     {
         return(Normal);
     }
     return(N2 * hit.U +
            N3 * hit.V +
            N1 * (1 - hit.U - hit.V));
 }
 public bool ContainsPoint(pt point)
 {
     return(Minimum.X <= point.X && point.X <= Maximum.X &&
            Minimum.Y <= point.Y && point.Y <= Maximum.Y &&
            Minimum.Z <= point.Z && point.Z <= Maximum.Z);
 }
示例#5
0
 public Triangle(pt p1, pt p2, pt p3)
 {
     P1 = p1;
     P2 = p2;
     P3 = p3;
 }
示例#6
0
 public pt TestNormalLocal(pt point)
 => LocalNormalAt(point);