Graphique & rendu2025Terminé
/* ************************************************************************** */
/*                                                                            */
/*                                                        :::      ::::::::   */
/*   color_sin.c                                        :+:      :+:    :+:   */
/*                                                    +:+ +:+         +:+     */
/*   By: lkantzer <lkantzer@student.42.fr>          +#+  +:+       +#+        */
/*                                                +#+#+#+#+#+   +#+           */
/*   Created: 2025/01/26 01:15:14 by lkantzer          #+#    #+#             */
/*   Updated: 2025/03/28 14:14:21 by lkantzer         ###   ########.fr       */
/*                                                                            */
/* ************************************************************************** */
Created : ouverture du dépôt · Updated : dernier commit

fract-ol

Mandelbrot et Julia, au pixel près

Un explorateur de fractales : zoom centré sur le curseur, Julia paramétrable, coloration sinusoïdale.

CMiniLibXNombres complexesPalettes
2
fractales
au curseur
zoom
sinusoïdale
coloration
Comment ça marche

La suite

Chaque pixel de la fenêtre est un nombre complexe. On lui applique la même suite, encore et encore, et on regarde si elle part à l'infini.

z(n+1) = z(n)² + c

Mandelbrot
z part de zéro, et c est le point de l'écran. L'ensemble est celui des c dont la suite reste bornée.
Julia
L'inverse : c est fixé pour toute l'image, et c'est z qui part du point de l'écran. Déplacer c redessine entièrement la figure.c = −0,7 + 0,27015 i
Divergence
Dès que le module de z dépasse 2, la suite ne revient jamais : on s'arrête et on garde le rang atteint. Le test se fait sur le carré, pour s'épargner une racine par itération.x² + y² > 4
Plafond
Un point qui n'a pas divergé au bout du nombre maximal d'itérations est déclaré dans l'ensemble, et peint en noir.
Couleur
Le rang de divergence entre dans trois sinusoïdes décalées, une par canal — c'est ce décalage qui remplace les bandes plates d'un simple modulo par un dégradé continu.

Le zoom ne touche pas à la suite : il ne change que la fenêtre du plan complexe que les pixels vont lire. D'où l'intérêt de la recentrer sur le curseur plutôt que sur le milieu de l'écran.

Mandelbrot & Juliadémo interactive
zoom ×1.0

Molette pour zoomer — le point sous le curseur reste fixe, comme dans le projet en C. En mode Julia, maintenez Maj et déplacez la souris : le paramètre complexe suit le curseur et la figure se réécrit en direct.

En bref
  • 01Chaque pixel est un nombre complexe itéré jusqu'à divergence
  • 02Le zoom se fait autour de la souris, pas du centre de la fenêtre
  • 03Palettes sinusoïdales décalées par canal : pas de bandes plates
  • 04Écriture directe dans le tampon image, un seul envoi à l'écran
Le point dur

Zoomer là où on regarde

Un zoom centré sur la fenêtre rend l'exploration en profondeur inutilisable. Recentrer sur le curseur tient en trois lignes et change tout à l'usage.