public InsideTestResult IsInside(IShape4D shape, out bool transformedShape) { transformedShape = true; shape.Transform(this.matrix4D_0); InsideTestResult insideTestResult = ClipUtil.IsInside((IClipper4D)this.blinnClipper4D_0, shape, this.double_1); shape.Transform(this.matrix4D_1); return(insideTestResult); }
public InsideTestResult TryIsInside(Bounds3D bounds) { InsideTestResult insideTestResult1 = InsideTestResult.None; foreach (IClippingTransformer clippingTransformer in this.linkedList_0) { InsideTestResult insideTestResult2 = clippingTransformer.TryIsInside(bounds); if (insideTestResult2 == InsideTestResult.Outside) { return(insideTestResult2); } insideTestResult1 |= insideTestResult2; bounds = DxfUtil.Transform(bounds, clippingTransformer.Matrix); } return(insideTestResult1); }
public InsideTestResult IsInside(IShape4D shape, out bool transformedShape) { transformedShape = false; InsideTestResult insideTestResult1 = InsideTestResult.None; foreach (IClippingTransformer clippingTransformer in this.linkedList_0) { bool transformedShape1; InsideTestResult insideTestResult2 = clippingTransformer.IsInside(shape, out transformedShape1); transformedShape |= transformedShape1; if (insideTestResult2 == InsideTestResult.Outside) { return(insideTestResult2); } insideTestResult1 |= insideTestResult2; if (!transformedShape1) { shape.Transform(clippingTransformer.Matrix); transformedShape = true; } } return(insideTestResult1); }
public static InsideTestResult IsInside( IClipper4D clipper, IShape4D shape, double shapeFlattenEpsilonForBoundsCalculation) { InsideTestResult insideTestResult = InsideTestResult.None; foreach (Polyline4D polyline in (IEnumerable <Polyline4D>)shape.ToPolylines4D(shapeFlattenEpsilonForBoundsCalculation)) { IList <Polyline4D> polyline4DList = clipper.Clip(polyline, shape.IsFilled); switch (polyline4DList.Count) { case 0: insideTestResult |= InsideTestResult.Outside; break; case 1: if (polyline == polyline4DList[0]) { insideTestResult |= InsideTestResult.Inside; break; } insideTestResult = InsideTestResult.BothSides; break; default: insideTestResult = InsideTestResult.BothSides; break; } if (insideTestResult == InsideTestResult.BothSides) { break; } } return(insideTestResult); }