Date un'occhiata a questa immagine:Come disegnare solo questa parte dell'arco?
So p1, p2, e al centro, che sono punti 2D. Conosco anche l'angolo p1-centro-p2 e il raggio r.
Come posso disegnare solo la parte riempita dell'arco utilizzando l'arco di funzione canvas()?
EDIT
Quello che ho veramente bisogno di fare è, in 2 punti e un angolo, disegnare una linea curva tra questi 2 punti tali che l'angolo p1-centro-p2 è l'angolo determinato.
Quello che faccio è calcolare il centro e il raggio della circonferenza che ha quei 2 punti in esso e ora ho bisogno di disegnare la linea che unisce p1 e p2 e ha l'angolo dato. Questa è la mia funzione per calcolare il centro della circonferenza (che funziona correttamente)
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];
}
Ma io ho altre cose tratte che non voglio cancellare – Ivan
Quello che ho veramente bisogno è qualcosa di simile: moveTo (p1) arcTo (p2, raggio) – Ivan
Questo non sembra funzionare quando p1 ha un componente x diverso da p2: http://i.imgur.com/AKpgv.png – Ivan