KnE Engineering | Ibero-American Symposium on Computer Programming jointly held with the International Congress on Technology Education | pages: 255–269

, , and

1. Introduccion

En la actualidad la generación de objetos 3D por computador se ha convertido en una herramienta fundamental para el desarrollo de la mayoría de las ciencias, como es el caso de las ingenierías y la medicina, al igual que no se puede desconocer la importancia que representa en el cine [1], [2].

Una superficie en tres dimensiones se puede definir como el grafo cartesiano de una función continuamente diferenciable de dos variables [3],

z=F(x,y)F:ΩR2R

o como el grafo de una función paramétrica, también llamada función vectorial

α(t,h)=x(t,h),y(t,h),z(t,h)t[a,b];h[c,d].

Un modelo matemático se puede considerar como la representación de cualquier fenómeno real utilizando estructuras matemáticas [4].

Modelar una superficie tridimensional (3D) en un computador cuyo despliegue es una pantalla grafica bidimensional (2D) presenta algunos desafíos: a) ¿Como puede ser desplegada la profundidad en una pantalla grafica?; b) ¿Cómo pueden ser identificadas y removidas las partes ocultas de la superficie?; c) ¿Cómo pueden contribuir la iluminación, el sombreado, la textura, y el color en la representación de la superficie? Quizá una de las mejores respuestas a estas interrogantes la encontramos en el Análisis Diferencial Vectorial [4].

Desde una perspectiva física, una superficie puede emitir luz por su propia emisión, como focos de luz, o reflejar luz de otras superficies que la iluminan. Algunas superficies pueden reflejar y emitir luz. El color que se ve en un punto de un objeto está determinado por las múltiples interacciones entre las fuentes de luz y superficies reflectivas [1]. Este es un proceso recursivo.

El problema consiste de dos aspectos:

  • Modelar las fuentes de luz en una escena.

  • Construir un modelo de reflexión que trate con las interacciones entre materiales y luz.

Para comprender el proceso de iluminación, se puede comenzar siguiendo los rayos de luz de un punto fuente, donde el observador ve solamente la luz que emite la fuente y que llega a los ojos; Probablemente a lo largo de complejos caminos y múltiples interacciones con objetos en la escena.

2. Desarrollo

Segmentación y Mallado

Para la segmentación y el mallado, se supone que Ω sea un rectángulo

Ω={(x,y)R2/axb,cyd}

En caso de no ser así, se puede hacer una aproximación de Ω mediante una familia de rectángulos disjuntos.

Si la superficie está definida por z=F(x,y) con (x,y) ϵΩ y F continua y diferenciable. Sean n, m el número de particiones en el eje x y en el eje y respectivamente entonces, si

Para i=1 hasta n

Para j=1 hasta m

hx=ba/nhy=dc/m
Vx[i,j]=a+i*hxVy[i,j]=c+j*hyVz[i,j]=FVx[i,j],Vy[i,j]

Donde V x , V y , V z son matrices a valores reales.

Ahora, la transformación 3D a 2D que se realiza físicamente en el sistema visual humano, se tiene que realizar mediante un proceso matemático en un sistema de Graficación por computadora. Este proceso se le conoce como Axonometrico [4].

Axonometria(x,y,z)(ax,ay){ax=yρ*x*cos(α)ay=zρ*x*sin(α)}ρ=0.5;α=π/4

Mediante este proceso se puede transformar

(Vx[i,j],Vy[i,j],Vz[i,j],)(Ax[i,j],Ay[i,j],)

Y finalmente se construye la aproximación de la superficie mediante el mallado

fig-1.jpg
Figure 1
Paraboloide Mallado.

Remoción de Secciones Escondidas

Uno de los problemas más desafiantes en la generación de objetos 3D, es la eliminación de secciones escondidas, con la finalidad de evitar cálculos de partes que no son visibles.

Un método para lograr esto es el algoritmo del pintor, el cual se basa en localizar las partes más cercanas al observador por lo tanto son las más visibles.

Otro algoritmo que se puede utilizar está basado en el Análisis Vectorial, el cual examina la dirección de los vectores normales a cada elemento del mallado. La prueba de visibilidad de un elemento del mallado se realiza al encontrar el ángulo entre el vector normal ( n ) y el vector de visión (punto del observador) ( l) [1], [3],

ϕ=arccosn·ln·l

Formula 1: Angulo entre el vector Normal y el Observador.

fig-2.jpg

