Primitivas

TECNOLOGICO NACIONAL DE MÉXICO INSTITUTO TECNOLOGICO DE ACAPULCO Ing. En Sistemas Computacionales Asignatura: Grafica

Views 149 Downloads 5 File size 217KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

TECNOLOGICO NACIONAL DE MÉXICO

INSTITUTO TECNOLOGICO DE ACAPULCO

Ing. En Sistemas Computacionales

Asignatura: Graficación

Catedrático: M.I.D.S Alma Delia de Jesús Islao

Alumno:

Grupo:

Campos Solano Saúl Eduardo

14320917

11:00-12:00 hrs

Semestre: 6 °

Presenta: Ecuaciones matemáticas de las primitivas gráficas

TECNOLOGICO NACIONAL DE MÉXICO Acapulco, Gro. A Marzo 2017

INSTITUTO TECNOLOGICO DE ACAPULCO

Ing. En Sistemas Computacionales

Asignatura: Graficación

Catedrático: M.I.D.S Alma Delia de Jesús Islao

Alumno: Nogueda Picazo Karla Liliana

Grupo:

11:00-12:00 hrs

14321044

Semestre: 6 °

Presenta: Ecuaciones matemáticas de las primitivas gráficas

Introducción a las primitivas gráficas

Acapulco, Gro. A Marzo 2017

Puntos: Se especifican a partir de su localización y color. Su discretización es directa, como se mencionó con anterioridad. Segmentos de recta: Son esenciales para la mayor parte de las entidades. Se especifican a partir de un par de puntos que representan sus extremos. Circunferencias: En algunos casos representar entidades curvadas con segmentos poligonales puede ser inadecuado o costoso, por lo que en la prácticas las circunferencias o círculos se adoptan como primitivas. Se especifican con la posición de su centro y su radio. Polígonos: Son indispensables para representar entidades sólidas. Se representan a partir de la secuencia de puntos que determina la poligonal de su perímetro. Para el momento de escoger un método de discretización para una primitiva gráfica, es indispensable contar con criterios que permitan evaluar y comparar las ventajas y desventajas de las distintas alternativas. Apariencia: Es la especificación más obvia, aunque no es fácil describirla en términos formales. Normalmente se espera que un segmento de recta tenga una “apariencia recta” más allá de que se hallan escogido los pixeles matemáticamente más adecuados. Tampoco debe tener discontinuidades. Debe pasar por la discretización del primer y último punto del segmento. Debe ser uniforme, etc. Simetría e invariancia geométrica: Esta especificación se refiere a que un método de discretización debe producir resultados equivalentes si se modifican algunas propiedades geométricas de la primitiva que se está discretizando. Por ejemplo, la discretización de un segmento no debe variar si dicho segmento se traslada a otra localización en el espacio, o si es rotado, etc. Simplicidad y velocidad de cómputo: Como los métodos tradicionales de discretización de primitivas se desarrollaron hace tres décadas, en momentos en que las posibilidades del hardware y software eran muy limitadas, los resultados eran muy sensibles al uso de memoria u operaciones aritméticas complejas. Por lo tanto, los métodos tienden a no depender de estructuras complejas y a ser directamente implementables en hardware específico de baja complejidad. 1.- Introducción a la primitiva línea Es una primitiva gráfica que esta especificada por dos puntos: sus extremos. Cuando hablamos de CG, lo que entendemos por linea es lo que en matemáticas entendemos por segmento. También le podremos especificar algunas propiedades. Caracterización matemática y = mx + b P1 = (x1; y1), P2 = (x2; y2) SEGMENTO DE LA RECTA El análisis de los métodos de discretización de rectas parte de considerar comportamiento esperado en determinados casos particulares. Dichos casos surgen suposiciones específicas que simplifican el problema, pero que al mismo tiempo pueden generalizar a todos los demás casos por medio de simetrías. Dado segmento de recta que va de (x0; y0) a (x1; y1), se supone que: Dx = (x1 - x0) ³ 0 Dy = (y1 - y0) ³ 0, y Dx ³ Dy.

el de se un

Acapulco, Gro. A Marzo 2017

