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

Donación de Rafael Angel Campos Vargas, en noviembre del 2011, 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 "EJNN.inc" ExprimidorJugosNaranjaNatural;  crea un sencillo exprimidor casero.  Con la posibilidad de pequeñas modificaciones, incluyendo la textura. 

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 el archivo "EJNN.inc" en dicho subdirectorio;  únicamente éste es necesario.  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 "EJNN.pov" puede ejecutarse sin ningún proceso de instalación.  Unicamente debería estar ubicado en el mismo folder que "EJNN.inc".


Instrucciones básicas

Exprimidor
Muy fácil de usar, tan simple como incluir el archivo y ubicar el objeto.  Se define una macro default, para ubicar el objeto fácilmente.  Se incluye además;  macros individuales para cada sección del aparato.

El siguiente ejemplo recurre a la macro default, colocando al objeto en posición base.  Note el uso de la variable global max_trace_level;  es conveniente hacer la corrección para evitar zonas oscuras desagradables.

    global_settings {
      max_trace_level           10
    }
    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "EJNN.inc"
    
    object      {
      EJNN_ExprimidorJugosNaranjaNatural( true )  
      translate <-1.9375,1.6375,-4.75>
    }
La siguiente macro es la macro principal:
    #macro EJNN_ExprimidorJugosNaranjaNatural( BanderaExprimidor )
BanderaExprimidor :
La opción true dibuja el exprimidor;  la opción false elimina el decorado peculiar al exprimidor, permitiendo otros usos.

Sus diferentes elementos, pueden dibujarse, con macros independientes.  Estas macros, colocan las partes en la misma ubicación que la macro principal.  Para dibujar el pichel sin tapa.

    #macro EJNN_Pichel( Diametro, Alto, DiametroInterior,
                TexturaTransparente, BanderaExprimidor )
Diametro :
Aproxima el diámetro principal del pichel sin agarradera.  Valor default 110*L.
Alto :
Alto del pichel sin tapa.  Valor default 75*L.
DiametroInterior :
Aproxima el diámetro del cilindro interior de agitación, como cota inferior.  Valor default 16.5*L.
TexturaTransparente :
Textura a aplicar al pichel.
BanderaExprimidor :
La opción true dibuja el exprimidor;  la opción false elimina el decorado peculiar al exprimidor, permitiendo otros usos.

Para dibujar la tapa del pichel, puede utilizar la siguiente macro.

    #macro EJNN_TapaPichel( Diametro, Alto, TexturaTransparente )
Diametro :
Aproxima el diámetro principal del pichel sin agarradera.  Valor default 110*L.
Alto :
Alto del pichel sin tapa, (del pichel NO la tapa).  Valor default 75*L.
TexturaTransparente :
Textura a aplicar al pichel.

La base del exprimidor se puede dibujar con la siguiente macro.

    #macro EJNN_BasePichel( Diametro, Alto, DiametroGiro, AltoBase,
             TexturaBase, TexturaBarata, TexturaPatita, BanderaExprimidor )
Diametro :
Aproxima el diámetro principal del pichel sin agarradera.  Valor default 110*L.
Alto :
Alto del pichel sin tapa.  Valor default 75*L.
DiametroGiro :
Aproxima el diámetro del cilindro interior de agitación, como cota superior.  Valor default 16.5*L.
AltoBase :
Alto total de la base.  Valor default 37.5*L.
TexturaBase :
Textura a aplicar a la base.
TexturaBarata :
Textura a aplicar al soporte superior de giro.
TexturaPatita :
Textura a aplicar a las patitas cilíndricas inferiores.
BanderaExprimidor :
La opción true dibuja el exprimidor;  la opción false elimina el decorado peculiar al exprimidor, permitiendo otros usos.

Para dibujar el filtro de rotación en forma independiente.

    #macro EJNN_FiltroJugo( Diametro, Alto, DiametroFiltro,
                      DiametroGiro, TexturaFiltroJugo )
Diametro :
Aproxima el diámetro principal del pichel sin agarradera.  Valor default 110*L.
Alto :
Alto del pichel sin tapa.  Valor default 75*L.
DiametroFiltro :
Aproxima el diámetro del filtro de rotación.  Valor default 100*L.
DiametroGiro :
Aproxima el diámetro del cilindro interior de agitación, como cota superior.  Valor default 16.5*L.
TexturaFiltroJugo :
Textura a aplicar al filtro de rotación.
BanderaExprimidor :
La opción true dibuja el exprimidor;  la opción false elimina el decorado peculiar al exprimidor, permitiendo otros usos.

