Anterior:Malla de triángulos Indice Principal   Siguiente:Prisma

Polígono

El objeto polygon se puede usar para crear formas planas de n lados, como cuadrados, rectángulos, pentágonos, hexágonos, octógonos, etc.

Un polígono se define por un determinado número de puntos que describen su forma. Como los polígonos han de ser cerrados, el primer punto y el último deben coincidir.

En el siguiente ejemplo crearemos la palabra "POV" utilizando una única declaración de polígono.

Comenzaremos considerando los puntos que necesitamos para describir la forma deseada. Queremos que las letras se encuentren sobre el plano x-y, con la letra O en el centro. Las letras se extienden desde y=0 hasta y=1. De modo que tenemos los siguientes puntos para cada letra (la coordenada z se pone automáticamente a 0).

Letra P (polígono externo):
          <-0.8, 0.0>, <-0.8, 1.0>,
          <-0.3, 1.0>, <-0.3, 0.5>,
          <-0.7, 0.5>, <-0.7, 0.0>
Letra P (polígono interno):
          <-0.7, 0.6>, <-0.7, 0.9>,
          <-0.4, 0.9>, <-0.4, 0.6>
Letra O (polígono externo):
          <-0.25, 0.0>, <-0.25, 1.0>,
          < 0.25, 1.0>, < 0.25, 0.0>
Letra O (polígono interno):
          <-0.15, 0.1>, <-0.15, 0.9>,
          < 0.15, 0.9>, < 0.15, 0.1>
Letra V:
          <0.45, 0.0>, <0.30, 1.0>,
          <0.40, 1.0>, <0.55, 0.1>,
          <0.70, 1.0>, <0.80, 1.0>,
          <0.65, 0.0>

Las letras P y O tienen un agujero, mientras que la letra V consiste sólo en un polígono. Empezaremos por la letra V ya que es la más fácil de definir.

Creamos un archivo llamado polygdem.pov y escribimos el siguiente texto:

camera {
        orthographic
        location <0, 0, -10>
        right 1.3 * 4/3 * x
        up 1.3 * y
        look_at <0, 0.5, 0>
       }
light_source { <25, 25, -100> color rgb 1 }
polygon {
         8,
         <0.45, 0.0>, <0.30, 1.0>, // Letra "V"
         <0.40, 1.0>, <0.55, 0.1>,
         <0.70, 1.0>, <0.80, 1.0>,
         <0.65, 0.0>,
         <0.45, 0.0>
         pigment { color rgb <1, 0, 0> }
        }
Como ya hemos dicho el polígono ha de cerrarse añadiendo el primer punto al final de la secuencia. Un polígono cerrado siempre se define como una secuencia de puntos que termina cuando un punto es el mismo que el primero.

Después de crear la letra V continuaremos con la letra P. Como tiene un agujero hemos de encontrar una manera de recortar este agujero de la forma original. Esto es muy fácil. Definimos la forma externa de la letra P, que es un polígono cerrado, y añadimos la secuencia de puntos que definen el agujero, que también es un polígono cerrado. Así tendremos un agujero en donde los dos polígonos se solapen.

En general obtendremos agujeros siempre que un número par de subpolígonos se solapen en una única sentencia de polígono. Un subpolígono está definido por una secuencia cerrada de puntos.

La letra P consiste en dos subpolígonos, uno para la forma exterior y el otro para el agujero. Como el polígono del agujero solapa al polígono externo, tendremos un agujero.

Una vez que sabemos como funcionan varios subpolígonos dentro de una única sentencia de polígono, es bastante fácil añadir la letra O.

Finalmente, tenemos la palabra completa POV.

polygon {
         30,
         <-0.8, 0.0>, <-0.8, 1.0>,    // Letra "P"
         <-0.3, 1.0>, <-0.3, 0.5>,    // forma exterior
         <-0.7, 0.5>, <-0.7, 0.0>,
         <-0.8, 0.0>,
         <-0.7, 0.6>, <-0.7, 0.9>,    // agujero
         <-0.4, 0.9>, <-0.4, 0.6>,
         <-0.7, 0.6>,
         <-0.25, 0.0>, <-0.25, 1.0>,  // Letra "O"
         < 0.25, 1.0>, < 0.25, 0.0>,  // forma exterior
         <-0.25, 0.0>,
         <-0.15, 0.1>, <-0.15, 0.9>,  // agujero
         < 0.15, 0.9>, < 0.15, 0.1>,
         <-0.15, 0.1>,
         <0.45, 0.0>, <0.30, 1.0>,    // Letra "V"
         <0.40, 1.0>, <0.55, 0.1>,
         <0.70, 1.0>, <0.80, 1.0>,
         <0.65, 0.0>,
         <0.45, 0.0>
         pigment { color rgb <1, 0, 0> }
        }
La palabra "POV" hecha con polígonos.
La palabra "POV" hecha con polígonos.

 


Anterior:Malla de triángulos Indice Principal   Siguiente:Prisma

 
Ricardo M. Pereyra
$Date: 1999/04/12 13:52:37 $

 

Contador de Geo (?? Kb)    Valid HTML 4.0! Valid CSS!
  
 
1