Esto equivale a trabajar en el “octavo” del espacio de pantalla sombreado en la Figura 28, donde el origen es el pixel que corresponde a la discretización del punto (x0;y0) y la zona sombreada a los lugares donde puede ubicarse el punto (x1;y1 ).

2.- Discretización de circunferencias Como en el caso de los segmentos de recta, en la discretización de circunferencias o círculos es posible trabajar un sólo segmento de la circunferencia y se obtienen las demás por simetría. Igualmente se dispone de algoritmos DDA y de Bressenham para el dibujo de circunferencias. En este aparte se mostrará una adaptación del algoritmo DDA a partir de la ecuación de la circunferencia, tomado de la página internet de Roberto Albornoz12. Para poder realizar el dibujo de la circunferencia usaremos las ecuaciones de la circunferencia en coordenadas polares que son: x = r * cosq y = r *senq Estas ecuaciones serán las que ocuparemos para calcular cada punto (x,y) del círculo, donde el r será obviamente el radio de círculo y q será el ángulo que forma el radio con la parte positiva del eje x. En forma gráfica sería así:

Acapulco, Gro. A Marzo 2017

El ángulo deberá estar en radianes ya que las funciones de seno y coseno que incluye Java, trabajan con los ángulos en radianes. La fórmula para transformar grados a radianes es la siguiente:

Entonces para dibujar el círculo de un radio determinado, solamente tenemos que hacer un ciclo desde 0 hasta 360, pero con incrementos pequeños, calcular cada punto con las ecuaciones en coordenadas polares e ir dibujando cada punto. El ciclo en vez de ir de 0 a 360 (ángulos en grados) irá de 0 a 6.28 (360*3.14/180=6.28) ya que el ángulo debe estar en radianes. Dibujar el círculo punto a punto es una tarea un poco lenta, debido a que se debe calcular en cada punto el seno y el coseno del ángulo, y estas funcionas son muy lentas. Para solucionar esto se pueden crear tablas predefinidas o pre calculadas. En la siguiente figura se muestra el código en Java que permitiría dibujar el círculo en una ventana. Algoritmo grafico de Primitiva de la circunferencia

Algoritmos para Generación de Círculos Como la circunferencia es un componente que se utiliza con frecuencia en imágenes y gráficas, las mayor parte de los paquetes de gráficas incluye un procedimiento para generar ya sea circunferencias completas o arcos circulares. De modo más general se puede ofrecer un solo procedimiento para desplegar ya sea curvas circulares o elípticas. Una circunferencia se define como un conjunto de puntos que se encuentran, en su totalidad, a una distancia determinada r de una posición central (xc , yc). Esta relación de distancia se expresa por medio del teorema de Pitágoras en coordenadas cartesianas como (x - xc)2 + (y - yc)2 = r2

Acapulco, Gro. A Marzo 2017

La forma de la circunferencia es similar en cada cuadrante. Se puede generar la sección circular del segundo cuadrante del plano de xy al notar que las dos secciones circulares son simétricas con respecto del eje de las y. Y las secciones circulares del tercero y el cuarto cuadrantes se pueden obtener a partir de las secciones del primero y el segundo cuadrantes al considerar la simetría en relación con el eje de las x. También se puede decir que hay simetría entre octantes. Las secciones circulares en octantes adyacentes dentro de un cuadrante son simétricas con respecto de la línea a 45° que divide los dos octantes. Al aprovechar la simetría de la circunferencia de esta manera, se podrá generar todas las posiciones de pixel alrededor de una circunferencia, calculando sólo puntos dentro del sector de x = 0 a x = y. Se podría utilizar la ecuación de Pitágoras en coordenadas cartesianas ((x - xc)2 + (y yc)2 = r2) para calcular la posición de los puntos de una circunferencia pasando a lo largo del eje de las x en pasos unitarios de xc -r a xc + r y calcular los valores correspondientes de y en cada posición como y = yc ± √(r2 - (xc- x)2 ) No obstante, éste no es el mejor método para generar una circunferencia. Un problema con este planteamiento es que implica cálculos considerables en cada paso. Por otro lado, el espacio entre las posiciones de pixel trazadas no es uniforme. Se podría ajustar el espacio al intercambiar x y y (pasar por los valores de y y calcular los valores de x) siempre que el valor absoluto de la pendiente de la circunferencia sea mayor que 1. Pero esto sólo incrementa el cálculo el procesamiento que el algoritmo requiere. Otra manera de eliminar el espacio irregular consiste en calcular los puntos a lo largo de la frontera circular utilizando las coordenadas polares r y θ. Al expresar la ecuación de la circunferencia en forma polar paramétrica, se obtiene el siguiente par de ecuaciones: x = xc + r cosθ y = yc + r cosθ Cuando un despliegue se genere con estas ecuaciones utilizando un tamaño de paso angular fijo, una circunferencia se traza con puntos equidistantes a lo largo de la misma. El tamaño de paso seleccionado para θ depende de la aplicación, así como del dispositivo de despliegue. Las separaciones angulares más grandes a lo largo de la circunferencia se pueden unir con segmentos de línea recta a fin de aproximarse a la trayectoria circular. En el caso de una frontera más continua, se puede establecer el tamaño de paso como 1/r. Esto hace que se tracen posiciones de pixel que están aproximadamente una unidad aparte. El método directo utiliza:

