Maison interface Web Tutoriel H5 Résumé de plusieurs méthodes pour dessiner des ellipses sur HTML5 Compétences du didacticiel Canvas_html5

Résumé de plusieurs méthodes pour dessiner des ellipses sur HTML5 Compétences du didacticiel Canvas_html5

May 16, 2016 pm 03:50 PM
canvas Dessine une ellipse

Présentation
Canvas en HTML5 ne fournit pas directement de méthode pour dessiner des ellipses. Ce qui suit est un résumé de plusieurs méthodes de dessin. Chaque méthode a ses propres avantages et inconvénients, qu’il convient de choisir en fonction de la situation. Les paramètres de chaque méthode sont les mêmes :
context est l'objet d'environnement de dessin 2D de Canvas,
x est l'abscisse du centre de l'ellipse,
y est l'ordonnée du centre de l'ellipse,
a est la longueur du demi-axe transversal de l'ellipse,
b est la longueur du demi-axe longitudinal de l'ellipse.
Méthode d'équation paramétrique
Cette méthode utilise l'équation paramétrique de l'ellipse pour dessiner l'ellipse

Copier le code
Le code est le suivant :

//----------Utiliser des équations paramétriques pour dessiner des ellipses---------- ------ -----
//Les paramètres x et y de la fonction sont le centre de l'ellipse a, b sont le demi-axe transversal et la longueur du demi-axe vertical de ; l'ellipse respectivement, qui ne peut pas être 0 en même temps
//Ceci L'inconvénient de la méthode est que lorsque linWidth est plus large et que l'ellipse est plus plate
//L'extrémité de l'axe long à l'intérieur de l'ellipse est plus nette, pas lisse et l'efficacité est faible
fonction ParamEllipse(context, x, y, a, b)
{
//max est égal à 1 divisé par la plus grande des valeurs des grands axes a et b
//i augmente de 1/max à chaque boucle, indiquant une augmentation en degrés
//Cela fonctionne Faites en sorte que le chemin (arc) tracé dans chaque cycle soit proche de 1 pixel
var step = (a > ; b) ? 1 / a : 1 / b;
context.beginPath();
context.(x a, y); //Commencer à dessiner à partir de l'extrémité gauche de l'ellipse
for (var i = 0; i < 2 * Math.PI; i = étape)
{
//L'équation paramétrique est x = a * cos(i), y = b * sin(i),
//Le paramètre est i, indiquant le degré (radians)
context.lineTo(x a * Math.cos(i), y b * Math.sin(i)
}
context.closePath( );
context.stroke();
};


Méthode de compression uniforme Cette méthode utilise le principe de compression uniforme en mathématiques pour compresser uniformément un cercle en ellipse. Théoriquement, une ellipse standard peut être obtenue. Le code suivant provoquera le problème des largeurs de ligne incohérentes. Voir 5 pour le commentaire de Lou Simonleung.


Copier le codeLe code est le suivant :
//---- -----Méthode de compression uniforme pour dessiner une ellipse-------------------
//La méthode consiste à utiliser la méthode de l'arc pour dessiner une cercle et combinez-le avec l'échelle
//Échelle dans la direction de l'axe horizontal ou vertical (compression uniforme)
//Le bord de l'ellipse dessinée par cette méthode est plus épais car il est plus proche de l'extrémité de l'axe long , et la largeur du trait à l'extrémité de l'axe long est la valeur normale
//Côté Plus elle est proche de l'axe mineur, plus l'ellipse sera plate et fine, et même les discontinuités, ce qui est le résultat de l'échelle
//Ce défaut est parfois un avantage, comme pour exprimer l'effet tridimensionnel d'un anneau (halo planétaire)
//Pour le cas où le paramètre a ou b vaut 0, cette méthode n'est pas applicable
function EvenCompEllipse(context, x, y, a, b)
{
context.save();
//Sélectionnez le plus grand de a et b comme paramètre de rayon de la méthode arc
var r = (a > b) ? a : b;
var ratioX = a / r; //Rapport de mise à l'échelle de l'axe horizontal
var ratioY = b / r; context.scale(ratioX, ratioY); //mise à l'échelle (compression uniforme)
context.beginPath();
// Dessinez dans le sens inverse des aiguilles d'une montre en partant de l'extrémité gauche de l'ellipse
context.moveTo((x a) / ratioX, y / ratioY);
context.arc(x / ratioX, y / ratioY, r, 0, 2 * Math. PI
context.closePath(); );
context.restore();
};



Méthode 1 de la courbe Er de Bézier cubique

L'ellipse de dessin de la courbe de Bézier cubique est une approximation en réalité dessin, et c'est aussi une approximation en théorie. Mais en raison de sa grande efficacité, il est souvent utilisé pour dessiner des ellipses en infographie vectorielle, mais je ne suis pas très clair sur la théorie spécifique. Le degré de rapprochement réside dans le choix des positions des deux points de contrôle. La position du point de contrôle de cette méthode a été obtenue par mes propres expériences, et la précision est correcte


Copiez le code
. Le code est le suivant :
//---------Utiliser la courbe de Bézier cubique pour simuler l'ellipse 1---------------- -----
//Cette méthode produira également le phénomène selon lequel lorsque la largeur de ligne est plus large et l'ellipse est plus plate,
//l'extrémité de l'axe long est plus nette et non lisse
fonction BezierEllipse1(contexte , x, y, a, b )
{
//La clé est le réglage des deux points de contrôle dans bezierCurveTo
//0,5 et 0,6 sont les deux coefficients clés (obtenus à partir d'expériences dans cette fonction )
var ox = 0.5 * a,
oy = 0.6 * b;
context.save();
context.translate(x, y>
context.beginPath();
//De l'ellipse verticale L'extrémité inférieure de l'axe commence à dessiner dans le sens inverse des aiguilles d'une montre
context.moveTo(0, b);
context.bezierCurveTo(ox, b, a, oy, a, 0);
context.bezierCurveTo(a, -oy , ox, -b, 0, -b);
context.bezierCurveTo(-ox, -b, -a, -oy, -a, 0); >context.bezierCurveTo(-a, oy, - ox, b, 0, b);
context.closePath();
context.stroke(); };


Méthode de courbe de Bézier cubique 2
Cette méthode a été modifiée à partir d'une réponse à un message dans StackOverFlow. Elle a une plus grande précision et est également une méthode couramment utilisée pour dessiner des ellipses. >

Copier le codeLe code est le suivant :
//--------- Utilisez la courbe de Bézier cubique pour simuler l'ellipse 2 ---------------------
//Cette méthode produira également lorsque lineWidth est plus large et que l'ellipse est plus plate
//, l'extrémité de l'axe long est pointue et non lisse
//Cette méthode est plus précise que la méthode Bézier précédente, mais légèrement moins efficace
fonction BezierEllipse2(ctx, x, y, a, b)
{
var k = .5522848,
ox = a * k, // Décalage du point de contrôle horizontal
oy = b * k; // Décalage du point de contrôle vertical Quantité
ctx.beginPath( );
//Dessinez quatre courbes de Bézier cubiques dans le sens des aiguilles d'une montre en partant de l'extrémité gauche de l'ellipse
ctx.moveTo(x - a, y);
ctx.bezierCurveTo (x - a, y - oy,); x - boeuf, y - b, x, y - b);
ctx.bezierCurveTo(x ox, y - b, x a, y - oy, x a, y);
ctx.bezierCurveTo(x a, y); oy, x ox, y b, x, y b);
ctx.bezierCurveTo(x - ox, y b, x - a, y oy, x - a, y); >ctx.stroke();
};



