この写真を見てください:
2次元の点であるp1、p2、および中心を知っています。角度 p1-center-p2 と半径 r も知っています。
キャンバスの関数 arc() を使用して、円弧の塗りつぶされた部分だけを描画するにはどうすればよいですか?
編集
私が実際に行う必要があるのは、与えられた 2 点と角度で、p1-center-p2 角度が与えられた角度になるように、これら 2 点間に曲線を描くことです。
私がしていることは、それらの 2 点を含む円周の中心と半径を計算することです。次に、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];
}