// Token: 0x060002C2 RID: 706 RVA: 0x0000B3DC File Offset: 0x000095DC
        public bool Find()
        {
            this.Quantity = 0;
            IntersectionCircle2Circle2 intersectionCircle2Circle = new IntersectionCircle2Circle2(this.circle, this.arc.Circle);

            if (!intersectionCircle2Circle.Find())
            {
                this.IntersectionType = Intersection.Type.IT_EMPTY;
                return(false);
            }
            if (intersectionCircle2Circle.IntersectionType == Intersection.Type.IT_OTHER)
            {
                this.IntersectionType = Intersection.Type.IT_OTHER;
                return(true);
            }
            Vector2[] array = new Vector2[]
            {
                intersectionCircle2Circle.Point0,
                intersectionCircle2Circle.Point1
            };
            for (int i = 0; i < intersectionCircle2Circle.Quantity; i++)
            {
                if (IntersectionArc2Arc2.Contains(this.arc, array[i]))
                {
                    int quantity = this.Quantity;
                    this.Quantity = quantity + 1;
                    if (quantity == 0)
                    {
                        this.Point0 = array[i];
                    }
                    else
                    {
                        this.Point1 = array[i];
                    }
                }
            }
            this.IntersectionType = ((this.Quantity > 0) ? Intersection.Type.IT_POINT : Intersection.Type.IT_EMPTY);
            return(this.IntersectionType > Intersection.Type.IT_EMPTY);
        }
        // Token: 0x060002DD RID: 733 RVA: 0x0000B900 File Offset: 0x00009B00
        public bool Find()
        {
            int num;

            double[] array;
            bool     flag = IntersectionLine2Circle2.Find(this.line.Origin, this.line.Direction, this.arc.Circle.Center, this.arc.Circle.Radius, out num, out array);

            this.Quantity = 0;
            if (flag)
            {
                Vector2 vector  = this.line.Origin + this.line.Direction * array[0];
                Vector2 vector2 = this.line.Origin + this.line.Direction * array[1];
                if (IntersectionArc2Arc2.Contains(this.arc, vector))
                {
                    this.Point0     = vector;
                    this.Parameter0 = array[0];
                    int quantity = this.Quantity;
                    this.Quantity = quantity + 1;
                    if (num == 2 && IntersectionArc2Arc2.Contains(this.arc, vector2))
                    {
                        this.Point1     = vector2;
                        this.Parameter1 = array[1];
                        quantity        = this.Quantity;
                        this.Quantity   = quantity + 1;
                    }
                }
                else if (num == 2 && IntersectionArc2Arc2.Contains(this.arc, vector2))
                {
                    this.Point0     = vector2;
                    this.Parameter0 = array[1];
                    int quantity = this.Quantity;
                    this.Quantity = quantity + 1;
                }
            }
            this.IntersectionType = ((this.Quantity > 0) ? Intersection.Type.IT_POINT : Intersection.Type.IT_EMPTY);
            return(this.IntersectionType > Intersection.Type.IT_EMPTY);
        }
示例#3
0
        // Token: 0x060002CE RID: 718 RVA: 0x0000B534 File Offset: 0x00009734
        public bool Find()
        {
            this.Quantity = 0;
            Circle2 circle  = this.arc0.Circle;
            Circle2 circle2 = this.arc1.Circle;
            IntersectionCircle2Circle2 intersectionCircle2Circle = new IntersectionCircle2Circle2(circle, circle2);

            if (!intersectionCircle2Circle.Find())
            {
                this.IntersectionType = Intersection.Type.IT_EMPTY;
                return(false);
            }
            if (intersectionCircle2Circle.IntersectionType != Intersection.Type.IT_OTHER)
            {
                Vector2[] array = new Vector2[]
                {
                    intersectionCircle2Circle.Point0,
                    intersectionCircle2Circle.Point1
                };
                for (int i = 0; i < intersectionCircle2Circle.Quantity; i++)
                {
                    if (IntersectionArc2Arc2.Contains(this.arc0, array[i]) && IntersectionArc2Arc2.Contains(this.arc1, array[i]))
                    {
                        int quantity = this.Quantity;
                        this.Quantity = quantity + 1;
                        if (quantity == 0)
                        {
                            this.Point0 = array[i];
                        }
                        else
                        {
                            this.Point1 = array[i];
                        }
                    }
                }
                this.IntersectionType = ((this.Quantity > 0) ? Intersection.Type.IT_POINT : Intersection.Type.IT_EMPTY);
                return(this.IntersectionType > Intersection.Type.IT_EMPTY);
            }
            if (IntersectionArc2Arc2.Contains(this.arc1, this.arc0.StartPoint))
            {
                if (IntersectionArc2Arc2.Contains(this.arc1, this.arc0.EndPoint))
                {
                    this.IntersectionType = Intersection.Type.IT_OTHER;
                    this.IntersectionArc  = this.arc0;
                }
                else if (!this.arc0.StartPoint.Equals(this.arc1.EndPoint))
                {
                    this.IntersectionType = Intersection.Type.IT_OTHER;
                    this.IntersectionArc  = new Arc2(this.arc0.Circle, this.arc0.StartAngle, this.arc1.StartAngle + this.arc1.DeltaAngle - this.arc0.StartAngle);
                }
                else
                {
                    this.IntersectionType = Intersection.Type.IT_POINT;
                    this.Quantity         = 1;
                    this.Point0           = this.arc0.StartPoint;
                }
                return(true);
            }
            if (IntersectionArc2Arc2.Contains(this.arc1, this.arc0.EndPoint))
            {
                if (!this.arc0.EndPoint.Equals(this.arc1.StartPoint))
                {
                    this.IntersectionType = Intersection.Type.IT_OTHER;
                    this.IntersectionArc  = new Arc2(this.arc0.Circle, this.arc1.StartAngle, this.arc0.StartAngle + this.arc0.DeltaAngle - this.arc1.StartAngle);
                }
                else
                {
                    this.IntersectionType = Intersection.Type.IT_POINT;
                    this.Quantity         = 1;
                    this.Point0           = this.arc1.StartPoint;
                }
                return(true);
            }
            if (IntersectionArc2Arc2.Contains(this.arc0, this.arc1.StartPoint))
            {
                this.IntersectionType = Intersection.Type.IT_OTHER;
                this.IntersectionArc  = this.arc1;
                return(true);
            }
            this.IntersectionType = Intersection.Type.IT_EMPTY;
            return(false);
        }