OpenGL ssystem 1.4 13-Sep-1998
------------------------------



Que es ssystem:
---------------

	Ssystem es un simulador del Sistema Solar que utiliza OpenGL. Visita
  el Sol, los nueve planetas y algunos satelites (estrellas de fondo basadas
  en catalogo estan tambien incluidas) con 4 modos de camara.


Precision:
----------

	Aunque ssystem no es 100% preciso he intentado mantenerlos lo mas
  cerca posible de la realidad. Sin embargo, el objetivo de ssystem ha sido
  siempre mas un buen aspecto visual que la precision, asi que puede que
  encuentres errores en los algoritmos de posicionamiento.

	Solo los planetas y la Luna estan dentro de una rango de las
 posiciones reales, todos los demas satelites (aunque siguen unas orbitas
 mas o menos correctas) no estan en las posiciones reales.


Requisitos del sistema:
-----------------------

	-Linux o Windows 95/NT
	-Librerias OpenGL (probado con Mesa 2.6 y Microsoft DLLs)
	-Libreria GLUT (probado con 3.6)
	-Libreria JPEG (probado con 6.0.1)
        -Tarjeta 3D (NO IMPRESCINDIBLE pero RECOMENDADA)
                Voodoo Graphics (linux y win95/98)
                Voodoo Rush     (linux y win95)
                Riva 128        (win95/98)
		Permedia	(win95)

	Si tu chip 3d no esta incluido arriba y ssystem funciona acelerado
  por hardware mandame un e-mail.

	Ver Makefile para opciones de compilacion.


