看看这张照片:
我知道 p1、p2 和中心,它们是 2d 点。我也知道角度 p1-center-p2 和半径 r。
如何使用画布的函数 arc() 仅绘制弧的填充部分?
编辑
我真正需要做的是,给定 2 个点和一个角度,在这 2 个点之间画一条曲线,使得 p1-center-p2 角度是给定的角度。
我所做的是计算其中包含这两个点的圆心和半径,现在我需要绘制连接 p1 和 p2 并具有给定角度的线。这是我计算圆周中心的函数(正常工作)
function getCenter(v0x, v0y, v1x, v1y, curve) {
// result = p0
resx = parseFloat(v0x);
resy = parseFloat(v0y);
// tmpvec = (p1 - p0) * .5
tmpx = (v1x - v0x) / 2;
tmpy = (v1y - v0y) / 2;
// result += tmpvec
resx = resx + tmpx;
resy = resy + tmpy;
// rotate 90 tmpvec
tmptmpx = tmpx;
tmptmpy = tmpy;
tmpy = -tmptmpx;
tmpx = tmptmpy;
// tmpvec *= 1/tan(c/2)
tmpx *= 1/Math.tan(curve/2);
tmpy *= 1/Math.tan(curve/2);
// return res + tmpvec
return [resx+tmpx, resy+tmpy];
}