Logo POVRay...
Instrucciones para "RDHV.inc" v1.0

Donación de Rafael Angel Campos Vargas, en el año 2015, a la Biblioteca de objetos de POV-Ray.  Este proyecto se encuentra actualmente suscrito a la patente LGPL;  para libre uso comercial y no comercial del software.

CC-GNU LGPL
The primary purpose of this collection is to make items publicly available under a common license that permits use, modification and re-distribution. To support this contributions are donated to the collection with consent for their use under the terms of the Creative Commons - Lesser General Purpose License (CC-GNU LGPL).
Chris Bartlett 2007

La versión actual v1.0 de "RDHV.inc" (RadioDespertadorHorarioVerano) dibuja un radio despertador sencillo para uso doméstico.  Ofrece una macro que permite cambiar las características principales y texturas.  Incluye macros para generar dígitos y el display del reloj.  Es compatible con PovRay 3.1.

Indice de página:

  1. Instalación de Archivos
  2. Instrucciones básicas
  3. Características del objeto
  4. Modificadores
  5. Notas y Advertencias
  6. Sugerencias de modificación
  7. Sobre LibreN3D

Instalación de Archivos

El procedimiento siguiente es completamente optativo, corresponde simplemente al estándard de la Biblioteca de objetos POV-Ray.
  1. Cree el subdirectorio "ObjectCollections".  Se sugiere un subdirectorio del folder POV-Ray, creado por el instalador en algunas versiones en la sección de documentos o bien en la de código.
  2. Copie los archivo "RDHV.inc", "RDHV_AU1.inc", RDHV_IM1.gif y "RDHV_IM2.gif" en dicho subdirectorio;  únicamente estos cuatro son necesarios.  En cuanto a la documentación y demás puede colocarla si desea en el mismo subdirectorio, el estándar ha sido diseñado para evitar problemas de compatibilidad.
  3. Actualice los archivos buscados por POV-Ray, en algún archivo ini pertinente.  Por ejemplo "POVRay.ini";  agregue el comando Library_Path="C:\FDOS\POVRAY31\ObjectCollections"; o el que corresponda a su sistema operativo.  POV-Ray ofrece muchas formas de realizar esto.  Si no sabe cómo, probablemente convenga leer el manual de referencia en la sección "Command-line options".   Cada sistema operativo presenta sus propias variantes.
Nota:  El archivo de prueba "RDHV.pov" puede ejecutarse sin ningún proceso de instalación.  Unicamente debería estar ubicado en el mismo folder que "RDHV.inc", "RDHV_AU1.inc", "RDHV_IM1.gif" y "RDHV_IM2.gif".


Instrucciones básicas

Radio despertador
Muy fácil de usar, tan simple como incluir el archivo y ubicar el objeto.  El siguiente ejemplo ilustra el procedimiento básico. ,

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "RDHV.inc"
    
    object      {
      RDHV_RadioDespertador( 12, 0, 4, on ) 
      translate               <-1.94375,1.66375,-4.875>  
    }

La macro fundamental tiene sólo cuatro parámetros.

    #macro RDHV_RadioDespertador( Hora, Minuto, Indicadores, BanderaRadial )   
Hora :
Entero para escribir la hora en la pantalla.
Minuto :
Entero para escribir los minutos en la pantalla.
Indicadores :
Entero para elegir los indicadores encendidos.  Un valor de cero no enciende ningunto.  Para encender un indicador sume el valor de su selector.
RDHV_LUZDST= 1
RDHV_LUZAM= 2
RDHV_LUZPM= 4
RDHV_LUZALARM= 8
RDHV_LUZBATERIA= 16
BanderaRadial :
"on" modelo con bordes curvos.  "off" modelo prismático. 

La siguiente macro dibuja el objeto con mayor control sobre las características.

    #macro RDHV_RadioDespertadorHorarioVerano( Hora, Minuto, Indicadores,
          BanderaRadial, Frente, Profundidad, Radial, Cizalla,
          ArregloBotones, TexturaPrincipal, TexturaLabel, ArregloTexturasExtra,
          TexturaLabelLUZ, TexturaTransparente, TexturaLUZ, TexturaFondoLUZ )
