GENERADOR DE PÁGINAS WEB HTML5+THREE.JS DE SIMULACIONES FÍSICAS              
GUIA DE USO
DATOS GENERALES Y DE INICIO DE SIMULACIÓN                  
DESCRIPCION   texto descriptivo de la simulación concreta
DIRECTORIO D:\3DPPT\ directorio donde se grabará el fichero de salida "index.html". Debe contener las librerias three.min.js, dat.gui.min.js y firstpersoncontrols.js
ESCALA F.   factor de escala de las flechas de fuerza en los objetos tipo TESTIGO
TAM.TRAZA 2000 longitud de la traza (número de pasos de la simulación) de los objetos marcados con "SI" en la columna TRAZA de la lista de objetos
VELOCIDAD 90 velocidad de la simulación, entre 42 (más lento, tiempo real) y 100 (más rápido). Una simulación muy rápida puede ir acumulando errores por el método de simulación empleado
SEGMENTOS 16 número de segmentos al dibujar cada esfera. A mayor número, mayor precisión pero mayor carga de memoria. Recomendado 16
TAM. EJES. 200 si >0, dibuja ejes ordenados XYZ en el origen, en colores RGB respectivamente, con el tamaño informado. Se hacen visibles o invisibles con el check "flechas" de los controles
PARADO SI si es SI, la simulación se carga en el navegador inicialmente detenida. Quitar el check en el control "para" para iniciar
SOMBRAS   si es SI, los objetos proyectan sombras sobre el suelo (marca el check "sombra" al inicio de la simulación)
FLECHAS SI si es SI, se dibuja el vector velocidad en los objetos con valor SI en la columna FLECHAS de la lista de objetos (marca el check en el control "flechas" desde el inicio)
SUELO   si es SI, se dibuja el suelo (con coordenada Y=0) desde el inicio de la simulación (se puede cambiar con el check del control "suelo")
COLORSUELO 0xAAAAAA color del suelo en formato hexadecimal, con formato "0xRRGGBB", donde RR son dos dígitos hexadecimales de la componente roja, GG verde y BB azul
T.PARADA   instante en el que la simulación se detiene (se puede continuar con el check del control "para")
COLORFONDO 0xAAAAAA color del fondo en formato hexadecimal, con formato "0xRRGGBB", donde RR son dos dígitos hexadecimales de la componente roja, GG verde y BB azul
TEXTOS   si, no o vacío; insertar textos en luegar de geometría (esfera o cubo), si se indica un texto en la columna TEXTO de la lista de objetos
COLOR PTO   color de los objetos tipo PUNTO (aplica a todos los Puntos; se ignora el color informado en cada objeto tipo PUNTO)
TAM. PTO   tamaño de los objetos tipo PUNTO (aplica a todos los Puntos; se ignora el tamaño informado en cada objeto tipo PUNTO)
DATOS DE POSICIÓN DE CÁMARA                    
Indicar posición de la cámara, o nº de orden del objeto en el que se sitúa y al que está mirando.
la cámara se puede mover con las teclas AWSDRF (izq, acercar, alejar,der,arriba,abjao) y si se pulsa Q, con la posición del ratón en la ventana del navegador
pulsando la tecla Q consecutivamente se activa/desactiva el movimiento de la cámara con el ratón
  POS_X POS_Y POS_Z
CAMARA 0 10 300 posición de la cámara fija, en coordenadas XYZ. No se utiliza si se define "cámara en objeto"
EN OBJETO 21 número de orden del objeto (primera columna de la lista de objetos) al que se adocia la cámara, que se mueve con este objeto
    si se indica "en objeto", la cámara no se puede mover con el teclado a no ser que se pare la simulación.
