Aplicación web interactiva para construir configuraciones de carga y explorar su campo eléctrico, potencial y efecto sobre partículas de prueba. El simulador funciona por completo en el navegador y usa un canvas 2D para representar un mundo físico de −10 m a 10 m en ambos ejes.
- Cargas puntuales positivas y negativas.
- Distribuciones lineales y superficiales con densidad, dimensiones y ángulo editables.
- Visualización independiente de vectores de campo, líneas de campo, mapa de potencial, curvas equipotenciales, grilla y ejes.
- Partículas de prueba con relación
q/m, velocidad de simulación, pausa y trazas de movimiento. - Inspector para seleccionar, mover, editar o eliminar fuentes.
- Cámara 2D con zoom bajo el cursor, desplazamiento, minimapa, encuadre automático y retorno al origen.
- Lectura en tiempo real de posición, componentes de E, magnitud del campo y potencial V bajo el cursor.
- Configuraciones rápidas: dipolo, cargas iguales, líneas opuestas y placas paralelas.
- Muestreo adaptativo de vectores y potencial para mantener una densidad visual estable durante la navegación.
- Node.js
20.19o superior, o22.12o superior. - npm
10o superior.
Clona el repositorio, instala las dependencias y levanta el servidor de desarrollo:
git clone https://github.com/RafaVillas/Electrostatics-Simulator.git
cd Electrostatics-Simulator
npm ci
npm run devVite mostrará la URL local, normalmente http://localhost:5173. La aplicación usa módulos JavaScript nativos, por lo que debe abrirse desde el servidor de desarrollo y no directamente mediante file://.
- Elige una carga, distribución o partícula en la sección Elementos.
- Haz clic derecho dentro del área física para colocarla. La herramienta permanece activa para poder crear varios elementos.
- Usa Ctrl + clic sobre una fuente para seleccionarla y editar sus propiedades.
- Activa o desactiva las capas de visualización en la sección Campo.
- Mueve el cursor sobre el canvas para consultar el campo y el potencial en cualquier punto.
| Acción | Control |
|---|---|
| Desplazar la vista | Arrastrar con el botón izquierdo |
| Seleccionar una fuente | Ctrl + clic izquierdo |
| Mover una fuente | Ctrl + arrastrar |
| Colocar el elemento activo | Clic derecho |
| Acercar o alejar | Rueda del ratón o botones + / − |
| Centrar desde el minimapa | Clic o arrastre sobre el minimapa |
| Cancelar la herramienta activa | Esc |
| Eliminar la fuente seleccionada | Supr, Retroceso o el botón del inspector |
Los botones sobre el canvas permiten volver a la vista inicial y encuadrar todas las fuentes existentes.
El campo y el potencial se calculan mediante superposición:
E(r) = k Σ dq · R / |R|³
V(r) = k Σ dq / |R|
E = −∇V
k = 8.9875517923 × 10⁹ N·m²/C²
Las cargas puntuales se evalúan con la ley de Coulomb. Las distribuciones lineales y superficiales se aproximan mediante sumas de elementos discretos dq. Una pequeña región alrededor de cada muestra se omite para evitar la singularidad numérica en r = 0.
Las partículas son sondas ideales: obedecen a = (q/m)E, pero no aportan carga al sistema ni modifican el campo. La visualización es un corte 2D pensado con fines educativos; no sustituye un solucionador electrostático de alta precisión.
| Comando | Descripción |
|---|---|
npm run dev |
Inicia el servidor de desarrollo de Vite. |
npm test |
Ejecuta las pruebas automatizadas con Node.js. |
npm run build |
Genera la versión de producción en dist/. |
npm run preview |
Sirve localmente el contenido generado. |
npm run check |
Ejecuta las pruebas y luego compila el proyecto. |
Antes de confirmar cambios se recomienda ejecutar:
npm run checkindex.html Interfaz y controles de la aplicación
src/
├── main.js Estado, renderizado y coordinación de eventos
├── camera.js Cámara 2D, transformaciones, límites y encuadre
├── config.js Constantes físicas y límites del mundo
├── interaction.js Intención del puntero y detección de fuentes
├── physics.js Campo, potencial y discretización de fuentes
├── potential-grid.js Grilla escalar y extracción de equipotenciales
├── property-controls.js Normalización y formato de propiedades
├── vector-grid.js Distribución adaptativa de vectores
└── styles.css Presentación visual y diseño adaptable
test/ Pruebas unitarias de los módulos anteriores
vite.config.js Configuración de Vite
npm run build
npm run previewEl contenido estático listo para publicar queda en dist/. npm run preview solo permite revisar localmente la compilación; no está pensado como servidor de producción.
Creado por Rafael Villaseñor Carrasco.