Méthode raster
Cette méthode peut exploiter les pixels selon les fonctionnalités du canevas, en utilisant des algorithmes de base dans les graphiques pour dessiner des ellipses. Par exemple, l'algorithme de dessin d'ellipse médiane, etc.
Un exemple est un article de blog de l'ami jardinier "Doudou Gou" "Classe d'amélioration du canevas HTML5 (1) - Graphiques raster (1) Algorithme de dessin de cercle médian". Cette méthode est relativement « originale », présente une grande flexibilité, une grande efficacité et une grande précision, mais elle est relativement compliquée à mettre en œuvre une fonction précieuse pour dessiner des ellipses. Par exemple, lorsque la largeur du trait change, l’algorithme est plus compliqué. Bien qu'il s'agisse d'un algorithme pour dessiner des cercles, l'algorithme pour dessiner des ellipses lui est similaire. Vous pouvez vous y référer ci-dessous. Démo Voici plusieurs démonstrations de dessin de fonctions elliptiques en plus de la méthode raster. Le code de démonstration est le suivant :





Copier le code.
Le code est le suivant :
;button onclick="execDraw(); " type="button">Execute >




Notez que pour exécuter le code avec succès, un navigateur prenant en charge HTML5 Canvas est requis.
Écrire un blog pour la première fois m'a pris une journée entière, ce n'était pas facile ! Le modèle de peau sombre de Blog Park ne s'affiche pas bien pour le code inséré. J'ai pris beaucoup de peine pour comprendre le format du code !
Déclaration de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelles écoles utilisent la toile ? Quelles écoles utilisent la toile ? Aug 18, 2023 pm 05:59 PM

Les écoles utilisant Canvas comprennent l'Université de Stanford, le MIT, l'Université de Columbia, l'Université de Californie, Berkeley, etc. Introduction détaillée : 1. L'Université de Stanford utilise Canvas comme principale plate-forme d'apprentissage en ligne. Les enseignants et les étudiants de l'Université de Stanford utilisent Canvas pour gérer et communiquer le contenu des cours et apprendre grâce à des fonctions telles que les discussions en ligne, les soumissions de devoirs et les examens. L'Institut polytechnique et le MIT utilisent également Canvas comme système de gestion de l'apprentissage en ligne et gèrent les cours via la plateforme Canvas 3. Columbia University, etc.

Que sont les plug-ins de flèches de canevas ? Que sont les plug-ins de flèches de canevas ? Aug 21, 2023 pm 02:14 PM

