Exemple #1
0
        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);
        }
Exemple #4
0
        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);
        }