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; }
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 }); }
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); }
public Triangle(pt p1, pt p2, pt p3) { P1 = p1; P2 = p2; P3 = p3; }
public pt TestNormalLocal(pt point) => LocalNormalAt(point);