Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 20 additions & 10 deletions content/Annexes/Markdown.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,11 @@ En résumé :
- plusieurs items
```

```md
- [ ] to-do
- [x] done
```

```md
```cpp
// Bloc de code C++
Expand All @@ -61,11 +66,11 @@ Notes de bas de page \[^1]
\> Citation

```txt
| Tableaux | :grin: | :sparkles: |
| ------------- |:-------------:| -----:|
| col 3 is | right-aligned | $1600 |
| col 2 is | centered | $12 |
| zebra stripes | are neat | $1 |
| Tableaux | :grin: | :sparkles: |
| ------------- | :-----------: | ---------: |
| col 3 is | right-aligned | $1600 |
| col 2 is | centered | $12 |
| zebra stripes | are neat | $1 |
```

Séparateur :
Expand All @@ -92,6 +97,9 @@ Image :
- avec
- plusieurs items

- [ ] to-do
- [x] done

```cpp
// Bloc de code C++
int x{0};
Expand All @@ -111,11 +119,11 @@ Notes de bas de page [^1]

> Citation

| Tableaux | 😁 | ✨ |
| ------------- |:-------------:| -----:|
| Tableaux | 😁 | ✨ |
| ------------- | :-----------: | ----: |
| col 3 is | right-aligned | $1600 |
| col 2 is | centered | $12 |
| zebra stripes | are neat | $1 |
| col 2 is | centered | $12 |
| zebra stripes | are neat | $1 |

Séparateur :

Expand All @@ -141,4 +149,6 @@ Salut, ceci est un secret !
## Générer une table des matières

VS Code peut générer automatiquement une table des matières pour votre document, qui va lister toutes les différentes sections que vous aurez délimitées avec des titres (`#`, `##`, `###`, etc.).<br/>
Pour cela, mettez votre curseur là où vous voulez la générer (typiquement au début de votre document), puis faites <kbd>F1</kbd> et cherchez et sélectionnez `Markdown All In One: Create Table of Contents` (ou juste `toc` pour faire court).
Pour cela, mettez votre curseur là où vous voulez la générer (typiquement au début de votre document), puis faites <kbd>F1</kbd> et cherchez et sélectionnez `Markdown All In One: Create Table of Contents` (ou juste `toc` pour faire court).

