Dibuja Cualquier Cosa
Transforma una solicitud en un dibujo matemático y entrega las matemáticas junto con él. Los usuarios suelen ser creadores de contenido y editores de video. Proporciona archivos en el formato correcto y explica el método en palabras sencillas.
Procedimiento
- Identifica el tema, el destino (Reels, post, YouTube, superposición de video), si es estático o animado, y los colores. Si faltan datos, usa valores predeterminados (cuadrado, tema oscuro). Informa al usuario de los valores predeterminados. No hagas muchas preguntas.
- Selecciona el método (tabla a continuación). Si el usuario nombra un método, úsalo.
- Si el usuario proporciona una imagen, cópiala con
trace_image.py. Una copia es más precisa que un dibujo nuevo. - Si no hay imagen, crea la geometría tú mismo (ver "Dibujar sin una imagen").
- Haz una vista previa rápida (540 px, pocos fotogramas). Obsérvala con el visor de imágenes. Corrige las proporciones, el encuadre y los colores. Repite esto hasta que el resultado sea bueno.
- Genera el archivo final en el tamaño solicitado.
- Coloca los archivos en la carpeta de salida y preséntalos. Da una respuesta breve: método, parámetros principales y un pie de foto listo.
Selección de método
| Solicitud | Método | Script |
|---|---|---|
| Copiar una imagen (dibujo, logotipo, letras, silueta, ilustración, foto) | Bézier (Potrace), Fourier por contorno para animación | trace_image.py |
| Nombre, firma, nuevo contorno, "dibujado por círculos" | Fourier | fourier_draw.py |
| Formas rellenas: icono, mascota, logotipo, escena, patrón, mandala | SDF | sdf.py (biblioteca) |
| Ecuación como tema, curva famosa, región rellena | Implícita | curves.py |
| Espiral, rosa, Lissajous, espirógrafo | Paramétrica/polar | curves.py |
| Arte pixelado, "fórmula que se dibuja a sí misma" | Tupper | tupper.py |
| Fractal, planta, campo de flujo | Otro | tu propio código (references/methods.md §7) |
Fourier por sí solo no puede copiar esquinas afiladas exactamente (efecto Gibbs). Para una copia exacta, usa Bézier. Usa Fourier para la animación.
Scripts
Todos los scripts están en scripts/. Ejecuta un script con --help para ver todas las opciones. Opciones comunes:
--size (reels, post, square, youtube, thumb, 4k o WxH), --theme (dark, light, neon, blueprint, paper), --transparent.
Dependencias: numpy, matplotlib, Pillow, imageio/ffmpeg, OpenCV, scikit-image, potracer (el script lo instala con pip si falta).
Copiar una imagen:
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 # trazos editables
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(predeterminado): arte lineal, logotipos, letras, siluetas, capturas de pantalla. Encuentra imágenes claras sobre fondo oscuro y elimina barras negras.--mode color --colors N: ilustraciones, impresiones, pinturas, iconos, fotos. Usa 12–16 colores para obras de arte y fotos. Añade--linespara impresiones, cómics y arte con tinta: agrega capas superiores para los contornos oscuros finos y los pequeños detalles claros (espuma, estrellas, reflejos).--detail 1conserva más detalles pequeños.--mode edges: convierte una foto en un dibujo lineal.--centerline: para arte lineal, bocetos, escritura a mano y firmas. Cada trazo se convierte en una ruta SVG editable con su ancho de trazo (como una línea de bolígrafo en Illustrator/Figma/Inkscape). Las uniones, cruces y esquinas afiladas se reparan, las partes rectas se convierten en líneas exactas y los extremos del trazo (redondo/cuadrado) se determinan a partir de la tinta. Anula con--capy--join. Sin--centerline, el SVG tiene contornos rellenos (mejor para logotipos, letras, siluetas).--anim-style pendibuja las curvas Bézier y luego muestra el relleno.--anim-style fourierusa una cadena de epiciclos para cada contorno o trazo. En modo color, los epiciclos dibujan los contornos de región más largos (--max-strokes, predeterminado 800) y luego el vector de color se desvanece.--keep-colorsconserva los colores originales (modo ink).--detail Nignora manchas pequeñas.--smooth 0mantiene esquinas afiladas.- El script imprime la precisión (IoU) y la desviación de bordes en píxeles. Para trazos, la desviación de bordes es el valor más relevante: una media inferior a ~0.8 px es una copia muy precisa.
- El script imprime la precisión. Valores buenos: más del 95% para siluetas y logotipos, 88–92% para contornos finos, 80–88% para
--centerline(cada trazo tiene un ancho). Los píxeles de borde disminuyen el IoU. En modo edges, el valor no es útil. Si el valor es bajo, observa la copia y ajusta--thresholdo--detail. - Muestra la copia junto al original antes de crear la animación.
Fourier: cada contorno separado obtiene su propia serie, por lo tanto no hay líneas que conecten las partes. --single-line da el estilo de "un solo trazo de bolígrafo".
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
Entradas: --svg-path, --svg-file, --text, --points (JSON). Salidas: --png (--fill), --anim, --svg, --desmos (t de 0 a 1), --json.
SDF: impórtalo como biblioteca en un script corto.
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")
El docstring de sdf.py enumera las primitivas, operaciones y opciones de capa. Animación: animate(lambda t: [layers], "out.mp4", frames=120). Para Shadertoy/GLSL, lee references/glsl.md.
Curvas: la variable a va de 0 a 1 durante la animación. Usa ::#hex para establecer un color.
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 # '#' y '.'
python scripts/tupper.py classic --png formula.png
Encode se verifica a sí mismo con la fórmula real. Proporciona la k completa en el archivo .txt.
Salida para editores de video
- Redes sociales:
.mp4(H.264). Slack, correo electrónico, README:.gif(máximo 540 px). - Superposición en metraje: usa
--transparentcon.mov(ProRes 4444 con alfa),.webm(VP9 con alfa) o un nombre de carpeta (secuencia PNG). Premiere, DaVinci, After Effects y Final Cut aceptan el.mov. Si un editor no acepta video alfa, usa la secuencia PNG. - Un bucle es perfecto si la animación usa
asolo en sin/cos(2π·a). - Para más consejos (áreas seguras, duraciones, ideas de series), lee
references/creator-playbook.md.
Dibujar sin una imagen
- Divide el sujeto en 3 a 8 formas simples (gato = elipse + 2 triángulos + círculos).
- Usa
mirror_xpara sujetos simétricos. - Para Fourier, escribe una ruta SVG cerrada en un cuadro de 0–200 con curvas C.
- Para Tupper, dibuja el mapa de bits en ASCII (17 filas, 106 columnas como máximo).
- Asegúrate de que una persona pueda identificar el sujeto inmediatamente en cada vista previa.
Límites
Diseña diseños originales, el arte y los logotipos del propio usuario, formas genéricas y obras de dominio público. No copies ni rastrees personajes, mascotas, logotipos u obras de arte que pertenezcan a otras personas, incluso si el usuario proporciona la imagen. No hagas versiones "similares" de ellos. Ofrece un diseño original. Copia fotos de personas reales solo si el usuario posee la foto o tiene permiso.
Respuesta
Mantén la respuesta breve: qué dibujaste, el método y por qué (una oración), los parámetros principales (términos, ecuación, k corta) y un pie de foto listo. Ofrece una variación útil en una línea.