El siguiente ejemplo, ilustra el uso de las macros por separado.

    global_settings {
      max_trace_level           10
    }
    #include "stdinc.inc"
    #include "stdcam.inc"
    #include "EJNN.inc"
    
    object              {
      EJNN_Pichel( 0.110, 0.075, 0.0165,  
                   EJNN_DefaultTexturaTransparente, true )
      //  EJNN_TapaPichel( 0.110, 0.075, EJNN_DefaultTexturaTransparente )
      //  EJNN_BasePichel( 0.110, 0.075, 0.0165, 0.0375,
      //               EJNN_DefaultTexturaBase, EJNN_DefaultTexturaBarata,
      //               EJNN_DefaultTexturaPatita, true )
      //  EJNN_FiltroJugo( 0.110, 0.075, 0.100, 0.0375,
      //               EJNN_DefaultTexturaFiltroJugo )
      translate <-1.9375,1.6375,-4.75>
    }


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 exprimidor de jugos default tiene las siguientes características:
    Altura Pichel sin tapa  : 75*L
    Altura Base             : 37.5*L
    Altura Total con tapa   : 134.5*L
    Radio principal         : 58*L (sin agarradera)
La base del pichel se encuentra centrada en el origen sobre el plano XY.  La tapa hacia Y+, y la base hacia Y-.  Y la boquilla hacia X- con la agarradera hacia X+.

Las macros EJNN_ExprimidorJugosNaranjaNatural y EJNN_Pichel generan automáticamente una variable de volumen para agregar jugo, de nombre EJNN_VolumenJugo.

Se definen las siguientes variables útiles, que no deberían modificarse.  Para su correcta utilización consultar la sección Modificadores

EJNN_VolumenJugo
Sirve para agregar jugo al pichel.  Se generan automáticamente en algunos macros.  Puede utilizarla aplicando la operación CSG intersection { object { EJNN_VolumenJugo } object{ ... } }.
EJNN_TexturaTransparente
Textura a aplicar al pichel y la tapa.
EJNN_TexturaBase
Textura a aplicar a la base.
EJNN_TexturaBarata
Textura a aplicar al extremo superior del cilindro de giro.
EJNN_TexturaFiltroJugo
Textura a aplicar al filtro de jugo.
EJNN_TexturaPatitas
Textura a aplicar a las patitas negras cilíndricas.

En el siguiente ejemplo, procedemos a agregarle café al exprimidor, que se ha modificado ligeramente.

    global_settings {
      max_trace_level           10
    }
    #include "stdinc.inc"
    #include "stdcam.inc" 
    #include "EJNN.inc"
    
    union                {
      object     { EJNN_ExprimidorJugosNaranjaNatural( false ) }
      intersection       {
        cylinder { 0, 0.020*y, 0.100 }
        object   { EJNN_VolumenJugo  }
        pigment  { Black             }
      }
      translate <-1.9375,1.6375,-4.75>
    }


Modificadores

La siguiente es la lista de los modificadores permitidos en la unidad (cuando se indica, son valores default).

    #declare EJNN_DefaultTexturaTransparente		= 
    texture {  
      EJNN_TexturaTransparente
    }
Textura a aplicar al pichel y la tapa.

    #declare EJNN_DefaultTexturaBase			= 
    texture {  
      EJNN_TexturaBase
    }
Textura a aplicar a la base.

    #declare EJNN_DefaultTexturaBarata			= 
    texture {  
      EJNN_TexturaBarata
    }
Textura a aplicar al extremo superior del cilindro de giro.

    #declare EJNN_DefaultTexturaFiltroJugo		=
    texture {  
      EJNN_TexturaFiltroJugo
    }
Textura a aplicar al filtro de jugo.

    #declare EJNN_DefaultTexturaPatitas			=
    texture {  
      EJNN_TexturaPatitas
    }
Textura a aplicar a las patitas negras cilíndricas.

    #declare EJNN_POV3_1			 	= off;
Si se activa con "on" produce simplificaciones que permiten su ejecución en la version POVRay 3.1.  En algunas versiones de POVRay se activa automáticamente.

A manera de ejemplo del uso de los modificadores;  un exprimidor de juguete.

    global_settings {
      max_trace_level           10
    }
    #include "stdinc.inc"
    #include "stdcam.inc" 
    #include "textures.inc"
    #include "EJNN.inc"
    
    #declare EJNN_DefaultTexturaTransparente    = texture       {
      pigment   { rgbf <1.0,0.8,0.8,0.8> }
    }
    
    #declare EJNN_DefaultTexturaBase            = texture       {
      pigment   { rgbf <1.0,0.8,0.8,0.8> }
    }
    
    #declare EJNN_DefaultTexturaBarata          = texture       {
      pigment   { Blue }
    }
    
    #declare EJNN_DefaultTexturaFiltroJugo      = texture       {  
      average   
      texture_map       {
        [ 0.8 EJNN_TexturaTransparente]
        [ 0.2 EJNN_TexturaFiltroJugo  ]
      }
    }
    
    #declare EJNN_DefaultTexturaPatita          = texture       {
      pigment   { White } 
    }
    
    object      { 
      EJNN_ExprimidorJugosNaranjaNatural( true )  
      translate <-1.9375,1.6375,-4.75>
    }


Notas y Advertencias

No olvide ajustar la variable max_trace_level, pues la superficie transparente presenta zonas negras desagradables al valor default de 5 para dicha variable global.

La variable EJNN_VolumnenJugo no toma en cuenta la boquilla, y únicamente llena el 90% del volumen.

La textura del filtro de jugo, presenta un patrón de sombras por causas que desconozco en este momento.


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...(25/octubre/2011), 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