3.5.3  Objeto Polígono

El objeto polígono puede utilizarse para crear cualquier forma plana con un número x de lados, como cuadrados, rectángulos, pentágonos, hexágonos, octógonos, etc.

Un polígono está definido por un número de puntos que describen su forma. Como un polígono debe estar cerrado, el primer punto tiene que repetirse al final de la secuencia de puntos.

En el ejemplo siguiente, crearemos la palabra "POV" usando una sentencia de un solo polígono.

Comenzamos imaginando los puntos que necesitamos para describir la forma deseada. Queremos que las letras reposen sobre el plano x-y con la letra O en el centro. Las letras se extienden desde Y=0 hasta Y=1. Así obtenemos los siguientes puntos para cada letra (la coordenada z se ajusta a cero automáticamente).

Letra P (polígono exterior):

    <-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 interior):

    <-0.7, 0.6>, <-0.7, 0.9>,
<-0.4, 0.9>, <-0.4, 0.6>

Letra O (polígono exterior):

    <-0.25, 0.0>, <-0.25, 1.0>,
< 0.25, 1.0>, < 0.25, 0.0>

Letra O (polígono interior):

    <-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 ambas un agujero mientras que la letra V consiste en un único polígono. Comenzaremos con la letra V porque es más fácil de definir que las otras dos.

Creamos un archivo nuevo llamado polygdem.pov y añadimos el texto siguiente.

  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 se ha señalado más arriba, el polígono debe estar cerrado, añadiendo el primer punto al final de la secuencia de puntos. Un polígono cerrado se define siempre por una secuencia de puntos que acaba cuando un punto es igual al primero.

Tras haber creado la letra V, continuaremos con la letra P. Como tiene un agujero, tenemos que encontrar una manera de cortar este agujero en la forma básica. Ello es realmente fácil. Simplemente definimos la forma externa de la letra P, que es un polígono cerrado, y añadimos la secuencia de puntos que describe el agujero, que también es un polígono cerrado. Eso es todo lo que debemos hacer. Habrá un agujero donde coincidan ambos polígonos.

En general, obtendremos agujeros cuando exista un número de subpolígonos dentro de un polígono simple y haya coincidencia entre ambos. Un subpolígono se define por medio de una secuencia de puntos cerrados.

La letra P consiste en dos subpolígonos, uno para la forma exterior y otro para el agujero. Como el polígono agujero coincide en parte con la forma externa, obtendremos un agujero donde se produzca esa coincidencia.

Tras haber comprendido como funcionan múltiples subpolígonos en una declaración de un polígono simple, es realmente fácil añadir la letra O que falta.

Finalmente, obtenemos la palabra POV completa.

  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 una sentencia polígono
La palabra "POV" hecha con una sentencia polígono