diff --git a/Makefile b/Makefile index e02faf1570b6b74d44e37de52a1a44b2ef903e02..115a340d45feaea0f250f6a3a05899bb22f97096 100644 --- a/Makefile +++ b/Makefile @@ -80,7 +80,7 @@ deploy: all make -C practical_work/electric_fl cp practical_work/electric_fl/*.pdf phys/field_lines/ cp practical_work/electric_fl/*.html phys/field_lines/ - cd practical_work/electric_fl && tar czvf utils.tar.gz utils && cp *.gz ../../phys/field_lines + cd practical_work/electric_fl && tar czvf utils_jour.tar.gz utils Jour && tar czvf utils_soir.tar.gz utils Soir && cp *.gz ../../phys/field_lines clean: diff --git a/practical_work/electric_fl/Jour/cercle.md b/practical_work/electric_fl/Jour/cercle.md new file mode 100644 index 0000000000000000000000000000000000000000..76054ee43ce68331efc072966515f1f7bad2ed1f --- /dev/null +++ b/practical_work/electric_fl/Jour/cercle.md @@ -0,0 +1,29 @@ +``` +dessiner_cercle(xc, yc, r) + x = 0 + y = r + d = r - 1 // r^2 + r - 0^2 - r^2 - 1 + tant que y >= x + // On dessine les autres octants par symétrie + dessiner_pixel(xc + x, yc + y) // Deuxième octant + dessiner_pixel(xc + y, yc + x) // Premier octant + dessiner_pixel(xc +- ?, yc +- ?) // Troisième octant + dessiner_pixel(xc +- ?, yc +- ?) // Quatrième octant + + dessiner_pixel(xc +- ?, yc +- ?) // Septième octant + dessiner_pixel(xc +- ?, yc +- ?) // Huitième octant + dessiner_pixel(xc +- ?, yc +- ?) // Sixième octant + dessiner_pixel(xc +- ?, yc +- ?) // Cinquième octant + + + si 2x <= d // On passe au point A + d -= 2x + 1 + x += 1 + sinon si d < 2(r-y) // On passe au point B + d += 2y - 1 + y -= 1 + sinon // On passe au point C + d -= 2(x - y + 1) + y -= 1 + x += 1 +``` diff --git a/practical_work/electric_fl/Jour/ligne.md b/practical_work/electric_fl/Jour/ligne.md new file mode 100644 index 0000000000000000000000000000000000000000..599e2341fb68adb421b29b75390c20188867c378 --- /dev/null +++ b/practical_work/electric_fl/Jour/ligne.md @@ -0,0 +1,68 @@ +``` +dessiner_droite(x0, y0, x1, y1) + dy = y1 - y0 + dx = x1 - x0 + + m_dx = x0 - x1 + + si dy >= 0 //Octants supérieurs + si dy <= dx //1er octant + a = 2*dy + e = 0 + + y = y0 + pour x allant de x0 à x1 avec un pas de 1 + dessiner_pixel(x,y) + + e += a + + si e >= dx: + y += 1 + e -= 2*dx + sinon si ? et ? // 2ème octant + a = 2*dx + e = 0 + + x = x0 + pour y allant de y0 à y1 avec un pas de 1 + dessiner_pixel(x,y) + + e += a + + si e >= dy: + x += 1 + e -= 2*dy + sinon si dy >= m_dx // 3ème octant + a = ? + e = 0 + + m_dy = y0-y1 + + x = x0 + pour y allant de y0 à y1 avec un pas de 1 + dessiner_pixel(x,y) + + e += a + + si e <= m_dy: + x -= 1 + e += ? + sinon // 4ème octant + dessiner_droite(?, ?, ?, ?) + sinon + si ? <= ? // 8ème octant + a = 2*dy + e = 0 + + y = y0 + pour x allant de x0 à x1 avec un pas de 1 + dessiner_pixel(x,y) + + e += a + + si e <= m_dx: + y -= 1 + e += 2*dx + sinon // Tous les autres octants + dessiner_droite(x1, y1, x0, y0) +``` \ No newline at end of file diff --git a/practical_work/electric_fl/Soir/cercle.md b/practical_work/electric_fl/Soir/cercle.md new file mode 100644 index 0000000000000000000000000000000000000000..449bf6a58eb390759349d5a4120b85b6b138da39 --- /dev/null +++ b/practical_work/electric_fl/Soir/cercle.md @@ -0,0 +1,29 @@ +``` +dessiner_cercle(xc, yc, r) + x = 0 + y = r + d = r - 1 // r^2 + r - 0^2 - r^2 - 1 + tant que y >= x + // On dessine les autres octants par symétrie + dessiner_pixel(xc + x, yc + y) // Deuxième octant + dessiner_pixel(xc + y, yc + x) // Premier octant + dessiner_pixel(xc - x, yc + y) // Troisième octant + dessiner_pixel(xc - y, yc + x) // Quatrième octant + + dessiner_pixel(xc + x, yc - y) // Septième octant + dessiner_pixel(xc + y, yc - x) // Huitième octant + dessiner_pixel(xc - x, yc - y) // Sixième octant + dessiner_pixel(xc - y, yc - x) // Cinquième octant + + + si 2x <= d // On passe au point A + d -= 2x + 1 + x += 1 + sinon si d < 2(r-y) // On passe au point B + d += 2y - 1 + y -= 1 + sinon // On passe au point C + d -= 2(x - y + 1) + y -= 1 + x += 1 +``` \ No newline at end of file diff --git a/practical_work/electric_fl/Soir/ligne.md b/practical_work/electric_fl/Soir/ligne.md new file mode 100644 index 0000000000000000000000000000000000000000..44c37ca43b37e22a60913d827d3d50a6d9f46b37 --- /dev/null +++ b/practical_work/electric_fl/Soir/ligne.md @@ -0,0 +1,68 @@ +``` +dessiner_droite(x0, y0, x1, y1) + dy = y1 - y0 + dx = x1 - x0 + + m_dx = x0 - x1 + + si dy >= 0 //Octants supérieurs + si dy <= dx //1er octant + a = 2*dy + e = 0 + + y = y0 + pour x allant de x0 à x1 avec un pas de 1 + dessiner_pixel(x,y) + + e += a + + si e >= dx: + y += 1 + e -= 2*dx + sinon si (0<=dx) et (dx < dy) // 2ème octant + a = 2*dx + e = 0 + + x = x0 + pour y allant de y0 à y1 avec un pas de 1 + dessiner_pixel(x,y) + + e += a + + si e >= dy: + x += 1 + e -= 2*dy + sinon si dy >= m_dx // 3ème octant + a = 2*dx + e = 0 + + m_dy = y0-y1 + + x = x0 + pour y allant de y0 à y1 avec un pas de 1 + dessiner_pixel(x,y) + + e += a + + si e <= m_dy: + x -= 1 + e += 2*dy + sinon // 4ème octant + dessiner_droite(x1, y1, x0, y0) + sinon + si m_dx <= dy // 8ème octant + a = 2*dy + e = 0 + + y = y0 + pour x allant de x0 à x1 avec un pas de 1 + dessiner_pixel(x,y) + + e += a + + si e <= m_dx: + y -= 1 + e += 2*dx + sinon // Tous les autres octants + dessiner_droite(x1, y1, x0, y0) +``` \ No newline at end of file