Genera animaciones de epiciclos de Fourier al estilo Manim a partir de imágenes.
- Extrae el contorno de una imagen (silueta)
- Calcula la Transformada Discreta de Fourier (DFT) usando KissFFT
- Genera un video con rendering de alta calidad (Cairo) o estándar (OpenCV)
winget install Kitware.CMakeO descarga desde: https://cmake.org/download/
⚠️ Importante: Después de instalar, cierra y abre PowerShell para que reconozca el comandocmake.
winget install Microsoft.VisualStudio.2022.BuildToolsDurante la instalación, selecciona "Desktop development with C++"
Alternativa: Instala Visual Studio Community
# Clonar vcpkg
git clone https://github.com/microsoft/vcpkg.git C:\vcpkg
cd C:\vcpkg
.\bootstrap-vcpkg.bat
# Integrar con Visual Studio/CMake
.\vcpkg integrate installcd C:\vcpkg
# OpenCV (obligatorio)
.\vcpkg install opencv4:x64-windows
# Cairo (opcional, para mejor calidad de rendering)
.\vcpkg install cairo:x64-windows💡 Nota: Cairo es opcional. Sin él, el programa usará OpenCV para renderizar (funciona igual, pero con menos antialiasing).
git clone --recursive https://github.com/asdcainicela/fourier-epicycles-cpp.git
cd fourier-epicycles-cppNota: El flag
--recursivedescarga los submodules (dmilos/colorykissfft)
Si ya clonaste sin --recursive:
git submodule update --init --recursivecd fourier_animation
mkdir build
cd buildTienes dos opciones para compilar:
- Abre "Developer Command Prompt for VS 2022" desde el menú Inicio
- Navega al directorio de build:
cd "C:\ruta\a\fourier-epicycles-cpp\fourier_animation\build"
- Configura con CMake:
cmake .. -G "Ninja" -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake - Compila:
ninja
Si prefieres usar PowerShell sin abrir Developer Command Prompt, usa este comando que configura el entorno automáticamente:
# Configurar CMake
cmd /c "`"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat`" && cd /d `"$PWD`" && cmake .. -G Ninja -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake"
# Compilar
cmd /c "`"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat`" && cd /d `"$PWD`" && ninja"
⚠️ Nota: Si tienes Visual Studio Community/Professional en lugar de Build Tools, la ruta sería:C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat
Deberías ver algo como:
-- OpenCV version: 4.x.x
-- Cairo found via vcpkg
-- === Fourier Animation Build Configuration ===
-- Build type: Release
-- OpenCV: 4.x.x
-- Cairo: TRUE
-- ==============================================
.\Release\fourier_animation.exe <imagen> [opciones]# Básico
.\Release\fourier_animation.exe mi_imagen.png
# Con opciones
.\Release\fourier_animation.exe logo.png -o video.mp4 -n 200 -f 900
# Alta calidad (más epiciclos, más resolución)
.\Release\fourier_animation.exe silueta.png -n 500 -w 3840 -h 2160 --fps 60| Opción | Descripción | Default |
|---|---|---|
-o, --output <path> |
Ruta del video de salida | fourier_output.mp4 |
-n, --circles <num> |
Número de epiciclos | 100 |
-f, --frames <num> |
Total de frames | 600 |
--fps <num> |
Frames por segundo | 60 |
-w, --width <num> |
Ancho del video | 1920 |
-h, --height <num> |
Alto del video | 1080 |
--samples <num> |
Puntos del contorno | 500 |
--no-circles |
Ocultar círculos | - |
--no-vectors |
Ocultar vectores | - |
--no-path |
Ocultar trazo | - |
--cpu |
Forzar encoding por CPU | - |
fourier-epicycles-cpp/
├── external/
│ ├── color/ # Biblioteca de colores (submodule)
│ └── kissfft/ # FFT library (submodule)
├── fourier_animation/
│ ├── include/
│ │ ├── fourier.hpp
│ │ ├── contour_extractor.hpp
│ │ ├── animation.hpp
│ │ └── video_writer.hpp
│ ├── src/
│ │ ├── main.cpp
│ │ ├── fourier.cpp
│ │ ├── contour_extractor.cpp
│ │ ├── animation.cpp
│ │ └── video_writer.cpp
│ └── CMakeLists.txt
└── README.md
| Biblioteca | Tipo | Descripción |
|---|---|---|
| OpenCV | vcpkg | Extracción de contornos, video I/O |
| Cairo | vcpkg (opcional) | Rendering 2D de alta calidad |
| KissFFT | submodule | Transformada de Fourier |
| dmilos/color | submodule | Manejo de colores |
#include <color/color.hpp>
// Usar constantes de color
::color::rgb<std::uint8_t> rojo = ::color::constant::red_t{};
::color::rgb<std::uint8_t> turquesa = ::color::constant::turquoise_t{};
// Convertir a cv::Scalar para OpenCV (BGR)
cv::Scalar scalar(rojo[2], rojo[1], rojo[0]);Instala CMake y reinicia PowerShell:
winget install Kitware.CMake
# Cierra y abre PowerShellEste error ocurre cuando ejecutas CMake desde PowerShell sin el entorno de Visual Studio configurado. Soluciones:
- Usar Developer Command Prompt (ver Paso 3, Opción A), o
- Usar el wrapper de entorno (ver Paso 3, Opción B)
CMake no encuentra Visual Studio. Verifica:
- Tienes instalado Visual Studio Build Tools o Visual Studio Community
- Instalaste el componente "Desktop development with C++"
- Si aún falla, limpia la caché de CMake y usa el generador Ninja:
Remove-Item -Recurse -Force CMakeCache.txt, CMakeFiles
# Luego usa la Opción B del Paso 3Limpia la caché de CMake antes de cambiar el generador:
Remove-Item -Recurse -Force CMakeCache.txt, CMakeFilesAsegúrate de usar el toolchain de vcpkg:
cmake .. -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmakeEs solo una advertencia. CUDA es opcional para aceleración de hardware.
git submodule update --init --recursiveAsegúrate de tener codecs instalados. Instala K-Lite Codec Pack si es necesario.
Verifica que instalaste Cairo con vcpkg:
C:\vcpkg\vcpkg install cairo:x64-windowsMIT License
- Inspirado en 3Blue1Brown
- FFT: KissFFT
- Rendering: Cairo / OpenCV
- Biblioteca de colores: dmilos/color
- Visualización: OpenCV
