Curvas Bezier


Curva Cuadrática

quadraticCurveTo(cpx, cpy, x, y);

Podemos hacer curvas como si de vectores se tratase. Se ha de especificar 2 puntos y 1 tercero que hace de pivote igual qeu un programa vectorial.

  • cpx: Punto de control o punto ancla de x.
  • cpy: Punto de control o punto ancla de y.
  • x: Punto final de x.
  • y: Punto final de y.

Ejemplo:

En el ejemplo se pueden ver los puntos de anclaje. Los cuadros negros se muestran para representar los puntos de anclaje.

          // Estilos
          ctx.strokeStyle = "red";
          ctx.beginPath();
          ctx.moveTo(20, 20);
          ctx.quadraticCurveTo(100, 300, 200, 20);
          ctx.stroke();

          ctx.fillRect(20, 20, 5, 5);
          ctx.fillRect(100, 300, 5, 5);
          ctx.fillRect(200, 20, 5, 5);


          // Estilos
          ctx.strokeStyle = "red";
          ctx.beginPath();
          ctx.moveTo(400, 20);
          ctx.quadraticCurveTo(200, 200, 300, 20);
          ctx.stroke();

          ctx.fillRect(400, 20, 5, 5);
          ctx.fillRect(200, 300, 5, 5);
          ctx.fillRect(300, 20, 5, 5);


Curva Cúbica

bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);

  • cp1x, cp1y: Punto de control 1 o punto tangente.
  • cp2x, cp2y: Punto de control 2 o punto tangente.
  • x, y: Punto final.

Ejemplo:

Se representa también los puntos de anclaje mediante fillRect, para ilustrar el ejemplo.

          ctx.lineWidth = 10;
          ctx.strokeStyle = "red";
          ctx.fillStyle = "yellow";

          // Curva cúbica
          ctx.beginPath();
          ctx.moveTo(50, 20);
          ctx.bezierCurveTo(50, 100, 200, 100, 200, 150);
          ctx.stroke();

          // Visualizar los puntos
          // Punto inical
          ctx.fillRect(50, 20, 5, 5);
          // Primer punto ancla
          ctx.fillRect(50, 100, 5, 5);
          // Primer punto ancla
          ctx.fillRect(200, 100, 5, 5);
          // Punto final
          ctx.fillRect(200, 150, 5, 5);

results matching ""

    No results matching ""