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

Donación de Rafael Angel Campos Vargas, en el año 2012, a la Biblioteca de objetos de POV-Ray.  Este proyecto se encuentra actualmente inscrito con 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 "BCPC.inc" (BasculaCocinaPesarCompras) dibuja una báscula corriente para cocina.  Permite dibujar la bandeja en forme independiente si se desea;  incluye una macro que permite cambiar con facilidad algunas características y las texturas.  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 archivos "BCPC.inc" y "BCPC_IM1.GIF" en dicho subdirectorio;  únicamente éstos dos 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 "BCPC.pov" puede ejecutarse sin ningún proceso de instalación.  Unicamente debería estar ubicado en el mismo folder que "BCPC.inc" y "BCPC_IM1.GIF".


Instrucciones básicas

Báscula cocina
Muy fácil de usar, tan simple como incluir el archivo y ubicar el objeto.  El siguiente ejemplo recurre a la macro default.

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "BCPC.inc"
    
    object      {
      BCPC_BasculaCocina(325,on) 
      translate <-1.875,1.400,-4.5>
    }

La macro principal tiene dos parámetros:

    #macro BCPC_BasculaCocina( PesoMedido, BanderaBandeja )
PesoMedido :
Valor del peso medido, entre 0 y casi 2000 M (M de Mónica).  1 M = 0.1675 g aproximadamente.
BanderaBandeja :
"on" dibuja la bandeja.  "off" no la dibuja.

Se incluyen una macro adicional para facilitar la modificación:

    #macro BCPC_BasculaCocinaPesarCompras( PesoMedido, BanderaBandeja,
        FrenteInferior, FondoInferior, AltoInferior,
        FrenteSuperior, FondoSuperior,
        FrenteSoporteVertical, CorrimientoSoporteVertical,
        FrenteBandeja   , FondoBandeja   , AltoBandeja   ,
        TexturaPrincipal, TexturaBandeja   , TexturaCaratula,
        MaterialTransparente, TexturaAguja,
        TexturaCalibrador, TexturaPatitas )
PesoMedido :
Valor del peso medido, entre 0 y casi 2000 M (M de Mónica).  1 M = 0.1675 g aproximadamente.
BanderaBandeja :
"on" dibuja la bandeja.  "off" no la dibuja.
FrenteInferior :
Valor de referencia para el frente inferior.  Valor default es 170*L.
FondoInferior :
Valor de referencia para el fondo inferior.  Valor default es 168*L.
AltoInferior :
Valor de referencia para el alto principal de la báscula.  Valor default es 160*L.
FrenteSuperior :
Valor de referencia para el frente superior de la báscula.  Valor default es 111*L.
FondoSuperior :
Valor de referencia para el fondo superior de la báscula.  Valor default es 118*L.
FrenteSoporteVertical :
Ancho en X de la tablilla vertical, soporte de la bandeja.  Valor default es 32*L.
CorrimientoSoporteVertical :
Referencia para el desplazamiento de la tablilla soporte.  Valor default es 48*L.
FrenteBandeja :
Ancho X de la bandeja.  Valor default es 207*L.
FondoBandeja :
Referencia para la profundidad Z de la bandeja.  Valor default es 207*L.
AltoBandeja :
Referencia para el alto de bandeja.  Valor default es 64*L.
TexturaPrincipal :
Textura principal de la báscula.  Valor default es BCPC_DefaultTexturaPrincipal.
TexturaBandeja :
Textura de la bandeja.  Valor default es BCPC_DefaultTexturaBandeja.
TexturaCaratula :
Textura de la carátula, inclusive números y unidades...  Valor default es BCPC_DefaultTexturaCaratula.
MaterialTransparente :
Material a aplicar al plástico transparente que cubre las manecillas.  Valor default es BCPC_DefaultMaterialTransparente.
TexturaAguja :
Textura a aplicar a la aguja indicadora.  Valor default es BCPC_DefaultTexturaAguja.
TexturaCalibrador :
Textura a aplicar a la perilla calibradora.  Valor default es BCPC_DefaultTexturaCalibrador.
TexturaPatitas :
Textura a aplicar al soporte inferior.  Valor default es BCPC_DefaultTexturaPatitas.

Se incluyen una macro que dibuja la bandeja sola sobre el origen:

    #macro BCPC_BandejaComida( FrenteSuperior, FondoSuperior,
        FrenteBandeja, FondoBandeja, AltoBandeja, TexturaBandeja )