MIRANDO A 11 objeto al que está dirigida la cámara de forma continua. Si no se indica, apunta a la posición (0,0,0). 
"EN OBJETO" y "MIRANDO A", junto con una velocidad constante de todas las partículas y la activación de la traza permite mantener fija la simulación y obtener una gráfica en el tiempo del movimiento de la partícula  
MIRANDO X Y Z   coordenadas hacia las que se enfoca la cámara (alternativa a "MIRANDO A"). Por defecto, 0,0,0
NIEBLA NO si es SI, aplica un efecto niebla
DATOS DE LA SIMULACIÓN FÍSICA                    
fuerzas físicas aplicadas a las partículas (sólo a los objetos tipo ESFERA)
TIPO 0: ninguna; 1: grav; 2:elastica; ;3:electrostatica;4: gravedad limitada a R; VECINOS: SI: primeros vecinos; NO: todos;SIC: primeros vecinos ciclico;SI2:RED 2D
COLISIONES   si es SI, las esferas son sólidas y colisionan entre sí
TAM.CAJA   si se indica un valor mayor que 0, se detectan colisiones con las paredes de una caja de dicho tamaño. La caja no se dibuja. Utilizar objetos tipo CUBO para dibujar la caja si se desea.
L. RIGIDAS   si es SI, los objetos tipo LINEA, que unen dos objetos (ESFERAs o CUBOs) sin de longitud fija y las partículas unidas se mueven conforme a dicha ligadura
TIPO FUERZA 2 tipo de fuerza entre ESFERAs:  0: ninguna; 1: gravitatoria; 2:elástica; ;3:electrostática;4: gravedad limitada al tamaño de la esfera;5: elástica con el mínimo de energía a una distancia no nula
    en la columna MASA se indica la masa de la ESFERA (inercial y gravitatoria); en la columna K, la constante elástica (la K total es el producto de Ki*Kj) o la carga eléctrica
LIM TAM   si es SI, cuando las dos esferas están en contacto, no aplica ninguna fuerza (evita en parte el colapso de las esferas en fuerzas atractivas con simulaciones rápidas)
VECINOS SI NO o vacío: la fuerza aplica entre todos los pares de ESFERAs; SI: la fueza aplica sólo entre primeros vecinos (objeto N y N+1); SIC: primeros vecinos con última esfera conectada a la primera; 
    SI2: conexiones entre partículas en malla 2D
