muijs-cuerpos
Version:
Librería para simular y graficar interacciones entre cuerpos rígidos
119 lines (97 loc) • 4.42 kB
Markdown
<p align="center">
<!-- <a href="http://nestjs.com/" target="blank"><img src="https://nestjs.com/img/logo-small.svg" width="200" alt="Nest Logo" /></a> -->
<img src="Penates01.png" width="450" alt="mui.js"/>
</p>
## mui.js - cuerpos
Motor simulador y graficador de cuerpos rígidos
Completamente en Español
Proyecto de estudio
Creado por Nicolás Donoso
Versión actual: muijs-cuerpos@0.53.8
<a href="http://54.160.132.98/">Sitio Web (en desarrollo)</a>
<a href="https://www.npmjs.com/package/muijs-cuerpos">NPM</a>
## Descripción
__'mui.js - cuerpos'__ es un motor para simular y graficar interacciones entre cuerpos rígidos.
Hasta el momento permite:
- crear y dibujar figuras geométricas
- crear cuerpos con formas geométricas
- mover y acelerar cuerpos
- detectar colisiones entre cuerpos y con cuerpos contenedores
- crear cuerpos atractores y repulsores
- crear cuadrículas y pintar sus celdas según su estado
- incorporar controles y eventos con mouse y teclado
- choque elástico entre circunferencias
- grabar canvas
- control de tick y fps
- calcular colisiones con quadtree
## Contenidos
1. [Instalación](#instalacion)
2. [Primeros pasos](#primeros-pasos)
3. [Proyectos creados con mui.js - cuerpos](#ejemplos)
<a name="instalacion"></a>
## Instalación
```bash
npm install muijs-cuerpos
```
<a name="primeros-pasos"></a>
## Primeros pasos
### 1. Canvas
__'mui.js - cuerpos'__ utiliza el elemento HTML Canvas.
Para dibujar, tienes que tener en tu proyecto un canvas con su id definida.
```html
<canvas id="mi-canvas"></canvas>
```
### 2. Importaciones
En un archivo TypeScript importa la herramienta de dibujo y el generador de formas geométricas.
```typescript
import { Dibujante, Forma } from 'muijs-cuerpos'
```
### 3. Definiendo un cuadrado
La herramienta __Forma__ permite crear distintas formas geométricas.
Usaremos el método __rectangulo__:
```typescript
Forma.rectangulo(x: number, y: number, base: number, altura: number, opciones?: OpcionesForma & OpcionesGraficasForma)
```
Los primeros 2 parámetros son para las coordenadas (x, y) de su centro (considera que en el Canvas el eje Y está invertido, el origen está arriba y aumenta hacia abajo).
Los siguientes 2 parámetros son las dimensiones de la figura, en este caso Base y Altura.
El parámetro opcional de estilo permite definir colores y maneras en que será dibujada la figura.
Un ejemplo:
En este caso se dibujará un rectángulo centrado en el punto (75, 75), con Base y Altura 50x50 pixeles (por lo tanto será un cuadrado), coloreado de amarillo y con un borde azul de 6 pixeles.
```typescript
const Cuadrado: Forma = Forma.rectangulo(75, 75, 50, 50, {
colorRelleno: 'yellow',
colorTrazo: 'blue',
grosorTrazo: 6
})
```
### 4. Herramienta para dibujar
Existen varios métodos para dibujar en el Canvas las figuras que vayas creando.
Uno de ellos es usando la herramienta __Dibujante__, que cuenta con un método para dibujar formas.
Para usarla, primero hay que instanciarla usando el método __crearConIdCanvas__, que requiere el id del elemento Canvas.
```typescript
const NuevoDibujante: Dibujante = Dibujante.crearConIdCanvas("mi-canvas")
```
### 5. Dibujar el cuadrado
Puedes pasarle el cuadrado a la instancia de __Dibujante__ para dibujar tu primer cuadrado.
```typescript
NuevoDibujante.dibujar(Cuadrado)
```
El código final se vería así:
```typescript
import { Dibujante, Forma } from 'muijs-cuerpos'
const Cuadrado: Forma = Forma.rectangulo(75, 75, 50, 50, {
colorRelleno: 'yellow',
colorTrazo: 'blue',
grosorTrazo: 6
})
const NuevoDibujante: Dibujante = Dibujante.crearConIdCanvas("mi-canvas")
NuevoDibujante.dibujar(Cuadrado)
```
Y tu cuadrado:
<img src="./documentacion/primer_cuadrado.png">
<a name="ejemplos"></a>
## Proyectos creados con mui.js - cuerpos
- <a href="https://muinicomuiser.github.io/muijs-cuerpos/" target="_blank">Figuras geométricas y colisiones</a>
- <a href="https://muinicomuiser.github.io/boids" target="_blank">boids</a>
- <a href="https://muinicomuiser.github.io/Juego-de-la-vida" target="_blank">Juego de la Vida</a>
- <a href="https://muinicomuiser.github.io/Vida-y-particulas/" target="_blank">Vida y partículas</a>