FrenteSuperior :
Valor de referencia para el frente superior de la báscula.  Valor default es 111*L.
FondoSuperior :
Valor de referencia para el fondo superior de la báscula.  Valor default es 118*L.
FrenteBandeja :
Ancho X de la bandeja.  Valor default es 207*L.
FondoBandeja :
Referencia para la profundidad Z de la bandeja.  Valor default es 207*L.
AltoBandeja :
Referencia para el alto de bandeja.  Valor default es 64*L.
TexturaBandeja :
Textura de la bandeja.  Valor default es BCPC_DefaultTexturaBandeja.

En el siguiente ejemplo se dibuja el mismo dibujo default:

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "BCPC.inc"  
    
    object    { BCPC_BasculaCocinaPesarCompras( 0, on,
        0.170, 0.168, 0.160, 0.111, 0.118, 0.032, 
        0.048, 0.207, 0.207, 0.064,
        BCPC_DefaultTexturaPrincipal, BCPC_DefaultTexturaBandeja,
        BCPC_DefaultTexturaCaratula, BCPC_DefaultMaterialTransparente,
        BCPC_DefaultTexturaAguja, BCPC_DefaultTexturaCalibrador,
        BCPC_DefaultTexturaPatitas ) 
      translate <-1.875,1.400,-4.5>
    }

Aquí se repite el dibujo, pero como dos objetos independientes:

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "BCPC.inc"  
    
    union       {   
      object    { BCPC_BasculaCocinaPesarCompras( 0, off,
          0.170, 0.168, 0.160, 0.111, 0.118, 0.032, 
          0.048, 0.207, 0.207, 0.064,
          BCPC_DefaultTexturaPrincipal, BCPC_DefaultTexturaBandeja,
          BCPC_DefaultTexturaCaratula, BCPC_DefaultMaterialTransparente,
          BCPC_DefaultTexturaAguja, BCPC_DefaultTexturaCalibrador,
          BCPC_DefaultTexturaPatitas ) 
      }
      object    { BCPC_BandejaComida(0.111,0.118,0.207,0.207,0.064,
          BCPC_DefaultTexturaBandeja )
        translate BCPC_PosicionBandeja
      }     
      translate <-1.875,1.400,-4.5>
    }


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 default tiene las siguientes características:
    	Sin Bandeja
    Mínimo      <  -84,    0,  -83 >*L
    Máximo      <   84,  255,   83 >*L
	Con Bandeja
    Mínimo      < -104,    0, -130 >*L
    Máximo      <  104,  319,  104 >*L
    	Bandeja sola
    Mínimo      < -104,    0, -130 >*L
    Máximo      <  104,   68,  104 >*L
Se dibuja centrado sobre el plano XZ.  El frente sobresale en dirección Z-, con gravedad Y-.

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

BCPC_PosicionBandeja
Se genera con las macros BCPC_BasculaCocina() y BCPC_BasculaCocinaPesarCompras().  Indica la posición inicial de la bandeja.  Podría ubicarla con una orden preliminar translate BCPC_PosicionBandeja, para luego desplazarla a la posición deseada.
BCPC_PosicionComida
Se genera automáticamente con cualquiera de las macros de esta unidad.  Indica la posición en el punto inferior de la bandeja, en su zona interior.  Podría ubicarse algo allí.  Recuerde que el fondo de la bandeja no es plano.
BCPC_TexturaPrincipal
Textura principal de la báscula.
BCPC_TexturaBandeja
Textura de la bandeja.
BCPC_TexturaCaratula
Textura de la carátula.  Incluye dibujo de unidades, etc...
BCPC_MaterialTransparente
Material a aplicar al plástico transparente que cubre las manecillas.
BCPC_TexturaAguja
Textura a aplicar a la aguja indicadora.
BCPC_TexturaCalibrador
Textura a aplicar a la perilla calibradora.
BCPC_TexturaPatitas
Textura a aplicar al soporte inferior.