Si φ se encuentra entre 0 y 90 grados, la sección es visible y por lo tanto es desplegada caso contrario no.

fig-3.jpg
Figure 2
Paraboloide eliminando secciones escondidas.

Iluminación y texturizado

Finalizado el proceso de segmentación y mallado, se puede rellenar la malla utilizando algoritmos de modelos matemáticos para el sombreado, los cuales modelan los tipos de iluminación, dependiendo de las características de la superficie y de las propiedades de la iluminación que lo invade. Además, se debe considerar que, dentro de las caras visibles, se tiene caras externas y caras internas, por lo tanto, se necesita un procedimiento para diferenciar estas caras.

De igual forma se puede resolver este problema mediante el Análisis Vectorial. En cada punto de intersección de la malla se podrían lanzar vectores normales, y dependiendo hacia donde apunta el vector se deduciría si es cara externa o interna y con lo cual se podrá texturizar o iluminar de manera diferente.

fig-4.jpg

Este proceso se lo realiza mediante las fórmulas para encontrar el vector normal a la superficie [4],

Para i=1 hasta n

Para j=1 hasta m

ax=Ax[i+1,j]Ax[i,j]nx=ax*Ay[i+1,j+1]Ay[i+1,j]ay=Ay[i+1,j]Ay[i,j]ny=ay*Ax[i+1,j+1]Ax[i+1,j]

Si (n x -n y ) > 0 entonces se tiene un sector de la cara externa entonces se pinta con Gris, caso contrario se pinta con azul.

fig-5.jpg
Figure 3
Paraboloide Texturizado.

Por último, se puede depurar el sombreado manejando diferentes intensidades de colores o texturas en la cara externa como de la interna.

Utilizando el Operador Diferencial Gradiente en la función z=F(x,y), se obtiene el vector

Grad(z)=F(x,y)x,F(x,y)y

Formula 2: Vector Gradiente.

El cual representa la dirección en el espacio según la cual se aprecia una variación de una propiedad física [5], que en este caso se puede utilizar para degradar colores. Si de este vector se calcula la norma euclidea

F(x,y)x,F(x,y)y=F(x,y)x2+F(x,y)y2

Realizando una aproximación numérica de las derivadas parciales:

k1=F(x+h,y)F(x,y)h
k2=F(x,y+h)F(x,y)h
Color0(x,y)=k12+k22
h=0,00001

Se obtiene una intensidad diferente para cada sector del mallado

fig-6.jpg
Figure 4
Paraboloide con iluminación.

3. Implementación

Ventana Real y Ventana Pantalla (ViewPort)

Dentro de los pasos en la línea de ensamblaje que se utiliza para generar imágenes en un computador es fundamental diferenciar entre ventana real y ventana del computador. Es decir, se tienen dos sistemas de referencia: el sistema de referencia real donde se desarrolla el fenómeno a estudiar, y el sistema de referencia de la pantalla [2], [6].

En el sistema de referencia real se identifica la ventana que se quiere transportar sobre la pantalla (ventana real), y sobre la pantalla se identifica el rectángulo en el que tal ventana vendrá transferida (ventana pantalla). Es decir, se debe determinar la transformación (función) que asocia las coordenadas del sistema de referencia real a las coordenadas de referencia de la pantalla en modo que la ventana real venga transformada en la ventana pantalla y viceversa, estos sistemas se pueden apreciar en la Figura 5.

fig-7.jpg
Figure 5
Ventana real y Ventana pantalla.

Se designan con (x1,y1) las coordenadas del ángulo superior izquierdo de la ventana real, y con (x2,y2) las coordenadas del ángulo inferior derecho de la ventana real. De igual forma con (sx1,sy1) las coordenadas del ángulo superior izquierdo de la ventana pantalla, y con (sx2,sy2) las coordenadas del ángulo inferior derecho de la ventana pantalla.

Se buscan relaciones que permitan expresar las coordenadas de referencia real con las coordenadas de referencia de la pantalla, para ello se utilizan dos transformaciones matemáticas: Traslación y Escalamiento [4]:

x=α.sx+βy=γ.sy+δ

Formula 3: Traslación y Escalamiento de Vectores.

con α y β tales que:

x1=α.sx1+βx2=α.sx2+β

y Υ , δ tales que:

y1=γ.sy2+δy2=γ.sy1+δ

Resolviendo los dos sistemas lineales se obtienen las relaciones