Acapulco, Gro. A Marzo 2017



Una función no lineal



Cálculo de punto flotante,



Una función de redondeo. Presenta saltos en los valores para y (en coordenadas cartesianas).

Algoritmos para Generación de Elipses Expresado en forma ambigua, una elipse es una circunferencia alargada. Por tanto las curvas elípticas se pueden generar al modificar los procedimientos para el trazo de circunferencias con el fin de considerar las diversas dimensiones de una elipse a lo largo de los ejes mayor y menor. Una elipse se define como el conjunto de puntos en que la suma de las distancias desde dos posiciones fijas (focos) sea la misma para todos los puntos. Si las distancias a los dos focos desde cualquier punto P = (x , y) en la elipse se representan como d1y d2, entonces la ecuación general deuna elipse puede expresarse como d1 + d2 = constante Ten en cuenta que para cualquier punto de la elipse siempre se cumple que: d(P,F)+d(P,F')=2⋅a Donde d(P,F) y d(P,F') es la distancia de un punto genérico P al foco F y al foco F' respectivamente.

Acapulco, Gro. A Marzo 2017

Al expresar las distancias d1y d2,, en términos de las coordenadas focales F1 = (x1 , y1,) y F2= (x2 , y2),tenemos √((x - x1,)2 + (y - y1,)2) + √((x - x2,)2 + (y - y2,)2) = constante Si elevamos al cuadrado esta ecuación, aislamos el radical restante y luego la elevamos al cuadrado una vez más, podemos volver a expresar la ecuación general de la elipse en la forma Ax2 + By2 + Cxy + Dx + Ey+ F = 0 donde los coeficientes A, B,C, D, E y F se evalúan en términos de las coordenadas focales y las dimensiones de los ejes mayor y menor de la elipse. El eje mayor es el segmento de línea recta que se extiende desde un lado de la elipse al otro a través de los focos. El eje menor abarca la dimensión más corta de la elipse, dividiendo en dos partes el eje mayor en la posición central (centro de la elipse) entre los dos focos. Las ecuaciones de la elipse se simplifican, en gran medida, si se orientan los ejes mayor y menor para alinearse con los ejes de las coordenadas. La ecuación de la elipse puede expresarse en términos de las coordenadas del centro de la elipse y los parámetros rx y ry como ( (x - xc ) / r x)2 + ( (y - yc) / ry)2 = 1 Al utilizar las coordenadas polares r yθ, también es posible describir la elipse en posición estándar con las ecuaciones paramétricas x = xc + rx cosθ y = yc + ry senθ Se pueden aplicar consideraciones sobre la simetría para reducir aún más los cálculos. Una elipse en posición estándar es simétrica entre cuadrantes, pero a diferencia de la circunferencia, no es simétrica entre los dos octantes de un cuadrante. De este modo, debemos calcular las posiciones de pixel a lo largo del arco elíptico a través de un cuadrante, entonces obtenemos por simetría las tres posiciones de los otros tres cuadrantes.

Acapulco, Gro. A Marzo 2017