Hora :
Entero para escribir la hora en la pantalla.
Minuto :
Entero para escribir los minutos en la pantalla.
Indicadores :
Entero para elegir los indicadores encendidos.  Un valor de cero no enciende ningunto.  Para encender un indicador sume el valor de su selector.
RDHV_LUZDST= 1
RDHV_LUZAM= 2
RDHV_LUZPM= 4
RDHV_LUZALARM= 8
RDHV_LUZBATERIA= 16
BanderaRadial :
"on" modelo con bordes curvos.  "off" modelo prismático. 
Frente :
Frente X para la radio, sin el borde curvo.  Default es 71.5*L.
Profundidad :
Referencia para la profundidad Z de la radio.  Default es 95.0*L.
Radial :
Radio de los laterales curvos.  La altura referencia del aparato se tomará a partir de 2*Radial.  Default es 19.7*L.
Cizalla :
Fracción propia para transformación oblicua del prismo base.  Default es 2/11.
ArregloBotones :
Arreglo bidimensional de números reales.  Para describir los botones de la parte superior del aparato.  Cada dato tiene la composición { RDHV_IndiceBotonVisible, RDHV_IndiceBotonU, RDHV_IndiceBotonV, RDHV_IndiceBotonFrente, RDHV_IndiceBotonRadio, RDHV_IndiceTexturaBoton }.  Por ejemplo para apagar el botón C, asigne #declare ArregloBotones[C][RDHV_IndiceBotonVisible] = off;. Default es RDHV_ArregloBotones1.
RDHV_IndiceBotonVisible "on" dibuja el botón, "off" no lo dibuja.
RDHV_IndiceBotonU Fracción propia entre 0 y 1, para ubicación frontal en la parte superior.  0.0 borde izquierdo, 1.0 borde derecho.
RDHV_IndiceBotonV Fracción propia entre 0 y 1, para ubicación Z en la parte superior.  0.0 zona frontal, 1.0 al fondo.
RDHV_IndiceBotonFrente Utilice 0.0 para botones redondos.  Fracción propia para indicar el largo X de un botón alargado.
RDHV_IndiceBotonRadio El radio del botón, o de sus extremo (si se trata de un botón alargado).
RDHV_IndiceTexturaBoton Entero a partir de cero ubica la textura en el arreglo parámetro ArregloTexturasExtra.  Utilice valor negativo para no aplicar ninguna textura.
TexturaPrincipal :
Textura principal a aplicar a la radio.  Default es RDHV_TexturaPrincipal.
TexturaLabel :
Textura que se aplica por diferencia a la parte superior.  Su función es etiquetar los botones, y pintar un parlante.  Default es RDHV_TexturaLabel.
ArregloTexturasExtra :
Tipo array para texturas.  Podría tener un único elemento.  Corresponde a las texturas asignadas por ArregloBotones.  Si asigna todas las texturas negativas, este valor se ignora.  Default es RDHV_ArregloTexturasExtra.
TexturaLabelLUZ :
Textura que se aplica al frente del radio.  Incluye la rotulación de emisoras e indicadores luminosos.  Default es RDHV_TexturaLabelLUZ.
TexturaTransparente :
Corresponde a una cubierta plástica protectora de la pantalla de cristal líquido y todo el frente del aparato.  Default es RDHV_TexturaTransparente.
TexturaLUZ :
El color de la luz se pinta con esta textura.  Probablemente convenga asignar un valor ambient elevado para cuartos oscuros.  Default es RDHV_TexturaLUZ.
TexturaFondoLUZ :
Se aplica al fondo de la pantalla de cristal líquido.  Default es RDHV_TexturaFondoLUZ.

