Documente Academic
Documente Profesional
Documente Cultură
COMPUTACION GRAFICA
UNAD 2017
Universidad Nacional Abierta y a Distancia – UNAD
Vicerrectoría Académica y de Investigación - VIACI
Escuela: Escuela De Ciencias Básicas Tecnología E Ingeniería Programa: Ingeniería de Sistemas
Curso: Computación Gráfica Código: 299210
Lección 16 JDK
El JDK (Java Development Kit) comprende todas las herramientas necesarias para la
programación en JAVA, a continuación, se presenta una relación de sus principales
componentes:
Para realizar la instalación del JDK de JAVA es necesario descargarlo desde la página
http://www.oracle.com/technetwork/java/javase/downloads/index.html, allí deberá hacer
clic en el enlace de descarga y seleccionar el instalador correspondiente a su sistema
operativo.
Universidad Nacional Abierta y a Distancia – UNAD
Vicerrectoría Académica y de Investigación - VIACI
Escuela: Escuela De Ciencias Básicas Tecnología E Ingeniería Programa: Ingeniería de Sistemas
Curso: Computación Gráfica Código: 299210
Sin embargo, los tipos de datos mayormente empleados en la programación básica con
JAVA son boolean, int y double.
18.2. Caracteres
En Java los caracteres no están limitados a los presentes en la tabla ASCII, son Unicode.
Un caracter se presenta siempre entre comillas simples ej. 'A', '5', 'ó', etc. El tipo de dato
char se emplea para almacenar estos caracteres.
\r: Retorno de carro (hace que se mueva el cursor a la primera posición de una
línea)
\t: Tabulador horizontal (genera un espacio de separación entre caracteres)
\n: Nueva línea (indica el final de una línea de texto y el paso a la siguiente).
\\: Escribe una barra invertida.
18.3 Variables
booleanas: Una variable booleana solamente puede guardar uno de los dos
posibles valores: true (verdadero) y false (falso). Ej. boolean var1 = true;
enteras: Una variable entera corresponde a cualquier combinación de cifras
precedida por el signo más + (opcional), para los positivos, o el signo menos -,
para los negativos. Ej. int var1 = -254; las variables enteras se enuncian en java
con las palabras reservadas (int, byte, short, int, long) según la longitud de los
valores a contener.
en coma flotante: Las variables del tipo float o double (coma flotante) se
emplean para almacenar valores que poseen parte entera y parte decimal. Ej.
float var1 = 4.3f; double var1 = 3.5;
Valores constantes: Cuando se declara una variable de tipo final, su valor
permanece y no es posible modificarlo durante la ejecución del programa. Ej. final
int VAR1=256;
IntelliJ IDEA: Considerado uno de los mejores entornos de desarrollo, posee soporte
para multiples lenguajes de programación.
....
� C1 W1ktionary • !), !§)
ti-
android ) wiktionary )
��������-.
LookupActivity }
.....
1,1 PrOJf'Ct /Llbrary/android sdk-mac_ 0-1� e WordWidget.java � LookupActivity.java � -�S_m�l-_W-k l�p-�.¡a� _•_��[jg=c-w��g�e_t�w_r_d�x�m_�-...,�
1..... [����r�j�c_
-
-
�J '¡i
if (query != null) {
n
o
3
" T �res
• �anlm
I> t::;i drawable fi
Pu:h our requl'sted 'iOrd -c tne ti tle bar
publishProgress(query);
String wikiText = ExtendedWikiHelper .getPageContent(9.!!_ery, true);
,;;,gnmMrif:#M#MDIU§tlttMlt#lffifh!ffffii@tittJI II
1
• e.,1ayou1 }
} catch (ApiException e) {
[&! about.xml
Log.e(TAG, "Probleni 11aking w:iktionaa request", e);
[j¡) lookup.xml } catch (ParseException e) {
[&l widget_message.xml Log.e(TAG, "Problea uking w!ktionao; request", e);
[jg widget_word.xml
• C.menu if (parsedText = nult) {
• Ülvalues parsedText = getString(R. string. eepty_result);
I> c:Jxml
.,. Osrc return parsedText¡
T í:l'lcom.example.android.wiktionary
@'il ExtendedWikiHelper
lf> 'il LookupAaivity '*"·.-*I
@()vernde
<&) 'il SimpleWiklHelper protected void onProgressUpdate{String ... args) {
@'il WordWídget String searchWord = args [0[;
J
setEntryTit le(searchWord);
[il AndroidManifest.xml
!JIWíktionary.iml
•
la! Variables 7" CI �1
� Frames ?" CI +¡ 1:1 I> 51 this = (com.example.android.wiktionary.LookupAaivitySLookupTask@830007844944) @
, + [ • "<11> Asyn... :
J
TODO
El SDK de Eclipse incluye las herramientas de desarrollo de Java, ofreciendo un IDE con
un compilador de Java interno y un modelo completo de los archivos fuente de Java. Esto
..
permite técnicas avanzadas de refactorización y análisis de código.
· --
Cd-1 lowr« �tc:tor
fik
!;', • • � • SQl'ch
0firl..ptit 1!1'9tT�."
m
• ai.,.,
,¡, -1ndow
4 ont1'i � i, • • <;, •
.
...,¡ 1 •
� °'-'tJ,ne ... .._,�ble .. 8"'.tc,o � c.,,cul
• �J�, • !stc • f1!ttl�.Ad.'tllfd>Jjl)JIYIHS,U • �,-Qt •
----------------------.::Kt•1t
- c,o.)awa.:wc.wb,l•P•·t.n.paoc•: ,.,.
. .0 0 1 s� -�
· - [/ l �
!. p.t,d.aqe
lt.lu,r ¡¡¡ ..
. 1i!I""'"'
1·
'5 «rtrols
u.,-.tl•11••Y
·o
-
, ·�IIÑti;,,s
\)JW�rolJ•v•lll
,.,
U pobltc ctu, P�
e e¡ .....
,.
7 4 pnv•t4 •Wt.la tln•l 1.0W•r J�r -
Loqver.vrU,oglJ'l'.rCP�.al••••:
'76 pabUa 1t.•uc tt-J St.rlftf1 DIIJ»Cciledl'� • '"Dup.1.t.cllocll•qe•r
"
' 18
,t
pro�i..d S.rrJ•t.0,•C..t. CG!:'lt.tw.t.:
pr-ot.et.od iut09 cbuS.t:
to
il) °'"°'n1"•J•Q u
f !
82
...
hc lcC,,S.rvl•t/lMrl»,t. �-NfJHt.; f!l JMs
l)Ol)
htrJ•.... 110!
--
41'\ .-.nhl ,� , ....,_.. ,..._,...v,,,,.,u,t.l<"l"IT'1:
llJRt�'-''-'..,... Cl,l�O U)
5/1l/10S:A7 ....
�
ft.Ml:the ......... �,...,.�iSl
N&!t ...,-. 4.ll'ldo edd ,1t1�L:t et.,_.
'1a11os1,� ,,_.""fd 1b,--,.!m N41t...,._�s1nt.iritó,ii.
1.103
0
.a/la/1012' l'M
110,
...
• 1101
Netbeans: NetBeans es un proyecto de código abierto de gran éxito con una gran base
de usuarios, una comunidad en constante crecimiento, y con cerca de 100 socios en todo
el mundo. Sun MicroSystems fundó el proyecto de código abierto NetBeans en junio de
2000 y continúa siendo el patrocinador principal de los proyectos.
[a •
:Pr•.. :services Start Page x
e, MainActivity.java x �--------------------------�(.!_•_�E)=�(g)=,
�·
13 C1 HolaMundo
Él
/•• Called when the act1v1ty is f1rst created. •/
17 El
Source Packages
t- �Bt.1ainActivity.java
L ��.java
�
19 -
@Override
public void onCreate(Bundle icicle) {
Test Packages 20 super.onCreate(icicle);
Resources 21 // ToDo add your GUI 1nitialization code here
Libraries 22
Test Libraries (J. TextView tv = nee TextView(this);
C1 AndroidManifest.xml 24 tv.setText( "¡Hola Hundo Andro1d1 ");
25 setContentView(tv);
: onCreate - Navigator •o x 26
27
Members View v
28
13· &l MainActivity : : Activity
29
- O onCreate(Bundle icicle)
V
� x !Tasks
: Output - HolaMundo (-res-compile)
C1> ínit:
deps-jar:
1
Created dir: C:\Docu.m.ents and Settings\Compaq_Propietario\Mis docu.m.entos\NetBeansProjects\Hola
� BUILD SUCCBSSFUL (total time: l second)
< >
20 l 32 !NS
Universidad Nacional Abierta y a Distancia – UNAD
Vicerrectoría Académica y de Investigación - VIACI
Escuela: Escuela De Ciencias Básicas Tecnología E Ingeniería Programa: Ingeniería de Sistemas
Curso: Computación Gráfica Código: 299210
Figura 4 Entorno del IDE Netbeans
Gestión de proyectos
Plantillas de proyecto
Finalización de código
interfaz de depuración
Editor con resaltado de sintaxis
Asistentes
Interfaz de usuario totalmente personalizable
Con JCreator es posible compilar o ejecutar directamente el programa Java sin necesidad
de activar el documento principal. JCreator identifica automáticamente el archivo con el
método principal o el archivo html cargador del applet de Java.
Para el desarrollo de las actividades prácticas del presente curso se recomienda el empleo
de JCreator (versión LE).
20.1 Compilación
20.2 Ejecución
Los mensajes de salida producidos por la ejecución del programa serán visualizados en el
recuadro de la derecha (General output).
CAPÍTULO 5 ALGORITMOS BÁSICOS
Es muy difícil escoger un conjunto de primitivas gráficas que sea adecuado para la
representación de todo tipo de entidades gráficas. Sin embargo, el siguiente subconjunto
resulta suficiente en la práctica:
Dada una primitiva gráfica a discretizar, debemos encontrar los pixeles que la
representen de la manera más correcta posible. Para ello, lo más adecuado es
caracterizar matemáticamente a dicha primitiva, de modo que su discretización pueda
efectuarse en forma sencilla. Entre los diversos métodos que pueden plantearse
destacamos los dos siguientes:
Análisis del error: Estos métodos fueron desarrollados por Bressenham y se basan en
analizar, dado un pixel que pertenece a la discretización de la primitiva, cuál es el
próximo pixel que minimiza una determinada expresión que evalúa el error que
comete la discretización.
• Δx = (x1 - x0) ≥ 0,
• Δy = (y1 - y0) ≥ 0, y
• Δx ≥ Δy.
Universidad Nacional Abierta y a Distancia – UNAD
Vicerrectoría Académica y de Investigación - VIACI
Escuela: Escuela De Ciencias Básicas Tecnología E Ingeniería Programa: Ingeniería de Sistemas
Curso: Computación Gráfica Código: 299210
El método busca encontrar una secuencia de n + 1 puntos tales que (x0;y0) = (x0;y0);
(x1;y1); … (xn;yn) = (x1;y1). La discretización de cada uno de ellos son los pixeles de la
discretización del segmento. Esta propiedad, si bien es trivial, es de gran importancia
porque determina que la discretización de un segmento de recta es invariante frente a
transformaciones afines. Esto significa que es equivalente transformar los extremos del
segmento y discretizar el segmento transformado, o discretizar primero y transformar
cada punto obtenido. Sin embargo, la primera alternativa es mucho más eficiente.
Un pequeño paréntesis para explicar algunas sentencias que pueden causar dudas:
cual se está dibujando, se toma el color como un objeto de tipo Color que puede
ser de los preterminados de Java o creado a partir de los parámetros r, g, b.
Esta llamada al método setColor permite modificar el color del “lápiz” que dibuja
sobre el contexto gráfico.
3. Java no tiene una sentencia básica para dibujar puntos (pixeles), en este caso
se utiliza la sentencia g.drawRect (línea 35) para dibujar un rectángulo con un
ancho y alto de 0, que en su ejecución se traduce a pintar un único pixel
ubicado en el punto enviado como parámetro.
4. En la misma sentencia g.drawRect (línea 35) se utiliza el “casting” a enteros para
lograr la discretización de las coordenadas flotantes.
La ejecución del algoritmo daría como resultado algo similar a lo mostrado en la siguiente
figura para 3 líneas diferentes.
Por último, si no se cumple que Δx ≥ Δy, entonces es necesario intercambiar los roles de
las variables x e y (simetría C). Cualquier combinación de situaciones se puede resolver
con combinaciones de simetrías (ver figura siguiente).
En el algoritmo DDA para segmentos de recta es necesario computar sumas entre las
variables en punto flotante, y además se requiere una división en punto flotante para
computar la pendiente. El mérito del algoritmo que vamos a presentar consiste en que
todas las operaciones se realizan en aritmética entera por medio de operaciones sencillas,
y por lo tanto, su ejecución es más rápida y económica, y es de fácil implementación con
hardware específico.
La decisión de ir hacia el paso E o D se toma en función del error que se comete en cada
caso. En este algoritmo se considera que el error es la distancia entre el
centro del pixel elegido y el segmento de recta, medida en dirección del eje Y positivo del
espacio de pantalla (es decir, hacia abajo). Si el error en p fuese cero, entonces al ir
hacia E el error pasa a ser m (la pendiente del segmento), y en D el error pasa a ser m -
1 (ver
Figura 16).
• Paso a E : e = e + m
• Paso a D : e = e + m –1
Por lo tanto, la elección del paso E o D depende de que el valor absoluto de e+m sea o no
menor que el valor absoluto de e+m-1. Expresado de otra manera, sea e el error en un
determinado pixel. Si e +m> 0.5 entonces el segmento de recta pasa más cerca del pixel
D, y si no, pasa más cerca del pixel E (ver Figura 17).
Una de las economías de cómputo del método proviene de poder evaluar el error
preguntando por cero. Es fácil ver que si se inicializa el error en e = m – 0.5 entonces en
cada paso hay que chequear e >0 para elegir D. La otra economía proviene de realizar
manipulaciones algebraicas para efectuar un cómputo equivalente, pero en aritmética
entera. Como se evalúa el error por cero, multiplicar el error por una constante no afecta
el resultado. Por lo tanto, multiplicamos el error por 2Δx. A partir de dicho cambio, se
constatan las siguientes igualdades:
• Paso a E: e = e+2Δy
• Paso a D: e = e+2(Δy-Δx)
x = r * cos
y = r *sen
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 será el ángulo que forma el radio con la
parte positiva del eje x. En forma gráfica sería así:
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: ��������� = 180
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
Universidad Nacional Abierta y a Distancia – UNAD
Vicerrectoría Académica y de Investigación - VIACI
Escuela: Escuela De Ciencias Básicas Tecnología E Ingeniería Programa: Ingeniería de Sistemas
Curso: Computación Gráfica Código: 299210
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
Universidad Nacional Abierta y a Distancia – UNAD
Vicerrectoría Académica y de Investigación - VIACI
Escuela: Escuela De Ciencias Básicas Tecnología E Ingeniería Programa: Ingeniería de Sistemas
Curso: Computación Gráfica Código: 299210
Como dijimos el ciclo de 0 a 6.28 debe hacerse con incrementos pequeños, no contando
de uno en uno, ya que, para un círculo de radio muy grande, podrían aparecer huecos
entre un punto y el siguiente, por lo tanto, tenemos que usar un incremento fraccionario.
El valor 0.005 produce buenos resultados. 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.
Se considera un polígono una figura cerrada, formada a partir de varias líneas. Para la
discretización de polígonos se considerarán 2 tipos de polígonos: los irregulares y los
regulares, en concordancia con lo mostrado por Steven R Davidson en su curso de
gráficos disponible en internet.
Como se podrá deducir del código el objeto Punto incluye las coordenadas x e y de un
• x i = cx + r * cos( i*α )
• y i = cy + r * sen( i*α )
donde:
• i = 0,1,2,...,N-1,
• r es el radio de la circunferencia, y
• c = (cx, cy) es la coordenada del centro geométrico de la circunferencia y
del polígono.
Los parámetros de entra para el método especifican el número de lados del polígono (N),
el punto centro de la circunferencia (centro), el radio de la circunferencia (radio), el
contexto gráfico (g) y el color.
Si bien existen diversos métodos, aquí presentaremos el más económico y difundido, que
se basa en encontrar la intersección de todos los lados del polígono con cada línea de
barrido (a y constante), por lo que el método se denomina conversión scan del polígono.
Este método es de gran importancia porque se generaliza a una clase de algoritmos
denominados scan-line para resolver determinados problemas de iluminación y
sombreado en tres dimensiones.
Todo polígono plano puede descomponerse en triángulos. Por lo tanto, el triángulo será la
base del análisis de la conversión scan de polígonos en general. Para computarla es
necesario dimensionar dos arreglos auxiliares de enteros minx, maxx que para cada línea
de barrido almacenarán el menor y mayor x respectivamente.
Universidad Nacional Abierta y a Distancia – UNAD
Vicerrectoría Académica y de Investigación - VIACI
Escuela: Escuela De Ciencias Básicas Tecnología E Ingeniería Programa: Ingeniería de Sistemas
Curso: Computación Gráfica Código: 299210
CAPÍTULO 6 TRANSFORMACIONES
Naturalmente, así como se desean dibujar gráficos, también se desea moverlos, rotarlos,
cambiar su tamaño, etc. En esta sección se presentan los principales fundamentos
matemáticos que subyacen al proceso de transformación de los gráficos en dos
dimensiones, a partir de lo mostrado por el euitmt WWW team de la Universidad de
Oviedo. Se espera que el estudiante en su proceso de profundización realice los
algoritmos que permitan hacer estas transformaciones.
Una de las mayores virtudes de los gráficos generados por ordenador es la facilidad con
se pueden realizar algunas modificaciones sobre las imágenes. Un gerente puede cambiar
la escala de las gráficas de un informe. Un arquitecto puede ver un edificio desde
distintos puntos de vista. Un cartógrafo puede cambiar la escala de un mapa. Un
animador puede modificar la posición de un personaje. Estos cambios son fáciles de
realizar porque la imagen gráfica ha sido codificada en forma de números y almacenada
en el interior del ordenador. Los números son susceptibles a las operaciones matemáticas
denominadas transformaciones.
Las imágenes gráficas que se han generado están compuestas por un conjunto de
segmentos que están representados por las coordenadas de sus extremos. Algunos
cambios en la imagen pueden ser fácilmente realizados mediante la aplicación de algunas
operaciones matemáticas sobre estas coordenadas. Antes de ver algunas de las posibles
transformaciones, es necesario repasar algunas de las herramientas matemáticas que se
necesitarán, como la multiplicación de matrices
CAPÍTULO 6 TRANSFORMACIONES
Entonces podemos multiplicar A por B porque la primera tiene tres columnas y la segunda
tres filas. Al contrario que la multiplicación de números, la multiplicación de matrices no
es conmutativa, es decir, aunque podemos multiplicar A por B no podemos multiplicar B
por A, porque B tiene sólo dos columnas que no se corresponden con las tres filas de A.
Cuando multiplicamos dos matrices se obtiene como resultado otra matriz. Este matriz
producto tendrá el mismo número de filas que la primera de las matrices que se
multiplican y el mismo número de columnas que la segunda, es decir, a partir del
ejemplo, la multiplicación de la matriz A3x3 con la matriz B3x2 da como resultado la
matriz C3x2.
Los elementos del matriz producto C se expresan en función de los elementos de las
matrices A por B mediante la siguiente fórmula:
Esta es una propiedad muy útil ya que permitirá combinas varias transformaciones
gráficas en una sola transformación, produciendo como resultado unos cálculos más
eficientes.
Existe un conjunto de matrices que cuando multiplican a otra matriz, la reproducen. Por
esta razón reciben el nombre de matrices identidad. Son matrices cuadradas (tienen el
mismo número de columnas y de filas) con todos los elementos 0 excepto los elementos
de la diagonal principal, que valen todos 1. Por ejemplo
De forma matemática A = AI
¿Cómo se aplica todo esto a los gráficos? Bueno, consideremos un punto P1=[x1 y1]
como una matriz de 1x2. Si la multiplicamos por una matriz T2x2, obtendremos otra
matriz que puede ser interpretada como otro punto.
Por tanto, la matriz T es una aplicación entre el punto original P1 y el nuevo punto P2. Si
suponemos la imagen compuesta por los vértices de un polígono. ¿Qué pasará si
transformamos cada uno de los puntos mediante una multiplicación por una matriz T y
dibujamos el resultado? ¿Qué aspecto tendrá esta nueva imagen? La respuesta, por
supuesto, depende de los elementos de la matriz T. Si, por ejemplo, escogemos la matriz
identidad entonces la imagen no se verá alterada.
entonces
Universidad Nacional Abierta y a Distancia – UNAD
Vicerrectoría Académica y de Investigación - VIACI
Escuela: Escuela De Ciencias Básicas Tecnología E Ingeniería Programa: Ingeniería de Sistemas
Curso: Computación Gráfica Código: 299210
Cada una de las nuevas coordenadas x tiene el doble de valor que las antiguas. Las líneas
horizontales serán dos veces más largas en la nueva imagen. La nueva imagen tendrá la
misma altura, pero parecerá que la hemos estirado hasta alcanzar el doble del ancho
original.
Lección 28 Rotación
La siguiente transformación gráfica que vamos a ver es la rotación. Para introducir esta
transformación recordaremos brevemente algunos conceptos trigonométricos. Sea un
punto p1=(x1, y1) y lo giramos alrededor del origen un ángulo para pasar a una nueva
posición p2=(x2, y2). Queremos encontrar la transformación que convierte (x1, y1) en
(x2, y2). Pero, antes de comprobar si alguna transformación es la adecuada, debemos
saber primero que (x2, y2) debe escribirse en función de (x1, y1) y . Para esto es
necesario recordar las razones trigonométricas de seno y coseno.
Universidad Nacional Abierta y a Distancia – UNAD
Vicerrectoría Académica y de Investigación - VIACI
Escuela: Escuela De Ciencias Básicas Tecnología E Ingeniería Programa: Ingeniería de Sistemas
Curso: Computación Gráfica Código: 299210
Cada una de las nuevas coordenadas x tiene el doble de valor que las antiguas. Las líneas
Universidad Nacional Abierta y a Distancia – UNAD
Vicerrectoría Académica y de Investigación - VIACI
Escuela: Escuela De Ciencias Básicas Tecnología E Ingeniería Programa: Ingeniería de Sistemas
Curso: Computación Gráfica Código: 299210
Ahora estamos listos ya para determinar la rotación de un punto alrededor del origen.
De forma análoga:
Dando
A la vista de estas ecuaciones podemos imaginar una matriz que relacione las
coordenadas del punto original y del punto girado:
Así la matriz de transformación para una rotación en sentido contrario a las agujas del
reloj de ángulo alrededor del origen es:
Para una rotación en el sentido de las agujas del reloj, basta sustituir en la expresión
anterior el valor del ángulo por -□. Así nos queda
En general, con el fin de trasladar una imagen (Tx, Ty), cada punto (x1, y1) se convierte
en uno nuevo (x2, y2) donde:
Tal combinación sería deseable; por ejemplo, hemos visto que la rotación alrededor de un
punto que no sea el origen puede realizarse mediante una traslación, una rotación u otra
traslación. Sería deseable combinar estas tres transformaciones en una sola
transformación por motivos de eficacia y elegancia. Una forma de hacer esto es emplear
matrices 3x3 en vez de matrices 2x2, introduciendo una coordenada auxiliar w. Este
método recibe el nombre de coordenadas homogéneas. En estas coordenadas, los puntos
están definidos por tres coordenadas y no por dos. Así un punto (x, y) estará
representado por la tripleta (xw, yw, w). Las coordenadas x e y se pueden recuperar
fácilmente dividiendo los dos primeros números por el tercero respectivamente. No
emplearemos la coordenada w hasta que no veamos las transformaciones
tridimensionales de perspectiva. En dos dimensiones su valor suele ser 1 para simplificar.
Sin embargo, lo veremos de forma general como anticipo de las transformaciones
tridimensionales.
se convierte en
Si dividimos ahora por el tercer valor w tenemos (Exx, Eyy) que es el punto correcto
cambiado de escala.
Haremos esta transformación en tres pasos. Primero trasladaremos el punto (xC, yC) al
origen, luego haremos la rotación alrededor del origen y, por último, devolveremos el
centro de rotación a su posición original.
Cabe destacar que esta matriz se puede formar también mediante una rotación inicial de
ángulo y una traslación definida por los valores contenidos en la tercera fila
Universidad Nacional Abierta y a Distancia – UNAD
Vicerrectoría Académica y de Investigación - VIACI
Escuela: Escuela De Ciencias Básicas Tecnología E Ingeniería Programa: Ingeniería de Sistemas
Curso: Computación Gráfica Código: 299210
Las tres transformaciones de cambio de escala, rotación y traslación son las más útiles y
las más usadas. Son también posibles otras transformaciones. Dado que una matriz 2x2
cualquiera
1 0
0 -1 Reflexión respecto al eje x
-1 0
0 -1 Reflexión respecto al origen
0 1
1 0 Reflexión respecto a la recta y=x
0 -1
-1 0 Reflexión respecto a la recta y=-x
1 α
Deformación en el eje y
0 1
1 0
Deformación en el eje x
b 1
Las primeras tres reflexiones son simples cambios de escala, pero con factores negativos.
Las simetrías respecto a las rectas y=x e y=-x pueden realizarse mediante un cambio de
escale y un giro posterior. Es posible realizar las deformaciones mediante una secuencia
Referencias Bibliográficas