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)); }
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)); }
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); } } }
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); }
public bool IsCoplanarTo(Circle circle) { return(this.GetPlane() == circle.GetPlane()); }