La siguiente macro dibuja el frente del radio despertador sin aplicar la cizalla, centrado como se indica más adelante.  Podría ser útil para agregar relojes de cristal líquido a otros objetos.

    #macro RDHV_DisplayClock( Hora, Minutos, Indicadores, FraccionDisplay,
             BanderaRadial, Frente, ProfundidadDisplay, Radial,
             TexturaLabelLUZ, TexturaTransparente,
             TexturaLUZ, TexturaFondoLUZ )  
Hora :
Entero para escribir la hora en la pantalla.
Minuto :
Entero para escribir los minutos en la pantalla.
Indicadores :
Entero para elegir los indicadores encendidos.  Un valor de cero no enciende ningunto.  Para encender un indicador sume el valor de su selector.
RDHV_LUZDST= 1
RDHV_LUZAM= 2
RDHV_LUZPM= 4
RDHV_LUZALARM= 8
RDHV_LUZBATERIA= 16
FraccionDisplay :
Fracción del alto del Display ocupado por el despliegue incluyendo el fondo.  Default es 0.5.
BanderaRadial :
"on" modelo con bordes curvos.  "off" modelo prismático. 
Frente :
Frente X para la radio, sin el borde curvo.  Default es 71.5*L.
ProfundidadDisplay :
Profundidad aproximada del Display.  Default es 3.6*L.
Radial :
Radio de los laterales curvos.  La altura referencia del aparato se tomará a partir de 2*Radial.  Default es 19.7*L.
TexturaLabelLUZ :
Textura que se aplica al frente del radio.  Incluye la rotulación de emisoras e indicadores luminosos.  Default es RDHV_TexturaLabelLUZ.
TexturaTransparente :
Corresponde a una cubierta plástica protectora de la pantalla de cristal líquido y todo el frente del aparato.  Default es RDHV_TexturaTransparente.
TexturaLUZ :
El color de la luz se pinta con esta textura.  Probablemente convenga asignar un valor ambient elevado para cuartos oscuros.  Default es RDHV_TexturaLUZ.
TexturaFondoLUZ :
Se aplica al fondo de la pantalla de cristal líquido.  Default es RDHV_TexturaFondoLUZ.

Esta macro dibuja un dígito de la pantalla de cristal líquido, previo al escalamiento.

   #macro RDHV_DisplayDigito( Digito, Cizalla, BanderaUno, BanderaApagado,
              TexturaEncendido, TexturaApagado )
Digito :
Número entero del 0 al 9 para desplegar.
Cizalla :
Cizalla en el eje Y del dígito.
BanderaUno :
"on" indica que el dígito solo puede valer uno o cero.  "off" indica un dígito usual.  Se le asignará menor tamaño.
BanderaApagado :
"on" dibuja las barras apagadas con TexturaApagado.  "off" ignora las barras apagadas.
TexturaEncendido :
Textura que se asigna a las barras encendidas.
TexturaApagado :
Permite asignar una textura a las barras apagadas.  Si BanderaApagado es "off" se ignora.

En el siguiente ejemplo dibujamos el mismo objeto original con la macro detallada:

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "RDHV.inc"
    
    object      {
      RDHV_RadioDespertadorHorarioVerano( 12, 0, 4, on,
          0.0715, 0.095, 0.0197, 2/11,
          RDHV_ArregloBotones1, RDHV_TexturaPrincipal, RDHV_TexturaLabel, 
          RDHV_ArregloTexturasExtra, RDHV_TexturaLabelLUZ, RDHV_TexturaTransparente,
          RDHV_TexturaLUZ, RDHV_TexturaFondoLUZ )
      translate               <-1.94375,1.66375,-4.875>  
    }

En el siguiente ejemplo ilustramos el uso de las otras dos macros.

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "RDHV.inc"
    
    union               {
      object            {          
        RDHV_DisplayClock( 12, 0, 4, 0.5, off, 0.0715, 0.0036, 0.0197,
            RDHV_TexturaLabelLUZ, RDHV_TexturaTransparente,
            RDHV_TexturaLUZ, RDHV_TexturaFondoLUZ )   
      }
      object            {  
        RDHV_DisplayDigito( 5, 0, off, off, RDHV_TexturaLUZ, 0 )
        scale                   0.005
        translate               0.04*y
      }
      translate               <-1.94375,1.66375,-4.875>  
    }