Notas de instalacion:
---------------------

	LINUX:
		-Consigue librerias compatibles OPENGL/GLU/GLUT.
		 (Mesa incluye todas esas y es facil de compilar, la encontraras
		  aqui --> http://www.ssec.wisc.edu/~brianp/Mesa.html)
		
		-Edita el directorio MESADIR en el Makefile.

		-Ejecuta make y con suerte ya esta.


	WINDOWS:
		-Asegurate de tener OPENGL32.DLL GLU32.DLL y GLUT32.DLL. Si no
		 es el caso puedes conseguirlas en la pagina de ssystem.
		 ( http://www1.las.es/~amil/ssystem )

		-He incluido un Makefile para Visual C++(Makefile.win). No
		 funcionara si intentas linkar con la librerias OpenGL por
		 defecto, asi que una vez mas te recomiendo que uses Mesa.
		 El binario de la libreria JPEG y los fichero de cabecera se
		 tambien se incluyen.

		-El comportamiento de ssystem es bastante raro bajo algunos
		 drivers OpenGL. Por lo que se, no es problema de ssystem.
		 Contacta con el fabricante para una revision del driver.


        3DFX:
                -DLLs con soporte para 3dfx Voodoo Graphics estan disponibles
                 en la pagina de ssystem. A menos que estas DLLs esten en el
                 mismo directorio que ssystem.exe o en el path (mejor el
                 primer metodo) el programa utilizara las DLLs OpenGL por
                 defecto y el rendimiento sera MUY bajo.



Opciones en linea de comando:
-----------------------------

	-bench
	
		Aborta la ejecucion del programa tras 1000 frames, mostrando
		el rendimiento

	-fullscreen [mode_string]

		Ejecuta ssystem en pantalla completa (no funciona muy bien
		bajo algunos gestores de ventana en linux). En la version de
		Windows 95 puedes elegir el modo de video. Simplemente incluye
		una cadena de modo detras de fullscreen. La sintaxis del
		modo es:

			ANCHOxALTO:PROFUNDIDAD_COLOR@REFRESCO

		El refresco es opcional. Asi, si quieres ejecutar ssystem a
		640x480 32 bits de color la linea de comandos es algo como:

			ssystem -fullscreen 640x480:32

		If quieres un refresco de 100 Hz seria:

			ssystem -fullscreen 640x480:32@100


                NOTA: NO TODOS LOS MODOS DE VIDEO ESTAN SOPORTADOS. DE HECHO
		SOLO UNOS POCO FUNCIONAN EN MI ORDENADOR. SI EL MODO DE VIDEO
		QUE HAS SELECCIONADO NO ESTA SOPORTADO SSYSTEM UTILIZA EL
		MODO DE VIDEO ACTUAL.


	-slices N

		Usa el valor N para el parametro SLICES de las esferas

	-stacks N

		Usa el valor N para el parametro STACKS de las esferas


	Estos dos ultimos parametros (slices y stacks) tienen un gran impacto
  en el rendimiento (ver seccion Rendimiento).


Rendimiento:
------------


	La aceleracion hardware no es indispensable, pero si muy recomendable
  para un moviemiendo suave. Yo consigo 64fps (bajo Linux) con la opcion
  "-bench" en mi Pentium 233 (funcionando a 266). El nivel de detalle de las 
  esferas planetarias (SLICES y STACKS) es el factor clave en el rendimiento,
  incrementalo si tienes una CPU potente (Yo obtengo 110fps con un valor de
  2 en ambos). 

	El valor por defecto para SLICES y STACKS es 32 pero puedes jugar con
  esos valores en linea de comandos (ver seccion Opciones en linea de comando).


Asignacion de teclas:
---------------------

	Home/End: Selecciona el anterior/siguiente cuerpo
	SHIFHT + Home/End: Selecciona el anterior/siguiente cuerpo de origen
			   en el modo de camara B2B
	h : Ayuda en linea
	t : Textura on/off
	l : Iluminacion on/off
	f : Flat/Smooth modelo de sombreado
	r : Tiempo real on/off
	s : Estrellas on/off
	d : Modo demo on/off
	n : Posiciona la camara cerca del planeta activo
	c : Cambia entre modo de camara libre o siguendo al planeta
	p : Pausa
	b : Etiquetas para cuerpos lejanos on/off
	i : Informacion (HUD) on/off
	j : Joystick on/off
	Pagina Arriba/Abajo: Incrementa/decrementa la velocidad
	z/Z : Incrementa/decrementa el zoom
		(solo disponible en los modos de B2B y Orbiter)

  Manten apretado el SHIFT para un funcionamiento mas rapido en las
  siguientes asignaciones:

	+/-: Incrementa/Decrementa el factor de tiempo
	Cursores: Rotacion de camara


Modos de camara:
----------------

	Hay 4 modos de camara:

	-Linked: Modo por defecto. La camara sigue al cuerpo selecionado. La
	 tecla 'n' es muy util en este modo.

	-Body to Body: Este modo te deja ver el cuerpo X como si estuvieses
	 en el cuerpo Y.

	-Orbiter: La camara se mueve alrededor del cuerpo selecionado en una
	 orbita circular (completa una orbita en media dia local). Prueba la
	 tecla de zoom 'z' en este modo.

	-Fee Camera: Puedes controlar la camara libremente con los cursosres/
	 raton/joystick.


Movimiento de camara:
---------------------

 -Teclado

	En el mode de camara libre los cursores rotan la camara, Pagina 
	Arriba/Abajo incrementan/decrementan la velocidad de la camara. 

	El modo seguimiento es un poco diferente, aqui los cursores no tienen
	uso. Puedes mover la camara hacia el planeta incrementando la velocidad.
	Una vez estas cerca del planeta el propio programa pone la velocidad a
	cero.

 -Raton

	En el modo de camara libre puedes controlar la camara con el raton
	si mantienes pulsado el boton izquierdo mientras mueves el raton.

 -Joystick

	Como con el raton tienes que selecionar el modo de camara libre,
	entonces activa el joystick (j). Los ejes X e Y controlan la camara y
	los botones A y B la aceleration. Presionando ambos botones a la vez
	se pone la velocidad a 0.


Bugs conocidos:
---------------

	El movimiento de los cuerpos mas exteriores es un poco trompicado.
  Aunque ssystem usa aritmetica de doble precision, Mesa la utiliza de simple
  internamente (mas rapida y suficientemente precisa para la mayoria de las
  aplicaciones). Estoy trabajando en ello.



RECOMOCIMIENTOS:
----------------


-Brian Paul (Mesa)
	http://www.ssec.wisc.edu/~brianp/MesQ.html 

-Daryll Strauss (Linux Glide)


-David Bucciarelli (driver 3Dfx para Mesa)
	http://www-hmw.caribel.pisa.it/fxmesa/index.shtml

-Curtis L. Olson (catalogo de estrellas)


-Este software esta en parte basado en el trabajo de The Independent JPEG Group


-Los satelites Galileanos y de Saturn calculados con code extraido con permiso 
 de XEphem, (c) 1997 Elwood Charles Downey
	http://iraf.noao.edu/~ecdowney/xephem.html

-Algoritmo de posicionamiento de los planetas de Keith Burnett utilizado con
 permiso
	http://www.xylem.demon.co.uk/kepler/

-Nacho (beta testing)

-Kevin Kamel (mirror en USA)

-Rafael Barbera (truco aumento rendimiento en v1.4)

-Y por supuesto, gracias a todos los que me habeis ayudado con sugerencias y
 consejos.



NOTA:
-----

	Este es mi primer programa OpenGL y esta todavia en fase de desarrollo,
  asi que agradeceria vuestros comentarios.

	La critica constructiva siempre es bienvenida. :-)

	Visita la pagina de ssystem para nuevas versiones:

			http://www1.las.es/~amil/ssystem

Raul Alonso
<amil@las.es>

