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之后),扫描方向是clockwise.How,我是否强制它总是逆时针?
谢谢。
发布于 2020-03-10 09:39:41
根据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)之间进行绘制作为变通方法。
还要使所有角度都为正(将2*Pi加到负角度上)。
看起来像是库的严重缺陷。
发布于 2020-03-10 15:24:57
这就是我找到的变通方法。
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;
}https://stackoverflow.com/questions/60588164
复制相似问题