En el siguiente ejemplo cambiamos el arreglo de botones y sus texturas asociadas.

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "RDHV.inc"
         
    #declare NuevoArregloBotones        = array [2][6]     
       { {   on, 0.2, 0.3, 0.00, 0.20, 0  },
         {   on, 0.8, 0.3, 0.00, 0.20, 1  } }
                      
    #declare NuevoArregloTexturaBotones = array [2]
      { texture{ pigment { Red } }, texture{ pigment { Blue } } }                
                      
    object      {
      RDHV_RadioDespertadorHorarioVerano( 12, 0, 4, on,
          0.0715, 0.095, 0.0197, 2/11,
          NuevoArregloBotones, RDHV_TexturaPrincipal, RDHV_TexturaLabel, 
          NuevoArregloTexturaBotones, RDHV_TexturaLabelLUZ, RDHV_TexturaTransparente,
          RDHV_TexturaLUZ, RDHV_TexturaFondoLUZ )
      translate               <-1.94375,1.66375,-4.875>  
    }


Características del objeto

Mis dibujos están en unidades L (Lisa).  1 L equivale a 0.055063 pulgadas definido como 0.001 para POVRAY.  El objeto tiene las siguientes características:
    Alto                            =  47*L
    Frente en X (cilíndrico)        = 111*L 
    Frente en X (prismático)        =  72*L 
    Profundidad en Z                = 108*x  
Se dibuja sobre el plano XZ.  El frente del aparato se encuentra centrado sobre el origen, de forma que se ubica totalmente detrás del plano XY hacia Z-, con gravedad Y-.

RDHV_DisplayClock dibuja el objeto sin cizalla en Z, también detrás del plano XY hacia Z-.  El display se colocará centrado en el eje Y.  Tomar en cuenta que su altura total es 2*Radial.

RDHV_DisplayDigito dibuja números mediante dos cuadrados guías.  Los cuadrados guía sin contar el grueso y cizalla son unitarios, iniciando en el origen.  Su dibujo se desplaza hacia arriba y a la derecha.

Se generan las siguientes declaraciones que no deberían modificarse.  Para su correcta modificación consultar la sección Modificadores.

RDHV_ArregloBotones1
Sirve como parámetro ArregloBotones en la macro detallada.  Incluye descripciones para los botones default.
RDHV_DefaultTexturaPrincipal
Textura principal a aplicar al aparato.
RDHV_DefaultTexturaLabel
Textura que se aplica por diferencia a la parte superior.  Su función es etiquetar los botones, y pintar un parlante.
RDHV_DefaultTexturaLabelLUZ
Textura que se aplica al frente del radio.  Incluye la rotulación de emisoras e indicadores luminosos.
RDHV_DefaultTexturaTransparente
Corresponde a una cubierta plástica protectora de la pantalla de cristal líquido y todo el frente del aparato.
RDHV_DefaultTexturaLUZ
El color de la luz se pinta con esta textura.  Probablemente convenga asignar un valor ambient elevado para cuartos oscuros.
RDHV_DefaultTexturaFondoLUZ
Se aplica al fondo de la pantalla de cristal líquido.
RDHV_DefaultTexturaExtra
Se aplica a los botones.


Modificadores

La siguiente es la lista de los modificadores permitidos en la unidad.
    #declare RDHV_ArregloTexturasExtra	        = array [1] 
	texture  { RDHV_DefaultTexturaExtra }
Textura para aplicar a los botones.  Se define como arreglo por requerimientos de la macro detallada. 

    #declare RDHV_TexturaPrincipal		= 
	texture  { RDHV_DefaultTexturaPrincipal }
