Premiers graphiques avec Jupyter#

Dans cette feuille, nous allons reprendre l’exercice 2 du TD et effectuer un premier dessin.

Commençons par créer un canvas vert de taille 640 x 480 :

#include "primitives_jupyter.hpp"
RenderWindow window(VideoMode(640, 480), "Ma super fenêtre");
window.canvas
window.clear(Color::Green);

puis dessinons un point noir de coordonnées (418, 143). Ce point est tout petit, vous aurez peut-être un peu de mal à le distinguer :

draw_point(window, {418, 143}, Color::Black );
window.display();
  1. Dessinez un segment blanc entre les points de coordonnées respectives (100,200) et (200,200) :

// REMPLACEZ CETTE LIGNE PAR VOTRE RÉPONSE
window.display();

Astuce

Astuce

Pour éviter de monter et descendre constamment dans cette feuille, faites un clic droit sur le canvas et cliquez sur «Créer une nouvelle vue pour la sortie» (ou «Create new view for output»). Puis disposez la copie obtenue du canvas sur votre espace de travail de sorte à voir simultanément votre code et le canvas.

  1. Dessinez un segment rouge entre les points (200,300) et (200,400) :

// REMPLACEZ CETTE LIGNE PAR VOTRE RÉPONSE
window.display();
  1. Dessinez un rectangle horizontal vide de sommets diagonaux (200,200) et (400,300) et de contour rouge :

// REMPLACEZ CETTE LIGNE PAR VOTRE RÉPONSE
window.display()
  1. Dessinez un rectangle horizontal plein noir de sommets diagonaux (400,150) et (500,200) :

// REMPLACEZ CETTE LIGNE PAR VOTRE RÉPONSE
window.display()
  1. Dessinez un segment rouge entre les points (400,300) et (500,400) :

// REMPLACEZ CETTE LIGNE PAR VOTRE RÉPONSE
window.display()
  1. ♣ Dessinez un triangle bleu entre les (0,0), (640,0) et (640,160) :

// REMPLACEZ CETTE LIGNE PAR VOTRE RÉPONSE
window.display()
  1. Dessinez un cercle noir de centre (415,145) et de rayon 10 :

// REMPLACEZ CETTE LIGNE PAR VOTRE RÉPONSE
window.display()
  1. Dessinez un disque jaune de centre (550, 75) et de rayon 50 :

// REMPLACEZ CETTE LIGNE PAR VOTRE RÉPONSE
window.display()

Attention

Comme vous l’avez constaté, les performances sont lamentables. C’est parce que nous avons abusé des canvas de HTML : alors que ceux-ci sont conçus pour du dessin vectoriel, nous approximons les figures vectorielles (lignes, triangles, …) par des accumulations d’un très grand nombre de pixels (combien pour le triangle bleu?), sachant que chacun de ces pixels est en fait représenté en interne par un petit rectangle.

En dehors de ce premier dessin – dont l’objectif pédagogique était de faire un peu d’algorithmique – il faut au contraire utiliser les primitives vectorielles fournies.