static void Check(Plane P1, TriangleF T, ref int PtCount, xyzf A, xyzf B, ref xyzf Pt1, ref xyzf Pt2) { double Lam = -1; xyz Pt = new xyz(0, 0, 0); if (P1.Cross(new LineType(A.Toxyz(), (B.Toxyz() - A.Toxyz())), out Lam, out Pt)) { xyz N = A.Toxyz() + (B.Toxyz() - A.Toxyz()) * Lam; if ((Lam >= -0.000000001) && (Lam < 1.000000001)) { if (T.Inside(Pt.toXYZF())) { if (PtCount == 0) { Pt1 = Pt.toXYZF(); PtCount = 1; } else if (PtCount == 1) { if (Pt1.dist(Pt.toXYZF()) > 0.0001) { Pt2 = Pt.toXYZF(); PtCount++; } } } } } }
bool Inside(LineType L, xyzf A, xyzf B, xyzf C) { TriangleF T = new TriangleF(A, B, C); Plane Triangle = new Plane(A, B, C); xyzf N = Triangle.NormalUnit.toXYZF(); double Depth = -1; xyz pt = new xyz(0, 0, 0); Triangle.Cross(L, out Depth, out pt); bool tttt = T.Inside(pt.toXYZF()); xyzf _P = pt.toXYZF(); bool result = ((((A - _P) & (B - _P)) * N >= -0.00001) && (((B - _P) & (C - _P)) * N >= -0.00001) && (((C - _P) & (A - _P)) * N >= -0.00001)); if (tttt != result) { } return(tttt); }