Pregunta

Echa un vistazo a esta foto:

enter image description here

Conozco P1, P2 y Center, que son puntos 2D. También conozco el ángulo P1-Center-P2 y el radio r.

¿Cómo puedo dibujar solo la parte llena del arco utilizando la función de lienzo Arc ()?

EDITAR

Lo que realmente necesito hacer es, dados 2 puntos y un ángulo, dibujar una línea curva entre estos 2 puntos de modo que el ángulo P1-Center-P2 es el ángulo dado.

Lo que hago es calcular el centro y el radio de la circunferencia que tiene esos 2 puntos y ahora necesito dibujar la línea que se une a P1 y P2 y tiene el ángulo dado. Esta es mi función para calcular el centro de la circunferencia (que funciona correctamente)

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];
}

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top