ORD路线两个linearElement中间插入CircularArc圆弧方法返回数组是空

public unsafe static CircularArc[] CreateTangentToTwoElementsRadius(LinearElement backElement, LinearElement aheadElement, double radius, double tolerance)

使用此接口实现 此功能,但是返回数组是空

  • 下面是测试用例代码,您可以参考修改:

                BGEO.DPoint3d centerPoint = new BGEO.DPoint3d(1000, 1000, 1000);
                BGEO.DPoint3d centerPoint2 = new BGEO.DPoint3d(2000, 1000, 1000);
                BGEO.DPoint3d centerPoint3 = new BGEO.DPoint3d(3000, 1000, 1000);
    
                BGEO.DPoint3d point1 = new BGEO.DPoint3d(700.0, 1120.0, 0.0);
                BGEO.DPoint3d point2 = new BGEO.DPoint3d(1500.0, 1080.0, 0.0);
                BCG.Line line1 = new BCG.Line(point1, point2);
    
                BGEO.DPoint3d point3 = new BGEO.DPoint3d(0.0, 0.0, 0.0);
                BGEO.DPoint3d point4 = new BGEO.DPoint3d(4500.0, 1580.0, 2000.0);
                BCG.Line line2 = new BCG.Line(point3, point4);
    
                BCG.Spiral spiral1 = new BCG.Spiral(centerPoint, 0, 500, 199, 0.0, SpiralType.Clothoid, BCG.Hand.CounterClockwise);
                BCG.Spiral spiral2 = new BCG.Spiral(centerPoint, 0, 1000, 999, 0.0, SpiralType.Clothoid, BCG.Hand.CounterClockwise);
    
                double radius = 1000;
                double sweepAngle = 0.2;
                double startDirection = 0.1;
                
                CircularArc arc2 = new BCG.CircularArc(centerPoint3, radius, startDirection, sweepAngle);
    
                CircularArc[] results = CircularArc.CreateTangentToCircleThruPointRadius(arc, centerPoint3, centerPoint2, 10000, 0.0001);
                Assert.IsNotNull(results[0]);
    
                results = CircularArc.CreateTangentToLineThruPointRadius(line1, centerPoint3, centerPoint2, 10000, 0.0001);
                Assert.IsNotNull(results[0]);
    
                results = CircularArc.CreateTangentToLineThruPoint(line1, centerPoint3, centerPoint2, 0.0001);
                Assert.IsNotNull(results[0]);
    
                results = CircularArc.CreateTangentToSpiralThruPointRadius(spiral1, centerPoint3, centerPoint2, 10000, 0.0001);
                Assert.IsNotNull(results[0]);
    
                results = CircularArc.CreateTangentToTwoLinesThruPoint(line1, line2, centerPoint3, 0.0001);
                Assert.IsNotNull(results[0]);
    
                results = CircularArc.CreateTangentToTwoCirclesThruPoint(arc, arc2, centerPoint3, 0.0001);
                Assert.IsNotNull(results[0]);
    
                results = CircularArc.CreateTangentToLineAndCircleThruPoint(line1, arc2, centerPoint3, 0.0001);
                Assert.IsNotNull(results[0]);
    
                results = CircularArc.CreateTangentToLineAndCircleRadius(line1, arc2, 10000, 0.0001);
                Assert.IsNotNull(results[0]);
    
                results = CircularArc.CreateTangentToTwoLinesRadius(line1, line2, 10000, 0.0001);
                Assert.IsNotNull(results[0]);
    
                results = CircularArc.CreateTangentToTwoCirclesRadius(arc, arc2, 10000, 0.0001);
                Assert.IsNotNull(results[0]);
    
                //Needs Work
                //results = CircularArc.CreateTangentToSpiralTwoThruPoints(spiral2, centerPoint3, centerPoint2, 0.0001);
                //Assert.IsNotNull(results[0]);
    
                results = CircularArc.CreateTangentToLineTwoThruPoints(line1, centerPoint3, centerPoint2, 0.0001);
                Assert.IsNotNull(results[0]);
    
                results = CircularArc.CreateTangentToCircleTwoThruPoints(arc2, centerPoint3, centerPoint2, 0.0001);
                Assert.IsNotNull(results[0]);
    
                results = CircularArc.CreateTangentToTwoElementsThruPoint(arc, arc2, centerPoint3, 0.0001);
                Assert.IsNotNull(results[0]);
    
                results = CircularArc.CreateTangentToTwoElementsRadius(arc, arc2, 10000, 0.0001);
                Assert.IsNotNull(results[0]);

  • 测试结果第1,6,10,13,14结果返回结果是0个,请问这个传半径的时候需要换算单位吗