Les formes
Les formes sont les éléments visibles d'un modèle Zdog. Toutes héritent des propriétés et méthodes d'Anchor et de Shape.
Rect
Un rectangle. Définissez sa taille avec width et height. Valeurs par défaut : width: 1, height: 1.
let rect = new Zdog.Rect({
addTo: illo,
width: 120,
height: 80,
stroke: 20,
color: '#E62',
});
Toutes les formes sont orientées vers l'« avant », c'est-à-dire vers l'axe z positif. Utilisez rotate pour orienter une forme dans une autre direction.
let rect = new Zdog.Rect({
addTo: illo,
width: 80,
height: 64,
stroke: 10,
translate: { x: -48 },
// tourné pour faire face à gauche
rotate: { y: TAU/4 },
color: '#E62',
});
rect.copy({
translate: { y: -48 },
// tourné pour faire face vers le haut
rotate: { x: TAU/4 },
color: '#636',
});
RoundedRect
Un rectangle aux coins arrondis. Définissez sa taille avec width et height, comme pour Rect. Le rayon des coins arrondis se règle avec cornerRadius. Valeur par défaut : cornerRadius: 0.25.
let roundedRect = new Zdog.RoundedRect({
addTo: illo,
width: 120,
height: 80,
cornerRadius: 30,
stroke: 20,
color: '#EA0',
});
Ellipse
Une ellipse. Définissez diameter pour obtenir un cercle. Valeur par défaut : diameter: 1.
let circle = new Zdog.Ellipse({
addTo: illo,
diameter: 80,
stroke: 20,
color: '#C25',
});
Définissez width et height pour obtenir une ellipse.
let ellipse = new Zdog.Ellipse({
addTo: illo,
width: 60,
height: 120,
stroke: 20,
color: '#C25',
});
Donnez à quarters un nombre entier pour obtenir des quarts de cercle ou des demi-cercles. Le quart de cercle commence en haut à droite et se poursuit dans le sens des aiguilles d'une montre.
let semicircle = new Zdog.Ellipse({
addTo: illo,
diameter: 80,
quarters: 2,
stroke: 20,
color: '#C25',
});
Polygon
Un polygone régulier. Définissez sa taille avec radius et son nombre de côtés avec sides. Valeurs par défaut : radius: 0.5, sides: 3.
let pentagon = new Zdog.Polygon({
addTo: illo,
radius: 60,
sides: 5,
stroke: 20,
color: '#EA0',
});
Shape
La classe Shape sert à créer des formes personnalisées. La forme d'un Shape est définie par son path (son tracé).
path
Définit la forme.
Lorsque path n'est pas défini, il vaut par défaut un simple point. Si stroke est défini, un simple point est affiché sous la forme d'une sphère.
new Zdog.Shape({
addTo: illo,
// aucun path défini : un simple point par défaut
stroke: 80,
color: '#636',
});
Commandes de tracé
Donnez à path un tableau de commandes de tracé. Ces commandes indiquent à la forme la direction à suivre. Le principe ressemble au dessin de tracés dans un <canvas> 2D, dans les chemins SVG ou dans la tortue du langage Logo.
Il existe quatre commandes de tracé : line, move, arc et bezier. Chaque commande s'écrit sous la forme d'un objet dont la clé est le nom de la commande et la valeur est un objet vecteur ou un tableau d'objets vecteurs représentant les points de la commande.
path: [
{ line: {/*x,y,z*/} }, // syntaxe détaillée
// ou
{/*x,y,z*/}, // raccourci pour line : le point seul
{ move: {/*x,y,z*/} },
{ arc: [
{/*x,y,z*/}, // point d'angle
{/*x,y,z*/}, // point d'arrivée
]},
{ bezier: [
{/*x,y,z*/}, // point de contrôle de départ
{/*x,y,z*/}, // point de contrôle d'arrivée
{/*x,y,z*/}, // point d'arrivée
]},
]
Pour démarrer le tracé, la première commande est toujours traitée comme un move.
line
{ line: {/*x,y,z*/} }, // syntaxe détaillée
// ou
{/*x,y,z*/}, // raccourci pour line : le point seul
new Zdog.Shape({
addTo: illo,
path: [
{ x: -40 }, // départ au 1er point
{ x: 40 }, // ligne jusqu'au 2e point
],
stroke: 20,
color: '#636',
});
// forme en Z
new Zdog.Shape({
addTo: illo,
path: [
{ x: -32, y: -40 }, // départ en haut à gauche
{ x: 32, y: -40 }, // ligne jusqu'en haut à droite
{ x: -32, y: 40 }, // ligne jusqu'en bas à gauche
{ x: 32, y: 40 }, // ligne jusqu'en bas à droite
],
closed: false,
stroke: 20,
color: '#636',
});
Les points d'un tracé peuvent utiliser des coordonnées z pour former des formes en 3D.
// forme 3D
new Zdog.Shape({
addTo: illo,
path: [
{ x: -32, y: -40, z: 40 },
{ x: 32, y: -40 },
{ x: 32, y: 40, z: 40 },
{ x: 32, y: 40, z: -40 },
],
closed: false,
stroke: 20,
color: '#636',
});
move
{ move: {/*x,y,z*/} },
new Zdog.Shape({
addTo: illo,
path: [
{ x: -40, y: -32 }, // départ en haut à gauche
{ x: 40, y: -32 }, // ligne jusqu'en haut à droite
{ move: { x: -40, y: 32 } }, // déplacement vers le bas à gauche
{ x: 40, y: 32 }, // ligne jusqu'en bas à droite
],
closed: false,
stroke: 20,
color: '#636',
});
arc
{ arc: [
{/*x,y,z*/}, // point d'angle
{/*x,y,z*/}, // point d'arrivée
]},
Affiche une courbe elliptique. L'ellipse de la courbe s'inscrit dans le rectangle formé par le point précédent, le point d'angle et le point d'arrivée.
new Zdog.Shape({
addTo: illo,
path: [
{ x: -60, y: -60 }, // départ
{ arc: [
{ x: 20, y: -60 }, // angle
{ x: 20, y: 20 }, // point d'arrivée
]},
{ arc: [ // le prochain arc part du dernier point d'arrivée
{ x: 20, y: 60 }, // angle
{ x: 60, y: 60 }, // point d'arrivée
]},
],
closed: false,
stroke: 20,
color: '#636'
});
bezier
{ bezier: [
{/*x,y,z*/}, // point de contrôle de départ
{/*x,y,z*/}, // point de contrôle d'arrivée
{/*x,y,z*/}, // point d'arrivée
]},
Affiche une courbe de Bézier.
new Zdog.Shape({
addTo: illo,
path: [
{ x: -60, y: -60 }, // départ
{ bezier: [
{ x: 20, y: -60 }, // point de contrôle de départ
{ x: 20, y: 60 }, // point de contrôle d'arrivée
{ x: 60, y: 60 }, // point d'arrivée
]},
],
closed: false,
stroke: 20,
color: '#636'
});
closed
Ferme le tracé en reliant le dernier point au premier. Activé par défaut : closed: true.
new Zdog.Shape({
addTo: illo,
path: [ // triangle
{ x: 0, y: -40 },
{ x: 40, y: 40 },
{ x: -40, y: 40 },
],
// fermé par défaut
stroke: 20,
color: '#636'
});
new Zdog.Shape({
addTo: illo,
path: [
{ x: 0, y: -40 },
{ x: 40, y: 40 },
{ x: -40, y: 40 },
],
closed: false, // non fermé
stroke: 20,
color: '#636'
});
Hemisphere
Une demi-sphère. Définissez sa taille avec diameter. La couleur de l'ellipse de la base se règle avec backface. Valeurs par défaut : diameter: 1, fill: true. L'origine de la demi-sphère est le centre de sa base. Le dôme est orienté vers l'avant, c'est-à-dire vers l'axe z positif.
let dome = new Zdog.Hemisphere({
addTo: illo,
diameter: 120,
// fill est activé par défaut
// désactivez stroke pour obtenir un bord net
stroke: false,
color: '#C25',
backface: '#EA0',
});
Cone
Un cône à base circulaire. Définissez sa taille avec diameter et length. Valeurs par défaut : diameter: 1, length: 1, fill: true. La couleur de l'ellipse de la base se règle avec backface. L'origine du cône est le centre de sa base. Le cône est orienté vers l'avant, c'est-à-dire vers l'axe z positif.
let partyHat = new Zdog.Cone({
addTo: illo,
diameter: 70,
length: 90,
stroke: false,
color: '#636',
backface: '#C25',
});
Cylinder
Un cylindre à bases circulaires. Définissez sa taille avec diameter et length. Valeurs par défaut : diameter: 1, length: 1, fill: true. La couleur de l'ellipse de la base se règle avec backface. L'origine du cylindre est le milieu de sa longueur. Le cylindre est orienté d'avant en arrière le long de l'axe z.
let can = new Zdog.Cylinder({
addTo: illo,
diameter: 80,
length: 120,
stroke: false,
color: '#C25',
backface: '#E62',
});
Pour obtenir des couleurs différentes sur les bases, définissez frontFace et backface.
let can = new Zdog.Cylinder({
addTo: illo,
diameter: 80,
length: 120,
stroke: false,
color: '#C25',
frontFace: '#EA0',
backface: '#636',
});
Box
Un prisme rectangulaire. Définissez sa taille avec width, height et depth. Les couleurs des faces se règlent avec les options de faces : frontFace, rearFace, leftFace, rightFace, topFace et bottomFace. Valeurs par défaut : width: 1, height: 1, depth: 1, fill: true.
let box = new Zdog.Box({
addTo: illo,
width: 120,
height: 100,
depth: 80,
stroke: false,
color: '#C25', // couleur de face par défaut
leftFace: '#EA0',
rightFace: '#E62',
topFace: '#ED0',
bottomFace: '#636',
});
Supprimez des faces en désactivant leurs options.
let box = new Zdog.Box({
addTo: illo,
width: 120,
height: 100,
depth: 80,
stroke: false,
color: '#C25',
// suppression des faces gauche et droite
leftFace: false,
rightFace: false,
rearFace: '#EA0',
topFace: '#ED0',
bottomFace: '#636',
});
Traduction française de la documentation de Zdog (licence MIT) – https://zzz.dog