Que fait Dessine N'importe Quoi ?
Transforme une demande en un dessin mathématique et fournit les mathématiques correspondantes. Les utilisateurs sont souvent des créateurs de contenu et des monteurs vidéo. Fournis les fichiers au bon format et explique la méthode en termes simples.
Procédure
- Identifie le sujet, la destination (Reels, publication, YouTube, incrustation vidéo), statique ou animé, et les couleurs. Si des données manquent, utilise les valeurs par défaut (carré, thème sombre). Informe l'utilisateur des valeurs par défaut. Ne pose pas trop de questions.
- Sélectionne la méthode (tableau ci-dessous). Si l'utilisateur nomme une méthode, utilise-la.
- Si l'utilisateur fournit une image, copie-la avec
trace_image.py. Une copie est plus précise qu'un nouveau dessin. - S'il n'y a pas d'image, crée la géométrie toi-même (voir « Dessiner sans image »).
- Fais un aperçu rapide (540 px, peu d'images). Regarde-le avec la visionneuse d'images. Corrige les proportions, le cadrage et les couleurs. Répète jusqu'à ce que le résultat soit bon.
- Produis le fichier final à la taille demandée.
- Place les fichiers dans le dossier de sortie et présente-les. Donne une réponse courte : méthode, paramètres principaux et une légende prête à l'emploi.
Sélection de la méthode
| Demande | Méthode | Script |
|---|---|---|
| Copier une image (dessin, logo, lettrage, silhouette, illustration, photo) | Bézier (Potrace), Fourier par contour pour l'animation | trace_image.py |
| Nom, signature, nouveau contour, « dessiné par des cercles » | Fourier | fourier_draw.py |
| Formes pleines : icône, mascotte, logo, scène, motif, mandala | SDF | sdf.py (bibliothèque) |
| Équation comme sujet, courbe célèbre, région remplie | Implicite | curves.py |
| Spirale, rosace, Lissajous, spirographe | Paramétrique/polaire | curves.py |
| Pixel art, « formule qui se dessine elle-même » | Tupper | tupper.py |
| Fractale, plante, champ de flux | Autre | ton propre code (references/methods.md §7) |
Fourier seul ne peut pas copier exactement les angles vifs (effet Gibbs). Pour une copie exacte, utilise Bézier. Utilise Fourier pour l'animation.
Scripts
Tous les scripts sont dans scripts/. Exécute un script avec --help pour toutes les options. Options communes :
--size (reels, post, square, youtube, thumb, 4k ou LxH), --theme (dark, light, neon, blueprint, paper), --transparent.
Dépendances : numpy, matplotlib, Pillow, imageio/ffmpeg, OpenCV, scikit-image, potracer (le script l'installe avec pip s'il manque).
Copier une image :
python scripts/trace_image.py drawing.jpg --svg d.svg --png d.png --desmos d.txt
python scripts/trace_image.py drawing.jpg --anim d.mp4 --anim-style fourier --centerline --size reels
python scripts/trace_image.py sketch.png --centerline --svg sketch.svg # traits modifiables
python scripts/trace_image.py logo.png --mode color --colors 5 --svg logo.svg
python scripts/trace_image.py photo.jpg --mode edges --anim lines.mp4
--mode ink(par défaut) : dessin au trait, logos, lettrages, silhouettes, captures d'écran. Il détecte les images claires sur fond sombre et supprime les barres noires.--mode color --colors N: illustrations, estampes, peintures, icônes, photos. Utilise 12 à 16 couleurs pour les œuvres d'art et les photos. Ajoute--linespour les estampes, les bandes dessinées et l'encre : cela ajoute des couches supérieures pour les contours fins sombres et les petits détails clairs (mousse, étoiles, reflets).--detail 1conserve plus de petits détails.--mode edges: transforme une photo en dessin au trait.--centerline: pour les dessins au trait, croquis, écriture manuscrite et signatures. Chaque trait devient un chemin SVG modifiable avec sa largeur de trait (comme un trait de stylo dans Illustrator/Figma/Inkscape). Les jonctions, croisements et angles vifs sont réparés, les parties droites deviennent des lignes exactes et les extrémités de trait (rond/carré) sont déduites de l'encre. Remplace avec--capet--join. Sans--centerline, le SVG a des contours remplis (meilleur pour les logos, lettrages, silhouettes).--anim-style pendessine les courbes de Bézier puis montre le remplissage.--anim-style fourierutilise une chaîne d'épicycles pour chaque contour ou trait. En mode couleur, les épicycles dessinent les contours de région les plus longs (--max-strokes, par défaut 800) puis le vecteur de couleur apparaît progressivement.--keep-colorsconserve les couleurs d'origine (mode encre).--detail Nignore les petites taches.--smooth 0conserve les angles vifs.- Le script affiche la précision (IoU) et la déviation de bord en pixels. Pour les traits, la déviation de bord est la meilleure valeur : une moyenne inférieure à ~0,8 px est une copie très précise.
- Le script affiche la précision. Bonnes valeurs : plus de 95 % pour les silhouettes et logos, 88–92 % pour les contours fins, 80–88 % pour
--centerline(chaque trait a une largeur). Les pixels de bord diminuent l'IoU. En mode edges, la valeur n'est pas utile. Si la valeur est faible, examine la copie et ajuste--thresholdou--detail. - Montre la copie à côté de l'original avant de créer l'animation.
Fourier : chaque contour séparé a sa propre série, donc aucune ligne ne relie les parties. --single-line donne le style « un seul trait de stylo ».
python scripts/fourier_draw.py --text "Ana" --terms 300 --anim ana.mp4 --size reels --png ana.png
python scripts/fourier_draw.py --svg-path "M100 30 C 160 -20 220 60 100 170 C -20 60 40 -20 100 30 Z" \
--terms 40 --png heart.png --desmos heart.txt
Entrées : --svg-path, --svg-file, --text, --points (JSON). Sorties : --png (--fill), --anim, --svg, --desmos (t de 0 à 1), --json.
SDF : importe-le en tant que bibliothèque dans un court script.
import sys; sys.path.insert(0, "<skill-folder>/scripts")
from sdf import *
P = grid("square", scale=1.2)
body = ellipse(P, 0.6, 0.45)
ears = triangle(mirror_x(P), (0.15, 0.25), (0.5, 0.15), (0.45, 0.72))
cat = smooth_union(body, ears, 0.06)
eyes = circle(translate(mirror_x(P), 0.22, 0.05), 0.07)
render([(cat, "#2b2d42", {"shadow": (0.02, -0.03, 0.05)}), (eyes, "#ffd23f")], "cat.png", theme="paper")
Le docstring de sdf.py liste les primitives, opérations et options de calque. Animation : animate(lambda t: [layers], "out.mp4", frames=120). Pour Shadertoy/GLSL, lis references/glsl.md.
Courbes : la variable a varie de 0 à 1 pendant l'animation. Utilise ::#hex pour définir une couleur.
python scripts/curves.py --region "(x**2+y**2-1)**3 - x**2*y**3::#e63946" \
--range -1.6,1.6,-1.3,1.5 --caption '$(x^2+y^2-1)^3 = x^2y^3$' --png heart.png
python scripts/curves.py --polar "1+0.3*cos(7*th+6.283*a)" --anim flower.mp4 --size reels
Tupper :
python scripts/tupper.py encode --text "HELLO" --png tupper.png --out k.txt
python scripts/tupper.py encode --ascii drawing.txt --png art.png --out k.txt # '#' et '.'
python scripts/tupper.py classic --png formula.png
Encode se vérifie lui-même avec la vraie formule. Donne le k complet dans le fichier .txt.
Sortie pour les monteurs vidéo
- Réseaux sociaux :
.mp4(H.264). Slack, email, README :.gif(540 px maximum). - Incrustation sur une vidéo : utilise
--transparentavec.mov(ProRes 4444 avec alpha),.webm(VP9 avec alpha) ou un nom de dossier (séquence PNG). Premiere, DaVinci, After Effects et Final Cut acceptent le.mov. Si un éditeur n'accepte pas la vidéo avec alpha, utilise la séquence PNG. - Une boucle est parfaite si l'animation utilise
auniquement dans sin/cos(2π·a). - Pour plus de conseils (zones de sécurité, durées, idées de séries), lis
references/creator-playbook.md.
Dessiner sans image
- Divise le sujet en 3 à 8 formes simples (chat = ellipse + 2 triangles + cercles).
- Utilise
mirror_xpour les sujets symétriques. - Pour Fourier, écris un chemin SVG fermé dans une boîte de 0 à 200 avec des courbes C.
- Pour Tupper, dessine le bitmap en ASCII (17 rangées, 106 colonnes maximum).
- Assure-toi qu'une personne peut identifier immédiatement le sujet dans chaque aperçu.
Limites
Dessine des créations originales, les propres œuvres et logos de l'utilisateur, des formes génériques et des œuvres du domaine public. Ne copie et ne trace pas de personnages, mascottes, logos ou œuvres d'art appartenant à d'autres personnes, même si l'utilisateur fournit l'image. Ne crée pas de versions « similaires » de ceux-ci. Propose une création originale. Copie des photos de personnes réelles uniquement si l'utilisateur possède la photo ou a la permission.
Réponse
Garde la réponse courte : ce que tu as dessiné, la méthode et pourquoi (une phrase), les paramètres principaux (termes, équation, k court) et une légende prête à l'emploi. Propose une variation utile en une ligne.