Main Spaces

Author: Oscar Julián Tinjacá y Luis Miguel Báez

Aplicación de Transformaciones Espaciales Usando P5js

Edit This Page

Pincel en 3D

Espacios Vectoriales

Un espacio vectorial es una estructura matemática definida por un número determinado de vectores linealmente independientes, también llamados vectores base; el número de vectores linealmente independientes define el tamaño del espacio vectorial, por lo que un espacio 3D tiene tres vectores base, mientras que un espacio 2D tendría dos.

Vectores base en 3 dimensiones

Transformaciones Espaciales

Podemos ver las transformaciones en un espacio vectorial simplemente como un cambio de un espacio a otro. Si queremos representar una transformación de un espacio 3D a otro necesitaremos una Matriz 4x4.

Tipos de Transformaciones

Implementación

Para la Implementación del pincel en un espacio de 3 dimensiones inicialmente se usaron dos librerías.

  • Treegl: Librería de alto nivel enfocada en transformaciones espaciales.
  • EasyCam: Librería enfocada en el control de la cámara en espacios de 3 dimensiones.

Extraido de: Treegl - Github

Extraido de: EasyCam - Github

Como dispositivo de hardware externo, se usó un control de Xbox 360; para su conexión con el entorno de p5js, se usó la función "addEventListener()" que reconoce los posibles eventos que puedan intervenir en la ejecución del código. Al conectar el control al computador se registra el evento "gamepadconnected". Posteriormente, se configura los botones y ejes para establecer las funcionalidades que pueda tener el código.

Conociendo el Hardware

  • A. Cambio de vista en la cámara.
  • B. Cambio de color en la brocha.
  • 1. Moviemiento de la brocha en el espacio.
  • 2. Traza de puntos generada por la brocha.
  • 7. Limpieza del espacio.
  • 8. Zoom-in / Zoom-out de la cámara en el espacio.
  • 8 + 12. Movimiento de la cámara en el espacio.

Control de Xbox

Resultados usando P5js

Dibujando Moléculas de Compuestos Químicos

Conclusiones y Trabajo Futuro

  • Se podría implementar una función similar a orbitcontrol() que sea funcional para cualquier dispositivo externo ya que esta tiene una limitación y solo funciona con mouse o touchpad.
  • Se podrían añadir más funcionalidades para la brocha en su recorrido ya que el hardware posee una cantidad suficiente de botones para ello
Resources: References
Coding Labs

Coding Labs

Bio Model

Bio Model

Module Progress: