Professional Documents
Culture Documents
Proyecto Final de Algebra Lineal.
Proyecto Final de Algebra Lineal.
PROYECTO FINAL
CONTROL DE MOVIMIENTO Y TAMAÑO DE UNA FIGURA
PROYECTO FINAL.
1. INDICE
1. INDICE.................................................................................................................................2
2. INTRODUCCION................................................................................................................4
3. JUSTIFICACION.................................................................................................................4
4. PROBLEMATICA...............................................................................................................5
5. OBJETIVOS.........................................................................................................................5
6.- MARCO TEORICO............................................................................................................6
6.1. MOVIMIENTO DE UNA FIGURA DENTRO DE UN PLANO...........................6
6.1.1. Movimiento en un plano........................................................................................6
6.1.2. Plano cartesiano.....................................................................................................6
6.1.3. Eje de simetría........................................................................................................6
6.1.4. Movimiento............................................................................................................6
6.1.4.1. Movimientos directos........................................................................................7
6.1.4.2. Movimiento inverso..........................................................................................7
6.1.5. Tipos de movimiento en el plano...........................................................................7
6.1.5.1. Traslación..........................................................................................................7
6.1.5.2. Rotación o giro..................................................................................................8
6.1.6. Transformaciones...................................................................................................9
6.1.6.1. Transformación lineal........................................................................................9
6.1.6.2. Propiedades de la transformación......................................................................9
6.2. MATLAB.........................................................................................................10
6.2.1. Definición.............................................................................................................10
6.2.1.1. Características principales...............................................................................10
6.3. MATRICES Y VECTORES.............................................................................11
6.3.1. Matrices..............................................................................................................11
6.3.1.1. Matrices de rotación.....................................................................................11
6.3.1.2. Matrices de traslación..................................................................................11
6.3.1.3. Matrices de escalado...................................................................................12
6.3.2. Vectores..............................................................................................................13
2
6.3.2.1. Graficar un vector.........................................................................................13
6.3.3. Escalares............................................................................................................13
6.3.4. Variables.............................................................................................................14
7.- DESARROLLO.................................................................................................................14
8.- CONCLUSION..................................................................................................................20
9.- BIBLIOGRAFÌA...............................................................................................................21
3
CONTROL DE MOVIMIENTO Y TAMAÑO DE UNA FIGURA
2. INTRODUCCION
Millones de ingenieros y científicos en todo el planeta utilizan MATLAB para analizar y
diseñar los sistemas y productos que transforman nuestro mundo. El lenguaje de MATLAB,
basado en matrices, es la forma más natural del mundo para expresar las matemáticas
computacionales, este también cuenta con gráficas integradas que facilitan la visualización
de los datos y la obtención de información a partir de ellos, con un entorno de escritorio que
invita a experimentar, explorar y descubrir. El código de MATLAB se puede integrar con
otros lenguajes, lo que le permite implementar algoritmos y aplicaciones en sistemas web,
empresariales o de producción, contando con la posibilidad de ejecutar sus análisis en
conjuntos de datos de mayor tamaño y expandirse a clusters y nubes. Todas estas
herramientas y funciones de MATLAB están probadas rigurosamente y diseñadas para
trabajar juntas.
3. JUSTIFICACION
Este proyecto es necesario gracias a que con el podremos desarrollar habilidades que, como
ingenieros, nos va a ayudar en gran medida a lo largo de nuestra carrera tanto universitaria
como profesional. La finalidad de este proyecto es realizar un programa que simule el
control de movimiento y tamaño de una figura, considerando una figura en el espacio
cartesiano, la cual se puede desplazarse a la izquierda, a la derecha, hacia arriba o hacia
debajo, hacia el frente o hacia atrás, de su posición actual, además, la figura debe poder
girar sobre cualquier eje propuesto en cualquier sentido y cambiar de tamaño de acuerdo a
indicaciones del controlador, incluyendo un menú que permita realizar las acciones
individuales o combinadas sincronizadas. El proyecto se va a realizar por medio de un
programa de sistema de cómputo numérico llamado “MATLAB” usando un lenguaje de
programación propio, empleando matrices y comandos para desarrollar todos los criterios a
evaluar, este programa es de gran ayuda, ya que, entre sus prestaciones básicas se hallan la
manipulación de matrices, la representación de datos y funciones, la implementación de
algoritmos, la creación de interfaces de usuario y la
4
comunicación con programas en otros lenguajes y con otros dispositivos hardware, lo cual
nos apoyara en gran medida para la implementación de códigos y algoritmos basados en
ordenes para que nuestra figura pueda realizar todas las acciones solicitadas, de una manera
fácil, sencilla y rápida, ya que, es un software muy usado en universidades y centros de
investigación y desarrollo, por lo cual contaba con varios tutoriales y explicaciones
detalladas de todas sus funciones simples o complejas, ayudándonos en gran medida para el
desarrollo de este proyecto.
4. PROBLEMATICA
Consideré una figura en el espacio cartesiano, la cual se puede desplazar a la izquierda, a la
derecha, hacia arriba o hacia debajo, hacia el frente o hacia atrás de su posición actual,
además, la figura puede girar sobre cualquier eje propuesto en cualquier sentido y cambiar
de tamaño de acuerdo a indicaciones del controlador.
5. OBJETIVOS
GENERAL: Realizar un programa que simule la problemática, considerando un menú que
permita realizar acciones individuales o combinadas sincronizadas.
ESPECIFICOS:
2. Crear una interfaz que permita realizar las acciones individuales o combinadas.
5
6.- MARCO TEORICO.
6.1.4. Movimiento
Un movimiento es una transformación geométrica que conserva las distancias, o bien, un
movimiento es una transformación geométrica que conserva los tamaños y las formas de las
figuras.
6
6.1.4.1. Movimientos directos.
Se dice que un movimiento es directo si mantiene la orientación. Es decir, los vértices
homólogos se disponen siguiendo el mismo sentido, horario o antihorario.
Si los vértices A, B, C aparecen en el sentido contrario al de las agujas del reloj entonces
los vértices A', B', C' también.
Si los vértices A, B, C aparecen en el sentido contrario al de las agujas del reloj entonces
los vértices A', B', C' aparecen en el sentido de las agujas del reloj.
6.1.5.1. Traslación.
Llamamos traslación a una transformación puntual, que lleva un punto del plano A, a otro
punto A´. Por tanto, se llama traslación de vector v=AA´. Se denomina como Tv, por tanto,
Tv(A)=A´.
7
Propiedades de las traslaciones.
1. Las nuevas coordenadas del punto A´, se obtienen sumando el vector 0A, con el v.
Es decir, A´=Tv(A)=0A+v
2. Si aplicamos una traslación a todos los puntos de una recta obtenemos una recta
paralela a la original.
3. Si realizamos una traslación a una circunferencia de radio r y centro 0, obtenemos
otra circunferencia que tendrá el mismo radio que la anterior y cuyo centro será el
punto homólogo del anterior, es decir, 0´=Tv (0).
4. Cuando componemos dos traslaciones de vectores v1 y v2, obtenemos una
traslación de vector la suma de los anteriores. A partir de la composición de
traslaciones obtenemos algunos de los frisos o cenefas que se utilizan como motivos
decorativos.
Diremos que un giro tiene sentido positivo cuando sea el contrario del sentido de las agujas
de un reloj, en caso contrario, diremos que el sentido es negativo.
8
3. Si componemos dos giros de mismo centro, O, y ángulos distintos α y β, entonces
se obtiene un giro de centro O y ángulo α + β.
6.1.6. Transformaciones.
En las matemáticas, una transformación puede ser toda función que mapea un conjunto X en
otro conjunto o sobre sí mismo.1 Sin embargo, a menudo el conjunto X posee alguna
estructura algebraica o geométrica adicional y el término "transformación" se refiere a una
función de X sobre sí misma que conserva dicha estructura.
1. La imagen del vector nulo del dominio 0V0V es el vector nulo del codominio 0w0w:
T(0V) =0w
6.2. MATLAB.
6.2.1. Definición.
MATLAB es el nombre abreviado de “MATrix LABoratory”. MATLAB es un programa
para realizar cálculos numéricos con vectores y matrices. Es un programa interactivo
orientado para llevar a cabo proyectos en donde se encuentren implicados elevados cálculos
matemáticos y la visualización gráfica de los mismos. Como caso particular puede también
trabajar con números escalares, con cadenas de caracteres y con otras estructuras de
información más complejas. Una de las capacidades más atractivas es la de realizar una
amplia variedad de gráficos en dos y tres dimensiones. MATLAB tiene también un
lenguaje de programación propio.
10
6.3.1. Matrices.
Una matriz es un arreglo bidimensional de números, y en su mayor generalidad de
elementos de un anillo. Las matrices se usan generalmente para describir sistemas
de ecuaciones lineales, sistemas de ecuaciones diferenciales o representar una
aplicación lineal.
Así, cuando se deba girar el objeto un ángulo φ sobre un eje dado, partiendo de la
posición actual del objeto, el giro será relativo. En cambio, si el objeto se ha de girar
un ángulo Φ a partir del estado, entonces se trataría de un giro absoluto. Por otro
lado, los giros en 3D normalmente se realizan aprovechando la base trigonométrica
de las rotaciones en 2D, es decir, descomponiendo los giros 3D en sus
componentes ortogonales.
Puesto que se ha de establecer el sentido de giro, vamos a suponer que el
giro alrededor de un eje ortogonal será positivo, cuando sea contrario al sentido de
giro de las agujas del reloj, mirando cada eje de coordenadas desde fuera hacia el
origen
11
la matriz de traslación en 3D. (tx, ty, tz) se conoce como el vector de traslación. La
expresión anterior es equivalente al sistema de ecuaciones.
Las coordenadas del punto final serán x' = xSx, y' = ySy, z' = zSz
12
Cuando Sx = Sy = Sz el cambio de escala es uniforme; en cualquier otro
caso el cambio de escala será no uniforme.
Para obtener el cambio de escala inverso al realizado aplicando la matriz S, basta
con multiplicar los puntos finales por la matriz inversa de S, o sea, por la matriz S-1,
que se obtiene al sustituir Sx, Sy, Sz en S por 1/Sx, 1/Sy, 1/Sz, respectivamente.
Los cambios de escala no uniformes deforman los objetos, por lo que pueden
resultar interesantes; por el contrario, el escalado uniforme no deforma los objetos,
por lo que suele emplearse con mayor frecuencia. Si no se toman precauciones, los
cambios de escala, además de suponer una variación en las proporciones de los
objetos, también implican una traslación de los mismos, un efecto colateral no
deseado en muchas ocasiones.
6.3.2. Vectores.
Un vector es una expresión geométrica que se extiende desde un punto de
referencia llamado origen, hacia otro punto que se denomina extremo. El concepto
de vector hace referencia a la idea de desplazamiento en el espacio desde un
espacio inicial a un espacio final. Es todo segmento de recta que está dirigido en el
espacio. Los vectores se definen con los puntos que ocupan su origen y extremo en
los ejes de coordenadas. Los vectores se encuentran definidos por los
componentes de módulo, dirección, sentido y punto de aplicación.
6.3.3. Escalares.
Un escalar es únicamente un número, a diferencia de la mayoría de los otros
elementos del álgebra lineal que son conjuntos de valores como los vectores y
matrices. Generalmente, por convención a los escalares los escribimos en letra
cursiva minúscula o usando el alfabeto griego.
Entre los principales conjuntos de escalares tenemos a:
Números Naturales (ℕ): los números que se utilizan para contar los
elementos de cualquier conjunto. (1, 2, 3, 4, …)
Números Enteros (ℤ): el conjunto de los números enteros está dado por el
conjunto de los naturales, sus negativos y el cero. (…, -2, -1, 0, 1, 2, …)
Números Reales (ℝ): el conjunto de los reales incluye tanto a los racionales
como a los irracionales.
6.3.4. Variables.
Una variable algebraica es la representación de un valor mediante un símbolo. En
principio ese valor puede ser cualquier número. Evaluar una expresión algebraica
13
es dar un valor concreto a cada variable y obtener así un valor concreto para la
expresión.
7.- DESARROLLO
A continuación, explicaremos el funcionamiento del código, el cual cumple con los
objetivos primordiales marcados en las instrucciones del proyecto; los cuales eran
que la figura realizada en el plano cartesiano pudiera desplazarse a la izquierda, a la
derecha, hacia arriba o hacia debajo, hacia el frente o hacia atrás de su posición
actual, además de poder girar sobre cualquier eje propuesto en cualquier sentido y
cambiar de tamaño; así como poder realizarse dichas acciones tanto de manera
individual como combinadas sincronizadas. Además, la figura presentará una
animación a la hora de ser graficada.
La figura elegida fue un prisma rectangular, la cual es una figura con 3 dimensiones.
Así que, lo primero que se hizo fue definir los limites positivos y negativos de
nuestros ejes en el plano cartesiano (eje “x”, “y”, “z”).
14
Ya que tenemos los vértices de la figura definidos, procedemos a graficar dicha
figura (la cual nombraremos como “Figura Original” para diferenciarla de la figura
resultante), para así poder apreciar el cambio/transformación que sufrirá la figura al
ingresar los valores deseados en el apartado de variables (el cual aparecerá más
adelante). Por lo que, los valores que conforman a cada uno de los vértices
(vectores) se deben de plasmar en matrices de puntos para que así se pueda llevar
a cabo la unión de cada uno de los vértices de la figura original. Se formarán tres
matrices de puntos; la primera es para vaciar los valores de “x” (posición 1, primer
valor) de cada uno de los vértices; la segunda es para vaciar los valores de “y”
(posición 2, segundo valor) de cada uno de los vectores; y la tercera es para vaciar
los valores de “z” (posición 3, tercer valor) de cada uno de los vectores. Después, se
lleva a cabo la unión de los puntos, que habíamos declarado en las matrices de
puntos, por medio de líneas, y para ello se utiliza la función line; esta orden estará
declara en una variable llamada “PrismaOriginal” para que así nos arroje la figura
representada en el plano cartesiano. Además, se estableció el color y el grosor de
las líneas que conformaran a la nueva figura por medio de los comandos
PrismaOriginal.Color y PrismaOriginal.LineWidth, respectivamente.
15
Ahora, comenzamos a declarar nuestras variables, las cuales definirán el cambio
que tendrá nuestra figura al final; si esta se desplazará, rotará o cambiará de
tamaño; dichas variables tendrán un valor numérico.
Las variables están ordenadas en tres grupos. El primer grupo corresponde a la
figura resultante cuya rotación sea sobre el eje “x”; el segundo grupo corresponde a
la figura resultante cuya rotación sea sobre el eje “y”; y el tercer grupo corresponde a
la figura resultante cuya rotación sea sobre el eje “z”. Cada grupo, además de la
variable encargada de la rotación de la figura, cuenta con las variables de
desplazamiento en los ejes “x”, “y”, “z”, así como la variable encargada del cambio
de tamaño de la figura.
En el primer grupo. Las variables X1, Y1, Z1, definirán el desplazamiento de la figura
en los ejes “x”, “y”, “z”, respectivamente. La variable ALPHA, definirá el ángulo de
rotación (en grados) de la figura en el eje “x”. La variable “E1”, definirá un escalar, el
cual me indicará en que escala la figura modificará su tamaño.
En el segundo grupo. Las variables X2, Y2, Z2, definirán el desplazamiento de la
figura en los ejes “x”, “y”, “z”, respectivamente. La variable BETA, definirá el ángulo
de rotación (en grados) de la figura en el eje “y”. La variable “E2”, definirá un escalar,
el cual me indicará en que escala la figura modificará su tamaño.
En el tercer grupo. Las variables X3, Y3, Z3, definirán el desplazamiento de la figura
en los ejes “x”, “y”, “z”, respectivamente. La variable THETA, definirá el ángulo de
rotación (en grados) de la figura en el eje “z”. La variable “E3”, definirá un escalar, el
cual me indicará en que escala la figura modificará su tamaño.
16
En caso de no querer utilizar la variable de rotación, mantener dicha variable con
valor 0; y se puede utilizar cualquiera de los tres grupos de variables.
En caso de no querer modificar el tamaño de la figura, mantener dicha variable con
valor 1.
Ya que las variables están declaradas, podemos pasar al ciclo de animación. Para
ello utilizaremos el bucle for e indicaremos una variable I, la cual tendrá un valor
inicial de 1 y esta ira incrementando de uno en uno hasta llegar al número de ciclos
indicados en un principio, básicamente el ciclo se repetirá el número de veces que
este indicado en la variable “frames”; esto indicara el cambio gradual que sufrirá la
figura y así se pueda apreciar una animación armónica.
Aquí el ciclo ya estaría iniciando, por lo que indicaremos una pausa de inicio, la cual
tiene como objetivo que el primer fotograma de la figura modificada no aparezca
instantáneamente, sino que se tome un tiempo determinado.
Después indicaremos el cambio gradual que sufrirá la figura conforme van pasando
los ciclos; por lo que indicamos una variable div, la cual será el cociente del número
de ciclo en que nos encontremos entre la cantidad de ciclos indicados. Luego
indicamos las nuevas variables (las cuales ya presentarán una animación), estas
serán el producto del valor original de la variable correspondiente por la variable div
(el factor de conversión).
17
Ahora podemos pasar a las operaciones, las cuales modificaran los vértices
originales de la figura dándome como resultado vértices nuevos, y por lo tanto una
figura nueva.
Primero, comenzamos con la acción de desplazamiento y rotación. Para que la
figura pudiera desplazarse y rotar al mismo tiempo, se utilizaron tres matrices de
traslación especiales, una para cada eje (“x”, “y”, “z”); estas matrices contienen las
variables de desplazamiento y rotación (correspondientes al eje indicado, las cuales
ya presentan una animación.
Ahora, sigue unir las acciones de desplazamiento y rotación con la acción de cambio
de tamaño para que estas estén sincronizadas. Como tenemos las variables
ordenadas en tres grupos (ya que estas se ordenaron tomando en cuenta el ángulo
de rotación) el paso siguiente se debe de realizar con cada una de las matrices
resultantes del paso anterior y sus respectivas variables (dependiendo del eje de
rotación), las cuales ya presentan desplazamiento y rotación con animación.
Entonces, se debe multiplicar la variable de cambio de tamaño que ya presenta una
18
animación, la matriz de desplazamiento y rotación, y los vértices de la figura; esto da
como resultado los vértices de la figura modificada y con animación.
Ahora pasamos a graficar la nueva figura; como el resultado de las tres acciones
anteriores fueron los vértices de la nueva figura, los valores que conforman a los
vértices (vectores) se deben de plasmar en matrices de puntos para que así se
pueda llevar a cabo la unión de cada uno de los vértices de la nueva figura. Se
formarán tres matrices de puntos por agrupacion; la primera es para vaciar los
valores de “x” (posición 1, primer valor) de cada uno de los vértices resultantes; la
segunda es para vaciar los valores de “y” (posición 2, segundo valor) de cada uno de
los vectores resultantes; y la tercera es para vaciar los valores de “z” (posición 3,
tercer valor) de cada uno de los vectores resultantes. Por último, se lleva a cabo la
unión de los puntos, que habíamos declarado en las matrices de puntos, por medio
de líneas, y para ello se utiliza la función line; esta orden estará declara en variables
llamadas “Prisma1”, “Prisma2”, “Prisma3” para que así nos arroje la figura
representada en el plano cartesiano (dependiendo el angulo de rotación que
hayamos decidido usar). Además, se estableció el color y el grosor de las líneas que
conformaran a la nueva figura por medio de los comandos Prisma.Color y
Prisma.LineWidth, respectivamente.
19
Para que la animación de cada fotograma de la figura resultante pueda apreciarse
detenidamente, se declara una pausa. También, para que los fotogramas no se
vayan acumulando en el plano cartesiano, se declara una condición la cual nos
indica que todos los fotogramas desaparecerán mientras no se llegue al numero de
ciclos indicados al principio.
8.- CONCLUSION.
En conclusión este trabajo fue muy importante en nuestra formación como futuros
ingenieros, ya que, gracias a este obtuvimos habilidades útiles sobre el uso y las funciones
de MATLAB, el cual es un software muy usado en universidades y centros de investigación
y desarrollo, al igual que en varios trabajos especializados, lo cual nos resultara de gran
20
ayuda para nuestra futura carrera académica y profesional, al igual de la adquisición de
varios conocimientos sobre el movimiento dentro de un plano, tanto en el ámbito
académico y laboral, como en la vida cotidiana, ya que este tema puede estar presente en
casi cualquier situación de nuestra vida diaria como en los mapas o sistemas GPS que
usamos para orientarnos, cuando movemos un mueble, subimos en un ascensor, al
momento de abrir y cerrar una puerta o incluso en nuestros rasgos faciales.
9.- BIBLIOGRAFÌA.
21