コード例 #1
0
ファイル: Plane.cs プロジェクト: 1833183060/autocad-dev
        public Edge method_5(Circle circle)
        {
            Line line = this.method_2(circle.GetPlane());

            if (line == null)
            {
                return(null);
            }
            Edge   edge = circle.Center.PerpendicularOn(line);
            double num  = circle.Radius * circle.Radius;
            double num2 = edge.StartPoint.method_3(edge.EndPoint);
            double num3 = num - num2;

            if (Global.AlmostEquals(num, num2))
            {
                num3 = 0.0;
            }
            if (num3 < 0.0)
            {
                return(null);
            }
            line.DirectionVector.Norm = Math.Sqrt(num3);
            Point startPoint = edge.EndPoint + line.DirectionVector.ToPoint();
            Point endPoint   = edge.EndPoint - line.DirectionVector.ToPoint();

            return(new Edge(startPoint, endPoint));
        }
コード例 #2
0
        public Edge method_8(Circle circle)
        {
            Edge edge  = this.GetPlane().method_5(circle);
            Edge edge2 = circle.GetPlane().method_5(this);

            if (edge == null | edge2 == null)
            {
                return(null);
            }
            return(edge.CollinearOverlap(edge2));
        }
コード例 #3
0
ファイル: Edge.cs プロジェクト: 1833183060/autocad-dev
        public PointSet method_1(Circle circle)
        {
            if (this.Length < 4.94065645841247E-324)
            {
                if (circle.ContainsOnCircumference(this.StartPoint))
                {
                    return(new PointSet
                    {
                        this.startPoint,
                        this.endPoint
                    });
                }
                if (circle.GetPlane().Contains(this.StartPoint))
                {
                    return(new PointSet());
                }
                return(null);
            }
            else
            {
                PointSet pointSet = this.ToLine().method_1(circle);
                if (pointSet == null)
                {
                    return(null);
                }
                switch (pointSet.Count)
                {
                case 0:
                    return(pointSet);

                case 1:
                    if (!this.CollinearContains(pointSet[0]))
                    {
                        pointSet.RemoveAt(0);
                    }
                    return(pointSet);

                case 2:
                    if (!this.CollinearContains(pointSet[1]))
                    {
                        pointSet.RemoveAt(1);
                    }
                    if (!this.CollinearContains(pointSet[0]))
                    {
                        pointSet.RemoveAt(0);
                    }
                    return(pointSet);

                default:
                    return(null);
                }
            }
        }
コード例 #4
0
        public Point method_7(Circle circle)
        {
            Point point = this.getInterSecttion(circle.GetPlane());

            if (point == null)
            {
                return(null);
            }
            if (circle.method_10(point))
            {
                return(point);
            }
            return(null);
        }
コード例 #5
0
 public bool IsCoplanarTo(Circle circle)
 {
     return(this.GetPlane() == circle.GetPlane());
 }