two.js中的弧线扫掠方向

问题描述 投票:0回答:2

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之后),扫描方向为顺时针方向。如何强制使其始终为逆时针方向?

谢谢。

javascript canvas geometry drawing two.js
2个回答
0
投票

根据this 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)之间绘制图形,作为解决方法。

虽然看起来像库的严重缺陷。


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;
      }
© www.soinside.com 2019 - 2024. All rights reserved.