Textura principal a aplicar al aparato.

    #declare RDHV_TexturaLabel			=
	texture  { RDHV_DefaultTexturaLabel }
Textura que se aplica por diferencia a la parte superior.  Su función es etiquetar los botones, y pintar un parlante.

    #declare RDHV_TexturaLabelLUZ		=
	texture  { RDHV_DefaultTexturaLabelLUZ }
Textura que se aplica al frente del radio.  Incluye la rotulación de emisoras e indicadores luminosos.

    #declare RDHV_TexturaTransparente		=
	texture  { RDHV_DefaultTexturaTransparente }
Corresponde a una cubierta plástica protectora de la pantalla de cristal líquido y todo el frente del aparato.

    #declare RDHV_TexturaLUZ			=
	texture  { RDHV_DefaultTexturaLUZ }
El color de la luz se pinta con esta textura.  Probablemente convenga asignar un valor ambient elevado para cuartos oscuros.

    #declare RDHV_TexturaFondoLUZ		=
	texture  { RDHV_DefaultTexturaFondoLUZ }
Se aplica al fondo de la pantalla de cristal líquido.

    #declare RDHV_POV3_1			= off;
Para activar modo de compatibilidad con POVRay 3.1.  En algunas versiones se activará automáticamente.  En esta versión no cumple ninguna función.

A manera de ejemplo del uso de los modificadores:

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "RDHV.inc"                                        
    #include "textures.inc"
    
    #declare RDHV_ArregloTexturasExtra[0]       = Chrome_Texture
    #declare RDHV_TexturaPrincipal              = Copper_Texture
    #declare RDHV_TexturaLabel                  = Gold_Texture
    #declare RDHV_TexturaLabelLUZ               = Sandalwood
    #declare RDHV_TexturaLUZ                    = 
       texture { pigment { White } finish { ambient 1 } }
    #declare RDHV_TexturaTransparente           = Lightning1
    #declare RDHV_TexturaFondoLUZ               = texture { Lightning2 scale 0.001 }
         
    object      {
      RDHV_RadioDespertador( 12, 0, 4, off )
      translate               <-1.94375,1.66375,-4.875>  
    }


Notas y Advertencias

Al modificar los parámetros de diseño es probable que las etiquetas queden mal ubicadas.

Utilice valores elevados de ambient para el parámetro TexturaLUZ si planea utilizar el objeto en condiciones de poca iluminación.

El parámetro TexturaLabel, se aplica por diferencia sobre TexturaPrincipal.   Por tanto, la textura inmediata al rededor de los botones utilizará TexturaPrincipal.


Sugerencias de modificación


Sobre LibreN3D

Algo hace falta En la actualidad dedico casi unas dos horas todos los días, para desarrollar el programa de animación LibreN3D con el compilador FreePascal para FreeDOS.  El objetivo era en un origen, realizar animaciones de "baja" calidad, con progreso lento y paulatino. Desconocía en ese entonces del programa POV-Ray.  Creo que con ayuda de dicho proyecto, podría lograr mucho mejores resultados desde un principio.  Confío que para el 2020 pueda lograr animaciones completas de aceptable calidad.   En la actualidad, intento agregarle características elásticas a los objetos.  He tenido numerosos retrasos, así que todavía no funciona.  Lo siento...(26/junio/2014), pero me siento muy seguro de que pronto lo lograré.  De momento, no tiene interface con el usuario, pero se encuentra en desarrollo como intérprete de renglón al estilo DOS.

Me sería de muchísima ayuda, que el grupo POV-Ray siguiera desarrollando la versión para DOS.   Los siguientes son enlaces que podrían ser de utilidad para el interesado en los proyectos FreePascal y FreeDOS.   Lamentablemente en la actualidad son altamente inestables, debido probablemente a dificultades con la adaptación al modo de 64 bits.
Logo FreeDOS...
Descarga sistema operativo FreeDOS
Logo FreePascal...
Descarga compilador FreePascal