0

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)

我的输出有点出乎意料。

在此处输入图像描述

在第一个节点(长度为 225.46 的线之后),扫描方向为逆时针方向。在第二个节点(142.35 之后),扫描方向为顺时针方向。如何强制它始终为逆时针方向?

谢谢。

4

2 回答 2

0

据此。_ 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*Pi 添加到负数)。

看起来像图书馆的严重缺陷。

于 2020-03-10T01:39:40.713 回答
0

这是我找到的解决方法。

      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;
      }
于 2020-03-10T07:24:57.443 回答