Построить дугу в Eyeshot

Я пытаюсь построить дуги, применяя Eyeshot 12. Я использую конструктор: Дуга (плоскость, центральная точка 2D, начальная точка 2D, конечная точка 2D). У меня две дуги. Конечная точка одного из них точно такая же, как начальная точка другого. Несмотря на это, Eyeshot строит дуги с значительным зазором между этими точками. Это баг, или я что-то не так делаю?

Параметры моих дуг следующие: Дуга 1: центральная точка 2D = (-0.655572, 0.160451), начальная точка 2D = (-0.008477, 0.049511), конечная точка 2D = (0.000385, 0.1271105). Дуга 2: центральная точка 2D = (-1.789206, 0.218072), начальная точка 2D = (0.000385, 0.1271105), конечная точка 2D = (0.002240, 0.177704).


person Jnadieri    schedule 17.02.2020    source источник


Ответы (1)


Радиус каждой дуги определяется как расстояние между центром и начальной точкой. Таким образом, если вы пройдете конечную точку, которая находится на другом расстоянии от центра, дуга не пройдет через конечную точку. В обеих ваших дугах эти расстояния разные, и поэтому вы получаете разрыв:

  • C1-Sta1 = 0,65653607869255759
  • С1-Конец1 = 0,65680375668022029
  • C2-Sta2 = 1,7919012087063424
  • C2-Конец2 = 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);
person sgiulia    schedule 18.02.2020