TAM RED 2D   tamaño de la malla 2D si VECINOS=SI2 (si el tamaño es L, los objetos 1 a L*L deben ser esferas y forman la malla en filas de longitud L)
GRAV.VERT.   aplica a todas las ESFERAs una aceleración de dicha magnitud constante en la dirección -Y
MIN. ELAST   si tipo de fuerza es 5 (elástica con mínimo de energía en distancia no nula, especifica la distancia entre partículas en las que está este mínimo
FRICCION 0.005 aplica una fuerza F=-K*V, donde K es el valor que se indique y V es la velocidad. En blanco para no aplicar. DIR.FRIC indica los ejes sobre los que se aplica la componente de fricción.
DIR.FRIC. YZ indica las direcciones sobre las que se aplica la fuerza de fricción (posibles valores: X,Y,Z, XY, XZ, YZ, ZYZ)
FX(X,Y,Z)   fuerza en la dirección X que se aplica a todas las esferas, en función de su posición XYZ y del instante T formulas con formato javascript con X,Y,Z,T en mayusculas
FY(X,Y,Z)   fuerza en la dirección Y que se aplica a todas las esferas, en función de su posición XYZ y del instante T
FZ(X,Y,Z)   fuerza en la dirección Z que se aplica a todas las esferas, en función de su posición XYZ y del instante T
    FX, FY y FZ son fórmulas con formato javascript con las variables X,Y,Z,T en mayusculas. Pueden usarse funciones Math.* de javascript.
LISTA DE OBJETOS
Usar punto en lugar de coma para decimales; para CUBO, columnas MASA y K son tamaños;LINEA, indicar nº orden objeto "de" "a" en columnas POS_X y POS_Y
las casillas numéricas pueden contener fórmulas (por ejemplo, calcular la velocidad V según la posición para que en una simulación de la gravedad la órbita sea circular)
tipo ESFERA: tiene masa y se aplica la física
tipo CUBO: no tiene masa, no se le aplica la física. Mantiene la velocidad inicial definida en VX, VY, VZ de forma constante
tipo LINEA: cilindro que une dos objetos (ESFERAs o CUBOs). Si es RÍGIDA, mantiene su longitud constante y afecta a la física de las partículas como una ligadura
tipo TESTIGO: se define exactamente igual que esfera, pero no interactua. Dibuja un vector proporcional a la fuerza. Sirve para representar la fuerza aplicada en el punto donde se encuentra. Se puede mover con velocidad constante.
tipo FUENTE: se define exactamente igual que esfera, no interactúa con el resto de objetos, pero sí ejerce fuerza sobre el resto de objetos y colisiona
tipo LOADER: se define como la esfera, pero para la carga de la geometría con un loader, se utiliza el código en la columna CODIGO L (debe incluir la asignación geometrias=…) y del material en CODIGO M (debe incluir materiales….). Requiere incluir explícitamente el código THREE JS. loader = new THREE.JSONLoader();loader.load( "obj/leeperrysmith/LeePerrySmith.js", function( geometry ) {geometrias=geometry; var textureLoader = new THREE.TextureLoader();materiales = new THREE.MeshPhongMaterial( {color: 0xdddddd,specular: 0x222222,shininess: 35,map: textureLoader.load( "obj/leeperrysmith/Map-COL.jpg" ),specularMap: textureLoader.load( "obj/leeperrysmith/Map-SPEC.jpg" ),normalMap: textureLoader.load( "obj/leeperrysmith/Infinite-Level_02_Tangent_SmoothUV.jpg" ),normalScale: new THREE.Vector2( 0.8, 0.8 )} );
tipo LOADERO: se define como la esfera, pero para la carga de un objeto completo con un loader, se utiliza el código en la columna CODIGO L (debe incluir la asignación objetos[i]=…). Requiere incluir explícitamente el código THREE JS. loaderr = new THREE.ObjectLoader(); loaderr.load( "r2d2js/r2-d2.json", function(r2d2 ) {objetos[i]=r2d2;
tipo PUNTO: comportamiento igual al de ESFERA. Todos los puntos tienen el mismo tamaño y color (en parámetros TAM PTO y COLOR PTO). Renderizado más eficiente que esferas, útil para gran cantidad de objetos
IMPORTANTE: Los objetos tipo línea deben estar siempre al final de la lista, después de ESFERAS y CUBOS.
Nº ORDEN TIPO (CUBO,ESFERA) POS_X POS_Y POS_Z TAMAÑO_X MASA/tam_y K/tam_z ROTACION_X ROTACION_Y ROTACION_Z COLOR_R COLOR_G COLOR_B VX VY VZ TRAZA (SI/) FLECHA TEXTURA TEXTO TAMAÑO FONDO BISEL GR. BISEL TAM. codigo L codigo M
id. del objeto tipo posición X posición Y posición Z 0 a 255 0 a 255 0 a 255 velocidad inicial dibuja traza dibuja vector velocidad fichero con textura texto tamaño grosor grueso del tamaño del
1 ESFERA posición X posición Y posición Z radio masa constante elástica o carga 0 a 255 0 a 255 0 a 255 velocidad inicial 0 0 dibuja traza dibuja vector velocidad xxx/xxxx.xxx en lugar de del texto del texto bisel bisel
2 TESTIGO posición X posición Y posición Z radio masa constante elástica o carga 0 a 255 0 a 255 0 a 255 velocidad inicial 0 0 dibuja traza dibuja vector velocidad geometría
3 FUENTE posición X posición Y posición Z radio masa constante elástica o carga 0 a 255 0 a 255 0 a 255 velocidad inicial 0 0 dibuja traza dibuja vector velocidad
4 CUBO posición X posición Y posición Z ancho alto fondo rotación del cubo en direcciones XYZ 0 a 255 0 a 255 0 a 255 velocidad inicial 0 0 dibuja traza dibuja vector velocidad
5 LINEA objeto "desde" objeto "a" se ignora radio del cilindro se ignora se ignora 0 a 255 0 a 255 0 a 255 se ignora se ignora se ignora
6 LOADER posición X posición Y posición Z radio masa constante elástica o carga 0 a 255 0 a 255 0 a 255 velocidad inicial 0 0 dibuja traza dibuja vector velocidad geometry material
7 LOADERO posición X posición Y posición Z radio masa constante elástica o carga 0 a 255 0 a 255 0 a 255 velocidad inicial 0 0 dibuja traza dibuja vector velocidad objeto
8 PUNTO posición X posición Y posición Z N/A masa constante elástica o carga N/A N/A N/A N/A N/A N/A velocidad inicial 0 0 dibuja traza dibuja vector velocidad
Nº ORDEN ordinal consecutivo comenzando con 1
TIPO (CUBO,ESFERA) debe ser CUBO, ESFERA o LINEA. El CUBO no interacciona con ningún otro elemento. La esfera interacciona según el tipo de fuerza y su masa
POS_X posición X del objeto
POS_Y posición Y del objeto
POS_Z posición Z del objeto
TAMAÑO_X ESFERA: radio de la esfera; CUBO: tamaño en la dirección X
MASA/tam_y ESFERA: masa de la esfera; CUBO: tamaño en la dirección Y
K/tam_z ESFERA: para fuerzas elásticas, ki en F=-ki*kj*d; para fuerzas electrostáticas, carga, positiva o negativa; para gravedad, sin efecto. CUBO: tamaño en la dirección Z
ROTACION_X rotación en torno al eje X del objeto
ROTACION_Y rotación en torno al eje Y del objeto
ROTACION_Z rotación en torno al eje Z del objeto
COLOR_R componente R entre 0 y 255 del color del objeto
COLOR_G componente G entre 0 y 255 del color del objeto
COLOR_B componente B entre 0 y 255 del color del objeto
VX velocidad inicial del objeto en la dirección X
VY velocidad inicial del objeto en la dirección Y
VZ velocidad inicial del objeto en la dirección Z
TRAZA (SI/) SI: el objeto deja traza (línea de color negro con el movimiento descrito por el objeto); vacío o cualquier otro valor: sin traza
FLECHA se dibuja el vector velocidad ligado al objeto
TEXTURA nombre del fichero con la textura a aplicar al objeto. Debe estar en el mismo directorio que index.html, o en subdirectorios de este utilizando /
TEXTO texto a insertar en lugar de la geometría(esfera o cubo), si TEXTOS=Sx. Si está vacío, se ignora.
TAMAÑO tamaño del texto
FONDO grosor o fondo del texto
BISEL GR. grosor del bisel del texto
BISEL TAM. tamaño del bisel del texto
CODIGO l código JS THREE para carga de la geometría del objeto o el objeto json. Tiene que asignarse la variable geometrias u objetos[i]. Para usar loaders. Controla el cierre de la función de callback al final del setup world
CODIGO M código JS THREE para carga del material del objeto. Tiene que asignarse la variable materiales.
HOJA EVENTOS esta hoja indica las modficaciones en las propiedades de objetos a partir de un instante dado. Cada modificación puede ser en valor absoluto o en incremento
Para definir el fin de una acción, poner una fila adicional a continuación, para el mismo objeto, en T+1, sin nada más de definición en toda la fila
OBJETO indice del objeto, desde 1 hasta N, en el mismo orden en que aparece en la tabla de objetos
TIEMPO instante a partir del cual se aplica la modificación de propiedades
VX velocidad X
VY velocidad Y
VZ velocidad Z
ABS/INC V Absoluto o incremental (se incrementa en que cada paso de la simulación). Si no comienza por A o I, no se aplica modificación a la velocidad
ROTX rotación X
ROTY rotación Y
ROTZ rotación Z
ABS/INC R Absoluto o incremental (se incrementa en que cada paso de la simulación). Si no comienza por A o I, no se aplica modificación a la rotación
POSX posición X
POSY posición Y
POSZ posición Z
ABS/INC P Absoluto o incremental (se incrementa en que cada paso de la simulación). Si no comienza por A o I, no se aplica modificación a la posición
ESCALA X escala de tamaño del objeto en la dirección X
ESCALA Y escala de tamaño del objeto en la dirección Y
ESCALA Z escala de tamaño del objeto en la dirección Z
ABS/INC E Absoluto o incremental multiplicativo (se incrementa en que cada paso de la simulación). Si no comienza por A o I, no se aplica modificación a la posición
VISIBLE (SI/NO) se hace visible si SI e invisible si NO. No hace nada si no tiene alguno de estos valores.
COMANDO comandos javascript que se ejecutan a partir del instante dado