![](Markdown_imgs/toc.png)
Binary file added content/Annexes/Markdown_imgs/toc.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
19 changes: 9 additions & 10 deletions content/Workshop/01-Sujet.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,10 @@ for (glm::vec3& color : image.pixels())
- Pour créer une couleur avec les trois composantes identiques (donc un niveau de gris), la syntaxe `glm::vec3{grey}` est équivalente à `glm::vec3{grey, grey, grey}`.
- Vous pouvez généralement faire vos opérations directement sur les couleurs, pas besoin de les faire 3 fois sur chacun des canaux :
```cpp
glm::vec3 color1{};
glm::vec3 color2{};
glm::vec3 final_color{};
glm::vec3 const color1{};
glm::vec3 const color2{};

final_color = color1 + color2;
glm::vec3 const final_color = color1 + color2;
// équivalent à :
// final_color.r = color1.r + color2.r;
// final_color.g = color1.g + color2.g;
Expand Down Expand Up @@ -92,17 +91,17 @@ int main()

## Rendu et Rapport

__*À rendre avant samedi à 23h59*__.<br/>
*Pour le rendu, il suffit de [mettre votre lien git ici](https://docs.google.com/spreadsheets/d/1x2uqvKdhndstidmW4xoWkNTlbwHFDWGlpohdb6TRORY/edit?usp=sharing)*. Attention, vérifiez bien que votre repo est en public, ou si il est en privé, pensez à m'inviter dessus ([*julesfouchy*](https://github.com/julesfouchy/)).
__*À rendre avant vendredi à 23h59*__.<br/>
Pour le rendu, il suffit de mettre votre lien git sur la google sheet que je vais vous partager sur Discord. Attention, vérifiez bien que votre repo est en public, ou si il est en privé pensez à m'inviter dessus ([*julesfouchy*](https://github.com/julesfouchy/)).

Pour le rapport, faites une section par exercice que vous avez fait. Montrez une image avant et après application de l'effet (comme c'est fait dans l'énoncé des exercices). Si vous jugez cela utile, vous pouvez mettre un petit texte expliquant des spécificités de l'algo que vous avez implémenté, et les pièges potentiels dans lesquels il ne faut pas tomber.
Pour le rapport, faites une section par exercice que vous avez fait. Montrez une image avant et après application de l'effet (comme c'est fait dans l'énoncé des exercices). **Le rapport n'a pas besoin d'être long**. Pour les exercices où vous jugez cela utile, mettez un petit texte expliquant des spécificités de l'algo que vous avez implémenté, et les pièges potentiels dans lesquels il ne faut pas tomber.

À faire en Markdown obligatoirement (Si vous ne connaissez pas c'est l'occasion de découvrir, c'est super utile. Je vous montre tout ça vendredi).
À faire en Markdown obligatoirement. (Si vous ne connaissez pas c'est l'occasion de découvrir, c'est super utile. Je vous montre tout ça vendredi).

À mettre directement en tant que ReadMe.md à la racine du repo.
À mettre directement en tant que `README.md` à la racine du repo.

## Soutenance

Présentez un des algos avancés que vous avez fait, en 5-10 minutes. C'est de la vulgarisation, il faut que tous vos camarades puissent comprendre. Expliquez l'algo dans les grandes lignes, et parlez des petits pièges de code auxquels il faut faire attention.
Présentez un des algos avancés que vous avez fait, en 5-10 minutes. C'est de la vulgarisation, il faut que tous vos camarades puissent comprendre. Expliquez l'algo dans les grandes lignes, et parlez des petits pièges de code auxquels il faut faire attention. **Attention** à ne pas juste montrer le code et le lire ligne par ligne!!

PS : la soutenance est optionnelle, on va essayer de ne pas présenter plusieurs fois le même algo, donc vous n'êtes pas obligé.es de passer. Et si plusieurs groupes souhaitent passer sur le même algo, on va essayer de vous regrouper pour que vous fassiez une seule présentation, ensemble.
4 changes: 2 additions & 2 deletions content/Workshop/02-Planning.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
## Mardi

- [ ] *Cours* : Présentation de git
- [ ] Test et prise en main de git (l'un push quelque chose et l'autre le pull par exemple)
- [ ] Test et prise en main de git
- [ ] Mettre sur le repository les exercices que vous avez fait hier
- [ ] Autonomie, avancer dans les exercices

Expand All @@ -24,6 +24,6 @@
## Vendredi

- [ ] *Cours* : Présentation de Markdown pour l'écriture du rapport
- [ ] Écriture du rapport (Vous avez jusqu'à samedi 23h59 pour le rendre)
- [ ] Écriture du rapport (Vous avez jusqu'à vendredi 23h59 pour le rendre)
- [ ] Préparation de la présentation pour celleux concerné.es
- [ ] Présentations l'après-midi
37 changes: 5 additions & 32 deletions content/Workshop/03-Exercices.md
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ puis itérer sur les pixels pour les colorer.
Quelle est l'équation d'un disque ? Comment peut on s'en servir pour savoir si un pixel est à l'intérieur ou à l'extérieur du disque ?
</details>

### ⭐ Cercle
### ⭐ Cercle

![](output/circle.png)

Expand All @@ -181,12 +181,6 @@ Maintenant que vous savez dessiner un cercle, dessinez-en plusieurs sur la même
Comment passer de coordonnées polaires (angle et rayon) à des coordonnées cartésiennes (x et y) ?
</details>

### ⭐⭐ Animation

![](output/animation.gif)

Pour faire une animation, on va exporter plein d'images les unes après les autres, en faisant légèrement bouger le disque entre deux images. Vous pouvez ensuite utiliser un outil externe pour assembler ces images en une vidéo / gif. Par exemple [Ezgif](https://ezgif.com/maker).

## ⭐⭐ Mosaïque

![](output/mosaic.png)
Expand Down Expand Up @@ -217,15 +211,17 @@ Prendre un rectangle de pixels et l'intervertir avec un autre rectangle de pixel

## ⭐⭐⭐ Tri de pixels

![](output/pixel_sorting.png)
| ![](output/pixel_sorting.png) | ![](output/pixel_sorting2.png) | ![](output/pixel_sorting3.png) |
| ----------------------------- | ------------------------------ | ------------------------------ |
| Trier tous les pixels | Trier les lignes | Trier des parties aléatoires |

Voici une bonne vidéo expliquant l'algorithme (vous pouvez ignorer le début spécifique à Processing où on voit comment afficher l'image) :

<YoutubeVideo id="JUDYkxU6J0o"/><br/>

Utilisez `image.pixels()` pour récupérer le tableau contenant tous les pixels de l'image et le trier.

Ensuite, au lieu de trier tous les pixels de l'image, triez par colonne (ou par ligne) pour un effet plus joli. (Il faudra trier des sous-parties du tableau `image.pixels()`.) Ou encore, triez des sous-parties prises aléatoirement dans l'image.
Ensuite, au lieu de trier tous les pixels de l'image, triez par ligne (ou par colonne) pour un effet plus joli. (Il faudra trier des sous-parties du tableau `image.pixels()`.) Ou encore, triez des sous-parties prises aléatoirement dans l'image.

:::info
Pour trier un tableau, vous pouvez utiliser `std::sort`. Vous verrez ça plus en détail au S2, mais voici une brève explication :
Expand Down Expand Up @@ -264,29 +260,6 @@ On passe ce qu'on appelle une *lambda* en 3ème argument : c'est une fonction d

<ExplanationsAboutRandom/>

## ⭐⭐⭐ Dégradés dans l'espace de couleur Lab

Pour commencer, repartez de l'exo [⭐ Dégradé](#-dégradé) et adaptez-le pour faire un dégradé de couleur :

![](./output/gradient_srgb.png)

<details>
<summary>Indice</summary>

Vous pouvez utiliser la fonction [`glm::mix`](https://glm.g-truc.net/0.9.4/api/a00129.html#ga3f64b3986efe205cf30300700667e761) pour mélanger deux couleurs en fonction d'un pourcentage.
</details>

Maintenant, on peut remarquer que ce dégradé n'est pas super, et que la couleur au milieu est très sombre par rapport aux couleurs aux extrémités. Le problème c'est que nos couleurs sont exprimées dans l'espace de couleur sRGB, qui n'est pas adapté pour ce genre d'opérations de mélange entre couleurs. D'autres espaces de couleur ont été développés exprès pour ça, notamment Lab :

<YoutubeVideo id="nJlZT5AE9zY"/>
<br/>

[Voici l'article original introduisant Oklab](https://bottosson.github.io/posts/oklab/), vous y trouverez toutes les infos nécessaires pour implémenter les conversions entre sRGB et Oklab :

![](./output/gradient_oklab.png)

Comparez les dégradés dans les différents espaces de couleur : lequel préférez vous ? Essayez des dégradés avec d'autres couleurs : est-ce que Oklab est toujours mieux que sRGB ? Que se passe-t-il si on fait le mélange dans d'autres espaces de couleur, comme Linear RGB ou HSL ?

## ⭐⭐⭐(⭐) Fractale de Mandelbrot

![](output/mandelbrot.png)
Expand Down
Binary file modified content/Workshop/output/pixel_sorting.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added content/Workshop/output/pixel_sorting2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added content/Workshop/output/pixel_sorting3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion src/pages/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Si vous ne faites pas partie des étudiants **IMAC 1**, vous êtes tout de même

## Qui suis-je ?

Je m'appelle **Enguerrand DE SMET** et je suis actuellement **programmeur gameplay** à **Ubisoft** depuis maintenant 2 ans. Je suis de la promotion **IMAC 2021**, et j'ai également effectué le double-cursus Master Informatique proposé en dernière année du cursus IMAC.
Je m'appelle **Enguerrand DE SMET** et je suis actuellement **programmeur gameplay** à **Ubisoft** depuis maintenant 5 ans. Je suis de la promotion **IMAC 2021**, et j'ai également effectué le double-cursus Master Informatique proposé en dernière année du cursus IMAC.

En ce qui concerne l'enseignement, j'ai d'abord commencé à donner des cours de soutien en programmation aux **IMAC 1** pendant 2 ans pour maintenant continuer cette année en tant que professeur de C++ pour les **IMAC 1**. Je vais présenter les notions de la manière la plus claire possible mais tous **vos retours et commentaires sont plus que bienvenus** pour améliorer et adapter mes cours à vos besoins dans la mesure du possible !

Expand Down