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之后),扫描方向为顺时针方向。如何强制使其始终为逆时针方向?
谢谢。
根据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)
之间绘制图形,作为解决方法。
虽然看起来像库的严重缺陷。
这是我找到的解决方法。
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;
}