コード例 #1
0
        public bool DoesLocusIntersect(Loci pobjTarget)
        {
            PointF point = new PointF(0, 0);

            switch (this.Type)
            {
            case LociType.Line:
                switch (pobjTarget.Type)
                {
                case LociType.Line:
                    return(IntersectionHelpers.DoLinesIntersect(this.Line, pobjTarget.Line, ref point));

                case LociType.Point:
                    return(IntersectionHelpers.DoLinesIntersect(this.Line, pobjTarget.CreateLineFromPoint(), ref point));

                case LociType.Rectangle:
                    return(IntersectionHelpers.DoesLineIntersectRectangle(pobjTarget.Rectangle, this.Line));
                }
                break;

            case LociType.Point:
                switch (pobjTarget.Type)
                {
                case LociType.Line:
                    return(IntersectionHelpers.DoLinesIntersect(pobjTarget.Line, this.CreateLineFromPoint(), ref point));

                case LociType.Point:
                    return(this.Point.Equals(pobjTarget.Point));

                case LociType.Rectangle:
                    return(pobjTarget.Rectangle.Contains(this.Point));
                }
                break;

            case LociType.Rectangle:
                switch (pobjTarget.Type)
                {
                case LociType.Line:
                    return(IntersectionHelpers.DoesLineIntersectRectangle(this.Rectangle, pobjTarget.Line));

                case LociType.Point:
                    return(this.Rectangle.Contains(pobjTarget.Point));

                case LociType.Rectangle:
                    return(pobjTarget.Rectangle.IntersectsWith(this.Rectangle));
                }
                break;
            }

            throw new NotSupportedException();
        }
コード例 #2
0
        public bool DoesLocusIntersect(Loci pobjTarget)
        {
            PointF point = new PointF(0, 0);
            switch (this.Type)
            {
                case LociType.Line:
                    switch (pobjTarget.Type)
                    {
                        case LociType.Line:
                            return IntersectionHelpers.DoLinesIntersect(this.Line, pobjTarget.Line, ref point);
                        case LociType.Point:
                            return IntersectionHelpers.DoLinesIntersect(this.Line, pobjTarget.CreateLineFromPoint(), ref point);
                        case LociType.Rectangle:
                            return IntersectionHelpers.DoesLineIntersectRectangle(pobjTarget.Rectangle, this.Line);
                    }
                    break;
                case LociType.Point:
                    switch (pobjTarget.Type)
                    {
                        case LociType.Line:
                            return IntersectionHelpers.DoLinesIntersect(pobjTarget.Line, this.CreateLineFromPoint(), ref point);
                        case LociType.Point:
                            return this.Point.Equals(pobjTarget.Point);
                        case LociType.Rectangle:
                            return pobjTarget.Rectangle.Contains(this.Point);
                    }
                    break;
                case LociType.Rectangle:
                    switch (pobjTarget.Type)
                    {
                        case LociType.Line:
                            return IntersectionHelpers.DoesLineIntersectRectangle(this.Rectangle, pobjTarget.Line);
                        case LociType.Point:
                            return this.Rectangle.Contains(pobjTarget.Point);
                        case LociType.Rectangle:
                            return pobjTarget.Rectangle.IntersectsWith(this.Rectangle);
                    }
                    break;
            }

            throw new NotSupportedException();
        }