0

我正在尝试构建应用 Eyeshot 12 的弧线。我使用构造函数:Arc(Plane, 2D center point, 2D start point, 2D end point)。我有两条弧线。其中一个的终点与另一个的起点完全相同。尽管如此,Eyeshot 还是构建了这些点之间存在显着差距的弧线。这是一个错误,还是我做错了什么?

我的圆弧的参数如下:Arc1:2D中心点=(-0.655572, 0.160451),2D起点=(-0.008477, 0.049511),2D终点=(0.000385, 0.1271105)。Arc2:二维中心点 = ( -1.789206, 0.218072),二维起点 = ( 0.000385, 0.1271105),二维终点 = ( 0.002240, 0.177704)。

4

1 回答 1

1

每条圆弧的半径定义为圆心到起点的距离。因此,如果您通过与中心距离不同的端点,则圆弧将不会通过端点。在你的两条弧线中,这些距离是不同的,这就是你得到差距的原因:

  • C1-Sta1 = 0.65653607869255759
  • C1-End1 = 0.65680375668022029
  • C2-Sta2 = 1.7919012087063424
  • C2-End2 = 1.7919007635301683

因此,如果您希望第一条弧线在与第二条弧线相同的点处结束,则需要将该点视为起点,然后恢复弧线的方向:

            Plane pl = Plane.XY;

            Point2D c1 = new Point2D(-0.655572, 0.160451);
            Point2D c2 = new Point2D(-1.789206, 0.218072);

            Point2D s1 = new Point2D(-0.008477, 0.049511);
            Point2D s2 = new Point2D(0.000385, 0.1271105);

            Point2D e1 = new Point2D(0.000385, 0.1271105);
            Point2D e2 = new Point2D(0.002240, 0.177704);

            Plane plInv = new Plane(pl.Origin, pl.AxisY, pl.AxisX);
            Arc a1 = new Arc(plInv,plInv.Project(pl.PointAt(c1)), plInv.Project(pl.PointAt(e1)), plInv.Project(pl.PointAt(s1)));
            a1.Reverse();

            Arc a2 = new Arc(pl,c2,s2,e2);
于 2020-02-18T10:40:56.177 回答