Посмотрите на эту картинку:
Я знаю p1, p2 и центр, которые являются 2d точками.
Я также знаю угол p1-center-p2 и радиус r.
Как нарисовать только заполненную часть дуги, используя функцию дуги canvas ()?
EDIT
Что мне действительно нужно, так это, учитывая 2 точки и угол, провести кривую линию между этими 2 точками так, чтобы угол p1-center-p2 был заданным углом.
Что я делаю, так это вычисляю центр и радиус окружности, в которой есть эти 2 точки, и теперь мне нужно нарисовать линию, которая соединяет р1 и р2 и имеет заданный угол.
Это моя функция для расчета центра окружности (которая работает правильно)
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];
}