x=x1+(x2x1)(sxsx1)(sx2sx1)y=y2(y2y1)(sysy1)(sy2sy1),

Las cuales se implementaron en el Proceso denominado Pantalla

Lenguaje de Programación C#

C# o C Sharp es un lenguaje de programación que está incluido en la Plataforma.NET y corre en el Lenguaje Común en Tiempo de Ejecución (CLR, Common Language Runtime). El primer lenguaje en importancia para el CLR es C#, mucho de lo que soporta la Plataforma.NET está escrito en C#, las características de este lenguaje permiten de una manera fluida la implementación de procesos matemáticos ya que su estructura es muy similar a la estructura matemática [7].

La orientación a los objetos es más pura y clara que en otros lenguajes. C# soporta todas las características del paradigma de la programación orientada a objetos, como son la encapsulación, la herencia y el polimorfismo [8].

Contiene dos categorías generales de tipos de datos integrados: tipos de valor y tipos de referencia. El término tipo de valor indica que esos tipos contienen directamente sus valores.

Además, el uso es sencillo C# elimina muchos elementos añadidos por otros lenguajes y que facilitan su uso y compresión. Es por ello que se dice que C# es auto contenido [7].

Procedimientos en C#

PROCESO PANTALLA

fig-8.jpg

PROCESO VECTOR

fig-9.jpg

PROCESO AXONOMETRIA

fig-10.jpg

PROCESO VECTOR 3D

fig-11.jpg

PROCESO SUPERFICIE

fig-12.jpg

4. EJEMPLO

Superficie: z=x.cos(y)+y.sen(x)

fig-13.jpg
Figure 6
Superficie Mallada.
fig-14.jpg
Figure 7
Superficie Eliminando secciones.
fig-15.jpg
Figure 8
Superficie Texturizada.
fig-16.jpg
Figure 9
Superficie con Iluminación.

5. Concluciones

Los algoritmos clásicos como el Algoritmo del Pintor no son tan eficientes al eliminar secciones escondidas en superficies de alta complejidad como por ejemplo las superficies de revolución, a diferencia del algoritmo que calcula el ángulo del observador y la perpendicular a la superficie que lo realiza de mejor forma. Además, el vector normal en cada sector de la superficie es un buen indicador para decidir si es un sector externo o interno de la superficie. El gradiente de un operador (Superficie) al medir la dirección de variación de magnitudes fue muy útil para calcular intensidades en la textura de la superficie (iluminación). Finalmente, las herramientas del Calculo Vectorial son más fuertes que las herramientas de la Geometría clásica al generar superficies en un computador.

Las expectativas futuras con este trabajo es poder aplicar las técnicas del Calculo Vectorial para graficar planos tangentes a las superficies o trazar curvas de nivel respecto a cualquiera de los ejes cartesianos.

References

1 

N. Castellanos, «Reconstruccion y sombreado de superficies tridimensionales anatomicas a partir de cortes tomograficos,» 1995. [En línea]. Available: http://tesiuami.izt.uam.mx/uam/aspuam/presentatesis.php?recno=3639&docs=UAM3639.PDF

2 

D. Bini, O. Menchi, “Matematica, mondo reale e calcolatore”, Zanichelly, Italia. 2001.

3 

J. Glyn, “ Matemáticas Avanzadas para Ingeniería”, Pearson, Madrid. 2012.

4 

A. Álvarez, “Matemática de la Computación Grafica para la simulación de fenómenos ondulatorios y dinámicos”, Tesis de Maestría en Informática Aplicada, ESPOCH, 2010

5 

L. Meza, «Gradiente, divergencia y rotacional,» 2017. [En línea]. Available: http://www.ifuap.buap.mx/∼lilia/mating/Grad-div-rot.pdf.

6 

M. Garcia, “Creación de un software con programación concurrente para la iluminación y sombreado de superficies vectoriales utilizando gradientes vectoriales”, Tesis de Pregrado, ESPOCH, 2016.

7 

Servicio de Informatica, «Curso.Net con C#,» [En línea]. Available: https://si.ua.es/es/documentacion/c-sharp/documentos/masterpages/modulo1.pdf.

8 

J. González, «El Lenguaje de Programación C#,» 2015. [En línea]. Available: http://users.dsic.upv.es/∼jlinares/csharp/lenguajeCsharp.pdf.

FULL TEXT

Statistics

  • Downloads 4
  • Views 74

Navigation

Refbacks



ISSN: 2518-6841