Les plug-ins de flèches du canevas incluent : 1. Fabric.js, qui possède une API simple et facile à utiliser et peut créer des effets de flèche personnalisés ; 2. Konva.js, qui fournit la fonction de dessiner des flèches et peut créer diverses flèches ; styles ; 3. Pixi.js, qui fournit des fonctions de traitement graphique riches et peut obtenir divers effets de flèche ; 4. Two.js, qui peut facilement créer et contrôler des styles de flèches et des animations 5. Arrow.js, qui peut créer divers effets de flèche ; ; 6. Rough .js, vous pouvez créer des flèches dessinées à la main, etc.

Quels sont les détails de l'horloge en toile ? Quels sont les détails de l'horloge en toile ? Aug 21, 2023 pm 05:07 PM

Les détails de l'horloge sur toile incluent l'apparence de l'horloge, les graduations, l'horloge numérique, les aiguilles des heures, des minutes et des secondes, le point central, les effets d'animation, d'autres styles, etc. Introduction détaillée : 1. Apparence de l'horloge, vous pouvez utiliser Canvas pour dessiner un cadran circulaire comme apparence de l'horloge, et vous pouvez définir la taille, la couleur, la bordure et d'autres styles du cadran 2. Lignes d'échelle, tracez des lignes d'échelle dessus ; le cadran pour représenter les heures ou les minutes. Position ; 3. Horloge numérique, vous pouvez dessiner une horloge numérique sur le cadran pour indiquer l'heure et les minutes actuelles ; 4. Aiguille des heures, aiguille des minutes, aiguille des secondes, etc.

Quelles versions de html2canvas existe-t-il ? Quelles versions de html2canvas existe-t-il ? Aug 22, 2023 pm 05:58 PM

Les versions de html2canvas incluent html2canvas v0.x, html2canvas v1.x, etc. Introduction détaillée : 1. html2canvas v0.x, qui est une première version de html2canvas. La dernière version stable est la v0.5.0-alpha1. Il s'agit d'une version mature qui a été largement utilisée et vérifiée dans de nombreux projets ; 2. html2canvas v1.x, il s'agit d'une nouvelle version de html2canvas.

Apprenez le cadre de canevas et expliquez en détail le cadre de canevas couramment utilisé Apprenez le cadre de canevas et expliquez en détail le cadre de canevas couramment utilisé Jan 17, 2024 am 11:03 AM

Explorez le framework Canvas : Pour comprendre quels sont les frameworks Canvas couramment utilisés, des exemples de code spécifiques sont nécessaires. Introduction : Canvas est une API de dessin fournie en HTML5, grâce à laquelle nous pouvons obtenir des graphiques et des effets d'animation riches. Afin d'améliorer l'efficacité et la commodité du dessin, de nombreux développeurs ont développé différents frameworks Canvas. Cet article présentera certains frameworks Canvas couramment utilisés et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre comment utiliser ces frameworks. 1.Cadre EaselJSEa

uniapp implémente comment utiliser Canvas pour dessiner des graphiques et des effets d'animation uniapp implémente comment utiliser Canvas pour dessiner des graphiques et des effets d'animation Oct 18, 2023 am 10:42 AM

Comment utiliser Canvas pour dessiner des graphiques et des effets d'animation dans Uniapp nécessite des exemples de code spécifiques 1. Introduction Avec la popularité des appareils mobiles, de plus en plus d'applications doivent afficher divers graphiques et effets d'animation sur le terminal mobile. En tant que framework de développement multiplateforme basé sur Vue.js, uniapp offre la possibilité d'utiliser un canevas pour dessiner des graphiques et des effets d'animation. Cet article présentera comment Uniapp utilise Canvas pour obtenir des effets de graphique et d'animation, et donnera des exemples de code spécifiques. 2. toile

Quelles sont les propriétés de la toile tkinter ? Quelles sont les propriétés de la toile tkinter ? Aug 21, 2023 pm 05:46 PM

Les attributs du canevas tkinter incluent bg, bd, relief, width, height, curseur, highlightbackground, highlightcolor, highlightthickness, insertbackground, insertwidth, selectbackground, selectforeground, les attributs xscrollcommand, etc. Présentation détaillée

Explorez le rôle puissant et l'application du canevas dans le développement de jeux Explorez le rôle puissant et l'application du canevas dans le développement de jeux Jan 17, 2024 am 11:00 AM

Comprendre la puissance et l'application du canevas dans le développement de jeux Présentation : Avec le développement rapide de la technologie Internet, les jeux Web deviennent de plus en plus populaires parmi les joueurs. En tant qu'élément important du développement de jeux Web, la technologie Canvas a progressivement émergé dans le développement de jeux, démontrant sa puissance et ses applications puissantes. Cet article présentera le potentiel du canevas dans le développement de jeux et démontrera son application à travers des exemples de code spécifiques. 1. Introduction à la technologie Canvas Canvas est un nouvel élément HTML5 qui nous permet d'utiliser

See all articles