Maison  >  Article  >  interface Web  >  Comment puis-je dessiner des courbes douces passant par plusieurs points dans HTML5 Canvas ?

Comment puis-je dessiner des courbes douces passant par plusieurs points dans HTML5 Canvas ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-31 07:19:01365parcourir

How can I draw smooth curves through multiple points in HTML5 Canvas?

Dessiner des courbes douces à travers plusieurs points dans un canevas HTML5

Lors de la création d'applications de dessin, la capture des mouvements de la souris et leur connexion à l'aide de segments de ligne entraînent souvent lignes irrégulières. Pour obtenir des courbes douces, il est nécessaire d'explorer des techniques alternatives.

Fonctions de dessin existantes

HTML5 Canvas fournit trois fonctions de dessin pour relier les points :

  • lineTo : relie deux points avec une ligne droite.
  • quadraticCurveTo : relie trois points avec une courbe quadratique.
  • bezierCurveTo : relie quatre points avec une courbe de Bézier cubique.

L'utilisation de bezierCurveTo pour quatre points peut entraîner des courbures prononcées à chaque intervalle.

Méthode d'approximation : points médians interpolés

Une solution pratique consiste à "courber vers " les milieux de trois points d'échantillonnage consécutifs, créant une courbe continue et lisse :

<code class="javascript">// move to the first point
ctx.moveTo(points[0].x, points[0].y);

for (var i = 1; i < points.length - 2; i++)
{
    var xc = (points[i].x + points[i + 1].x) / 2;
    var yc = (points[i].y + points[i + 1].y) / 2;
    ctx.quadraticCurveTo(points[i].x, points[i].y, xc, yc);
}

// curve through the last two points
ctx.quadraticCurveTo(points[i].x, points[i].y, points[i+1].x, points[i+1].y);</code>

Cette méthode se rapproche de la courbe en créant des points de contrôle situés aux points médians entre les points d'échantillonnage réels, assurant une transition en douceur au points finaux.

Remarque :

Cette méthode ne trace pas de courbe à travers chaque point d'échantillonnage, mais elle produit une courbe visuellement transparente qui se rapproche étroitement de la forme souhaitée. Des méthodes alternatives qui relient par chaque point existent mais sont plus complexes à mettre en œuvre.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn