Afficher pour cette page la console du navigateur car les scripts
contiennent des instructions provisoires de type console.log(...)
Extrait de la feuille de style interne de cette page web :
En appliquant cette classe à un canevas, celui-ci devient 'responsive'.
En appliquant la classe 'toile' à un élément canvas celui-ci devient 'responsive'.
Les propriétés CSS "width & height" sont appliquées à l'élément canvas via la classe "toile".
Il y a un gros 'bug' dans notre code : un segment disgracieux entre les deux cercles !
Par ailleurs le premier cercle est borduré d'orange alors que je ne voulais qu'un remplissage en jaune ...
Pour dessiner un cercle (ou un arc de cercle) il faut utiliser la méthode arc().
Sixième argument facultatif : un Booléen qui, si il vaut true, indique que l'arc sera dessiné dans le sens inverse des
aiguilles d'une montre entre les deux angles. Par défaut, la valeur est le sens des aiguilles d'une montre.
Les deux derniers paramètres doivent être exprimés en radians.
Pour l'API Canvas, un cercle c'est un arc de cercle de 360% (ou 2 π radians) : point de départ = 0 et point d'arrivée = 2 π radians.
Pour convertir des degrés en radians, vous pouvez utiliser l'expression suivante : radians = Math.PI/180 * degres.
Un cercle c'est un carré dont les angles arrondis ont pour radius la moitié du côté.
Rappels mathématiques : un arc de cercle est une portion de cercle limitée par deux points A et B situés sur la circonférence.
Ci-dessous le deuxième canevas comprenant deux demi-cercles remplis par une couleur orange.
La balise canvas définit un repère cartésien de 300 par 300 et est identifiée "canevas2".
Les arcs de cercle sont dessinés par défaut, dans le sens des aiguilles d'une montre en partant de l'est.
Voir schéma ci-dessous.
Le schéma ci-dessous vous indique que le point 0 est aussi le point 2π (radians).
La méthode ellipse() est récente et n'est pas encore implémentée sur tous les navigateurs.
Je présente donc plus loin dans le chapitre une solution alernative.
Pour produire des ellipses ou arcs d'ellipse il faut utiliser la méthode ellipse avec 7 paramètres !
Huitième argument facultatif : Un Boolean optionnel qui s'il vaut true dessine l'ellipse dans le sens antihoraire,
sinon dans le sens horaire.
Ci-dessous le troisième canevas de cette page web avec deux ellipses complètes.
La balise canvas définit un repère cartésien de 400 par 400 et est identifiée "canevas3".
Tous les paramètres sont identiques sauf rx & ry.
Rappels mathématiques : un arc d'ellipse est une portion d'ellipse limitée par deux points A et B situés sur le périmètre.
Ci-dessous un document HTML affichant deux arcs d'ellipse dans un canevas.
Comme pour les arcs de cercle, les arcs d'ellipse sont dessinés dans le sens des aiguilles d'une montre en partant de la gauche.
La balise canvas définit un repère cartésien de 400 par 400 et est identifiée "canevas4".
Vous pouvez me contacter via Facebook pour questions & suggestions :
Page Facebook relative à mon site
Canvas : dessiner cercles, ellipses et arcs (de cercle ou d'ellipse)
Remarque préalable
.toile{width : 60% ; height : auto; }
Dessiner des cercles et des arcs de cercle
Premier canevas de la page : deux cercles
Le code correspondant
Bug
La raison est simple : nous avons oublié de "lever le crayon" entre les deux cercles !
Pour avoir un code qui donne un rendu correct, il suffit d'insérer une instruction juste avant contexte.arc()
du deuxième cercle. Cette instruction est : contexte.beginPath() pour indiquer le début d'un nouvel objet graphique.
Le bon rendu
Le code correspondant
La méthode arc()
Il faut passer cinq paramètres : x, y, r, angle départ, angle fin :
Les autres paramètres sont exprimés en pixels (toujours sans préciser l'unité).
Pour désigner la constante π dans le script on utilise : Math.PI) (propriété PI de l'objet Math).
Dessiner des cercles : astuce
Donc vous pouvez utiliser la méthode roundRect(x,y,cote,cote,[cote/2]).
Dessiner des arcs de cercle
Le script
Donc le script peut s'écrire :
function fcanevas2()
{
var canevas = document.querySelector('#canevas2');
var contexte = canevas.getContext('2d');
var X = canevas.width ;
var Y = canevas.height ;
console.log(X + " " +typeof(X));
console.log(Y + " " +typeof(Y));
contexte.fillStyle ='orange';
contexte.beginPath();
contexte.arc(X/3, Y/2, X/6, 0, Math.PI);
//premier demi cercle
contexte.fill();
contexte.arc(X/3*2, Y/2, X/6, Math.PI, Math.PI*2);
//deuxième demi-cercle
contexte.fill();
}
fcanevas2();
Comment préciser les point de départ et d'arrivée de l'angle ?
Ellipses et arcs d'ellipse
Paramétrer la méthode ellipse
Les paramètres de la méthode sont dans l'ordre :
Dessiner des ellipses
Le script
Donc le script qui en découle :
function fcanevas3()
{
var canevas = document.querySelector('#canevas3');
var contexte = canevas.getContext('2d');
contexte.ellipse(100, 100, 50, 100, 0, 0, 2 * Math.PI);
contexte.stroke();
contexte.beginPath();
contexte.ellipse(300, 300, 100, 50,0, 0, 2 * Math.PI);
contexte.stroke();
}
fcanevas3();
Comme il s'agit d'ellipses complètes le point A vaut zéro et le point B vaut 2 π radians.
Arcs d'ellipse
Le rendu
Les arcs d'ellipse sont deux demi-ellipses mais les points A et B sont différents.
Premier arc d'ellipse : point A : Math.PI ; point B : 2*Math.PI
Deuxième arc d'ellispse : point A : 0 ; point B : Math.PI
Le code correspondant
Donc le script qui en découle :
function fcanevas4()
{
var canevas = ...
var contexte = ...
contexte.strokeStyle ="blue";
contexte.lineWidth =3;
contexte.beginPath();
contexte.ellipse(250,250,100,50,0,Math.PI,2*Math.PI);
contexte.stroke();
contexte.beginPath();
contexte.ellipse(150,150,100,50,0,0, Math.PI);
contexte.stroke();
}
fcanevas4();