En el siguiente ejemplo se dibuja una bola roja en la bandeja.  El programador debería notar, que BCPC_PosicionComida se define dos veces y con valores diferentes.  Una vez cuando se utiliza la macro BCPC_BasculaCocina(), y otra cuando se usa BCPC_BandejaComida().

    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "BCPC.inc"  
    
    union       {   
      object    { BCPC_BasculaCocina( 0, off ) }
      union     {
        object    { BCPC_BandejaComida(0.111,0.118,0.207,0.207,0.064,
            BCPC_DefaultTexturaBandeja )
          
          translate BCPC_PosicionBandeja
        }            
        sphere    { 0, 0.05
          translate BCPC_PosicionBandeja+BCPC_PosicionComida+0.05*y
          pigment { Red }      
        }
        translate       +0.05*y
      }
      translate <-1.875,1.400,-4.5>
    }


Modificadores

La siguiente es la lista de los modificadores permitidos en la unidad.

    #declare BCPC_DefaultTexturaPrincipal      	= texture { ... }      
Textura principal de la báscula.

    #declare BCPC_DefaultTexturaBandeja         = texture { ... }
Textura de la bandeja.

    #declare BCPC_DefaultTexturaCaratula      	= texture { ... }      
Textura de la carátula.  Incluye dibujo de unidades, etc...

    #declare BCPC_DefaultMaterialTransparente   = material { ... }
Material a aplicar al plástico transparente que cubre las manecillas.

    #declare BCPC_DefaultTexturaAguja      	= texture { ... }      
Textura a aplicar a la aguja indicadora.

    #declare BCPC_DefaultTexturaCalibrador     	= texture { ... }      
Textura a aplicar a la perilla calibradora.

    #declare BCPC_DefaultTexturaPatitas         = texture { ... }
Textura a aplicar al soporte inferior.

    #declare BCPC_ArchivoGIF			= "BCPC_IM1.GIF"
Nombre de archivo para lectura de carátula.  Debería declararse antes de la instrucción #include, y ser de formato GIF.  Unicamente aplica cuando se utilizan las texturas default.

    #declare BCPC_POV3_1			= off;
Si se activa con "on" produce simplificaciones que permiten su ejecución en la versión POVRay 3.1.  En algunas versiones de POVRay se activa 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 "BCPC.inc"  
    #include "textures.inc"
    
    #declare BCPC_DefaultTexturaPrincipal       = texture 
      { average
        texture_map     {
          [ 0.5 Rust                  ]
          [ 0.5 BCPC_TexturaPrincipal ]
        }
        scale   0.01    }  
      
    #declare BCPC_DefaultTexturaBandeja         =
      texture { PinkAlabaster }
                
    #declare BCPC_DefaultTexturaCaratula        =
      texture { Cork }           
                              
                              
    #declare BCPC_DefaultMaterialTransparente   =
      material { texture { pigment { color Green transmit 0.9 } } }                          
      
    #declare BCPC_DefaultTexturaAguja           =
      texture { Gold_Nugget }  
    
    #declare BCPC_DefaultTexturaCalibrador      =
      texture { pigment { Blue   } }  
      
    #declare BCPC_DefaultTexturaPatitas         =
      texture { pigment { Yellow } }  
      
    object    { 
      BCPC_BasculaCocina( 0, on )  
      rotate    +27*x
      translate <-1.875,1.400,-4.5>
    }

En este otro ejemplo, se cambia la carátula:

    #include "stdinc.inc"
    #include "stdcam.inc"
    #declare BCPC_ArchivoGIF    = "BCPC_IM2.GIF"
    #include "BCPC.inc"    
    
    object    { 
      BCPC_BasculaCocina( 280, on )  
      translate <-1.875,1.400,-4.5>
    }


Notas y Advertencias

Si modifica la imagen de la carátula es recomendable utilizar color blanco de fondo.  El archivo dibuja la imagen únicamente una vez, y supone que el resto es de color blanco.  Esta precaución resulta innecesaria si modifica la textura de carátula completa.

La báscula se encuentra ligeramente descalibrada.  Esto podría mitigarse con un peso negativo.  Sin embargo, la imagen es un dibujo rápido con varios defectos de escala "incorregibles".

Cuando utilice la variable BCPC_PosicionComida, recuerde que esta es la posición inferior de la báscula.  Por ejemplo, si ubica un cubo descuidadamente se produciría superposición de material.  El fondo sigue la curva de la mitad inferior de un superellipsoid.

 
    superellipsiod { <0.1,0.1>
	scale 0.98*( FrenteBandeja/2*x+AltoBandeja*y+FondoBandeja/2*z ) }

La carátula reacciona mal a los cambios de valor de los parámetros.  Algunas combinaciones producirán una carátula muy grande o que desaparece sumergida en la estructura.


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...(7/agosto/2012), 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