Ar c направление развертки в два раза. js - PullRequest
0 голосов
/ 08 марта 2020

two. js библиотека имеет следующую функцию:

makeArcSegment two.makeArcSegment(ox, oy, ir, or, sa, ea, res);

Я вычисляю свои параметры следующим образом:

var prevPt = points[i - 1];

var dxNext = nextPt.x - pt.x;
var dyNext = nextPt.y - pt.y;
var angleNext = Math.atan2(dyNext, dxNext);

var dxPrev = prevPt.x - pt.x;
var dyPrev = prevPt.y - pt.y;
var anglePrev = Math.atan2(dyPrev, dxPrev);

var innerRadius = 0;
var outerRadius = 20;

var arc = two.makeArcSegment(pt.x, pt.y, innerRadius, outerRadius, anglePrev, angleNext)

И мой вывод выглядит неожиданно.

enter image description here

В первом узле (после строки длиной 225,46) направление развертки направлено против часовой стрелки. На втором узле (после 142.35) направление развертки по часовой стрелке. Как заставить его всегда быть против часовой стрелки?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 10 марта 2020

Это обходной путь, который я нашел.

      if (anglePrev < 0.0)
      {
          anglePrev += Math.PI * 2.0;
      }
      if (angleNext < 0.0)
      {
          angleNext += Math.PI * 2.0;
      }
      if (angleNext > anglePrev)
      {
          anglePrev += Math.PI * 2.0;
      }
0 голосов
/ 10 марта 2020

Согласно это if you make the arc.endAngle less than the arc.startAngle then it should go in the opposite direction..

Так что вы можете попытаться нарисовать между min(prev,next) и max(prev,next) в качестве обходного пути.

Также сделайте все углы положительными (добавляя 2 * Пи к отрицательным).

Похоже, серьезный недостаток библиотеки.

...