0% encontró este documento útil (0 votos)
30 vistas26 páginas

Camino Proyecto

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
30 vistas26 páginas

Camino Proyecto

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

PROYECTO

COLABORATIVO
ALGEBRA LINEAL
PROFESOR:

ELIZALDE CAMINO, FERNANDO

INTEGRANTES DEL PROYECTO:

VIGIL BAÑUELOS RICHARD GAEL

VAZQUEZ NAVARRO DANIEL ORLANDO

ALVAREZ GRAJEDA FRANCISCO JAVIER

GRANADOS HERNANDEZ MARYCARMEN

CORONEL MEDINA FATIMA SOLEDAD


CONTENIDO
Introducción ............................................................................................................................................
1.
Objetivo................................................................................................................................................... 1.
Marco
Teórico….......................................................................................................................................2.
Vectores....................................................................................................................................................2.
Plano cartesiano y vértices ..................................................................................................................... 3.
Escalar: ................................................................................................................................................... 3.
Matriz ...................................................................................................................................................... 3.
Matriz de escalamiento.............................................................................................................................4.
Matriz escalar............................................................................................................................................4.
Matriz diagonal..........................................................................................................................................4.
Diagonal principal......................................................................................................................................4.
constante...................................................................................................................................................4.
Transformación de Matrices: ………………….......................................................................................... 5.
Matriz de Rotación.................................................................................................................................... 5.
Matriz de traslación .................................................................................................................................. 6.
transformaciones lineales…………………………………………………………………………………………6.
geometría tridimensional…………………………………………………………………………………………. 6.
operación de vectores……………………………………………………………………………………………. 6.
Justificación ...............................................................................................................................................7.
Desarrollo ..........................................................................................................................................8. - 15.
Imágenes .........................................................................................................................................16. - 20.
Conclusión............................................................................................................................................... 21.
Conclusión..............................................................................................................................................20
INTRODUCCIÓN

El álgebra lineal, una rama fundamental de las matemáticas, desempeña un papel crucial en
el campo de la gráfica 3D y la representación de objetos tridimensionales. En este proyecto,
exploramos la aplicación de conceptos de álgebra lineal en la manipulación de objetos en un
espacio tridimensional, utilizando MATLAB como plataforma de desarrollo. Nuestra tarea se
centra en comprender cómo se pueden realizar transformaciones clave, como rotaciones,
escalado y traslación, en un objeto 3D a través de matrices y vectores.

El objetivo de este proyecto es mostrar cómo las operaciones matriciales pueden utilizarse
para modificar las propiedades de un objeto 3D, permitiendo así su manipulación en tiempo
real. A lo largo de este trabajo, explicaremos en detalle las representaciones de objetos en el
espacio tridimensional, las transformaciones 3D básicas y la aplicación de matrices de
rotación, escalado y traslación.

OBJETIVO

Elaborar un proyecto colaborativo funcional, en donde denotes tus conocimientos y


aprendizajes esperados durante el curso, construyendo una figura-polígono en MATLAB
o
como en sus abreviaturas lo definen, “Laboratorio de matrices”, dicho programa que
permite a quien lo usa utilizar lenguaje de programación matricial.
Haciendo uso de lo aprendido, el estudiante deberá poner en práctica sus conocimientos
para definir en lenguaje de programación de matrices:
● Matriz de desplazamiento (Desplazar un cuerpo en un plano)
● Matriz de rotación (Girar el cuerpo sobre su mismo eje en un plano)

● Matriz de escalamiento (Aumentar o reducir el tamaño o extensión del cuerpo a través


del plano)
Además, las matrices tendrán que efectuarse al mismo tiempo tras ingresar datos en una
interfaz gráfica desarrollada por el estudiante.
1.

MARCO TEÓRICO

Por si con la palabra “álgebra” no nos parecía que abarcaba tantos conocimientos, existe
además una rama de las matemáticas llamada “álgebra lineal”. Que se convierte en otro
mundo de saberes. Se define por álgebra a la rama de las matemáticas que hace el
estudio y resolución de operaciones aritméticas que contienen signos, letras y números.
En el álgebra, las letras y los signos representan a otra entidad numérica, llamadas
variables. Es decir, que utiliza símbolos y letras en lugar de números para representar
sus procedimientos u operaciones aritméticas, así como para indicar la forma en que
deben ser utilizados esos símbolos y letras. Lineal, es un adjetivo que hace énfasis a lo
vinculado a una línea (una recta o una sucesión). Una función es lineal si se presenta
como:

f(x)=ax ; pero también puede aparecer como: f(x,y)=ax+byf(x,y)=ax+by El álgebra lineal


es una rama de las matemáticas modernas que se encarga de estudiar conceptos tales
como: matrices, vectores, espacios vectoriales y ecuaciones de tipo lineal, así como los
subtemas de estos, etcétera. En álgebra lineal, los conceptos son tan importantes como
los cálculos, esta ciencia introduce el pensamiento abstracto, debido a que una gran
parte de su campo tiene una interpretación geométrica, que puede ayudar precisamente
a visualizar esos conceptos. Para sintetizar, el álgebra lineal se caracteriza por estudiar
estructuras matemáticas en las que es posible tomar “sumas” entre diferentes elementos
de cierto conjunto y “multiplicar” tales elementos por números reales o complejos. dichos
conjuntos se conocerán como espacios vectoriales y sus elementos serán llamados
vectores.
Esta rama de las matemáticas es una herramienta indispensable para estudiantes de
carreras relacionadas con la física, ingeniería o arquitectura, entre otras.

Vectores:
En álgebra lineal, un vector es una entidad matemática que se utiliza para representar
magnitudes con dirección y magnitud. Los vectores son elementos fundamentales en este
campo de las matemáticas y se utilizan para modelar una variedad de situaciones en física,
geometría, informática y muchas otras disciplinas. Aquí tienes algunos conceptos clave
relacionados con los vectores:

Definición: Un vector se define como una entidad matemática que tiene magnitud (longitud) y
dirección. Los vectores se representan típicamente con flechas en diagramas o notación
matemática, como letras con una flecha sobre ellas, como "a →".

Componentes: Los vectores en un espacio n-dimensional se pueden descomponer en


componentes a lo largo de los ejes coordenados. Por ejemplo, en un espacio bidimensional
(plano), un vector se puede descomponer en dos componentes: una a lo largo del eje x
(horizontal) y otra a lo largo del eje y (vertical).

Operaciones vectoriales: En álgebra lineal, se pueden realizar varias operaciones con


vectores, que incluyen la suma de vectores, la multiplicación de un vector por un escalar y el
producto escalar. Estas operaciones son fundamentales para resolver problemas y realizar
cálculos en diversas aplicaciones.

Producto escalar: El producto escalar de dos vectores es una operación que resulta en un
número real. Se calcula multiplicando las magnitudes de los vectores y el coseno del ángulo
entre ellos. El producto escalar mide la proyección de un vector sobre otro y se usa en
cálculos de trabajo, proyecciones y ángulos.

Producto vectorial: El producto vectorial de dos vectores da como resultado otro vector que es
perpendicular al plano formado por los dos vectores originales. Se utiliza en aplicaciones
donde se necesita determinar la dirección y el sentido, como en cálculos de torque y momento
angular.

Norma de un vector: La norma de un vector (también conocida como magnitud o longitud) es


la medida de su longitud. En un espacio tridimensional, la norma de un vector (a, b, c) se
calcula como √(a^2 + b^2 + c^2).

Vectores unitarios: Son vectores con una norma de 1 y se utilizan para indicar direcciones. En
un espacio tridimensional, los vectores unitarios i, j y k se utilizan para representar las
direcciones de los ejes x, y y z, respectivamente.

Los vectores son herramientas poderosas para describir fenómenos físicos y matemáticos, y
son fundamentales en álgebra lineal y en muchas áreas de la ciencia y la ingeniería. Se
utilizan para describir el movimiento de partículas, campos vectoriales, sistemas de
ecuaciones lineales, y mucho más.
2.

Representación gráfica
La representación gráfica de vectores en álgebra lineal es una forma visual de mostrar
vectores en un sistema de coordenadas. Esto permite comprender mejor sus
propiedades y relaciones geométricas. Aquí hay algunas formas comunes de representar
gráficamente vectores:
Flechas o segmentos de línea: La representación gráfica más común de un vector es una
flecha o un segmento de línea que parte desde un punto de origen y se extiende hasta el
punto final. La longitud y la dirección de la flecha representan la magnitud y la dirección
del vector, respectivamente. Por ejemplo, un vector a se representa como "→a" y se
dibuja como una flecha desde un punto A a un punto B.

Componentes en un sistema de coordenadas: En un sistema de coordenadas, un vector


se puede representar mediante sus componentes en cada eje. En un sistema
bidimensional, un vector se representa como (a, b), donde "a" es la componente a lo
largo del eje x y "b" es la componente a lo largo del eje y. En un sistema tridimensional,
se usan tres componentes (a, b, c) para representar el vector.

Coordenadas polares: Algunas veces, los vectores se representan en coordenadas


polares, donde se utiliza la magnitud (longitud del vector) y el ángulo con respecto a un
eje de referencia. La magnitud se representa como "r" y el ángulo como "θ".

Diagramas vectoriales: En problemas de física o ingeniería, se utilizan diagramas


vectoriales para representar varios vectores en un plano. En estos diagramas, se
muestran las magnitudes y direcciones de varios vectores para analizar sistemas
complejos.

Triángulos o paralelogramos: En la suma o resta de vectores, se pueden usar triángulos


o paralelogramos para visualizar el resultado. Por ejemplo, para sumar dos vectores, se
puede dibujar un triángulo con los dos vectores como lados adyacentes y el vector
resultante como la tercera línea. Para restar dos vectores, se puede usar un
paralelogramo.

Escalas: En algunos casos, es útil utilizar una escala en la representación gráfica para
indicar la magnitud de los vectores. Por ejemplo, una flecha con una escala de 1 cm por
unidad podría indicar que un vector tiene una magnitud de 5 unidades.
La representación gráfica de vectores es fundamental para comprender conceptos en
álgebra lineal y resolver problemas en física, ingeniería y matemáticas. Permite visualizar
y analizar relaciones vectoriales, realizar cálculos geométricos y comprender fenómenos
físicos que involucran magnitudes direccionales.

Transformación compuesta
La transformación compuesta en álgebra lineal se refiere a la combinación de dos o más
transformaciones lineales aplicadas sucesivamente a un vector o conjunto de vectores.
Esto implica tomar el resultado de una transformación y usarlo como entrada para otra
transformación. En otras palabras, es una secuencia de aplicaciones de
transformaciones lineales.

Transformación lineal
Una transformación lineal, en el contexto del álgebra lineal, es una función que asigna un
vector de un espacio vectorial a otro vector en el mismo espacio, de tal manera que
cumple con dos propiedades fundamentales: la preservación de la suma y la
preservación de la multiplicación por escalar. En otras palabras, una transformación lineal
conserva las operaciones de suma y multiplicación por escalar en el espacio vectorial.

Formalmente, una función T se considera una transformación lineal si cumple con las
siguientes dos propiedades:

Preservación de la suma: Para cualesquiera dos vectores u y v en el espacio vectorial V,


la transformación lineal T satisface T(u + v) = T(u) + T(v).

Preservación de la multiplicación por escalar: Para cualquier vector u en el espacio


vectorial V y cualquier escalar c, la transformación lineal T cumple con T(cu) = cT(u).

Estas propiedades implican que la transformación lineal T mantiene la estructura vectorial


del espacio. Es decir, si aplicas T a una combinación lineal de vectores, obtendrás la
misma combinación lineal de los resultados.

Las transformaciones lineales son fundamentales en álgebra lineal y tienen una amplia
gama de aplicaciones en matemáticas, física, informática, ingeniería y otras disciplinas.
Algunos ejemplos comunes de transformaciones lineales incluyen rotaciones,
proyecciones, dilataciones, transformaciones lineales representadas por matrices y
aplicaciones lineales en sistemas de ecuaciones lineales. Estas transformaciones son
esenciales para comprender y resolver problemas que involucran vectores y sistemas de
ecuaciones lineales

Escalado lineal
el escalado lineal se refiere a una transformación que cambia la magnitud de un vector
sin afectar su dirección. Esto se logra multiplicando un vector por un escalar (un número
real o complejo). Aquí tienes una explicación más detallada:

Supongamos que tienes un vector "v" en un espacio vectorial y un escalar "k" (un número
real o complejo). El escalado lineal de "v" por "k" se denota como "kv" y se define como:

kv = (k * v)

En esta expresión, "kv" representa un nuevo vector que tiene la misma dirección que "v"
pero una magnitud (longitud) k veces mayor si "k" es positivo o k veces menor si "k" es
negativo.

El escalado lineal se utiliza en diversas aplicaciones, como:

Cambio de magnitud de vectores: Si tienes un vector que representa una cantidad, como
la velocidad, el escalado lineal puede usarse para cambiar esa cantidad. Por ejemplo, si
tienes un vector de velocidad y multiplicas por 2, obtendrás el doble de velocidad en la
misma dirección.

Normalización de vectores: Para convertir un vector en un "vector unitario" (un vector con
magnitud igual a 1) en la misma dirección, puedes escalarlo dividiéndolo por su
magnitud.

Transformaciones geométricas: El escalado lineal se utiliza en geometría para cambiar el


tamaño de figuras geométricas manteniendo su forma y proporciones.

Ajuste de contraste en imágenes: En procesamiento de imágenes, el escalado lineal se


utiliza para ajustar el contraste cambiando la magnitud de los valores de píxeles en una
imagen.

En resumen, el escalado lineal es una operación que cambia la magnitud de un vector o


cantidad, manteniendo su dirección. Es una operación fundamental en álgebra lineal y
tiene diversas aplicaciones en matemáticas y otras disciplinas

Rotación lineal
La rotación lineal es una transformación que se utiliza para cambiar la orientación de un
objeto o un sistema de coordenadas alrededor de un punto fijo llamado "centro de
rotación" o "origen de la rotación". Esta transformación preserva las distancias entre los
puntos y mantiene el punto de rotación fijo. En el contexto del álgebra lineal, la rotación
lineal se puede describir mediante matrices de rotación.

Traslación lineal
La traslación lineal es una transformación que desplaza un objeto o un sistema de
coordenadas en una dirección específica en el espacio, manteniendo inalterada su
orientación. En el contexto del álgebra lineal, la traslación se realiza mediante el uso de
vectores de traslación.

La idea básica de una traslación lineal es mover todos los puntos o vectores de un
espacio en una dirección constante. Supongamos que tienes un vector de traslación t =
[tx, ty] en un espacio bidimensional. Para trasladar un punto o un vector v = [x, y],
simplemente sumas el vector de traslación t al punto v. El resultado de la traslación se
denota como v' y se calcula de la siguiente manera:
v' = v + t
v' = [x + tx, y + ty]

En otras palabras, para trasladar el punto v en la dirección especificada por el vector de


traslación t, simplemente sumas las componentes de t a las componentes de v.

La traslación lineal se usa comúnmente en geometría y gráficos computacionales para


mover objetos, cambiar coordenadas de referencia y ajustar la posición de puntos o
figuras en un plano o espacio. Puede ser útil para simular el movimiento de objetos en un
sistema de coordenadas, cambiar la posición de una imagen en una pantalla, entre otros
usos.

Es importante destacar que la traslación lineal no altera las propiedades fundamentales


de los objetos, como su forma o su orientación. Solo cambia su posición en el espacio.
Por lo tanto, la traslación es una transformación que conserva la linealidad y las
propiedades geométricas de los objetos trasladados.

Matriz
En álgebra lineal, una matriz es una estructura de datos bidimensional compuesta por
filas y columnas, en la que cada elemento se ubica en una posición específica dentro de
la matriz. Las matrices se utilizan para representar y resolver una variedad de problemas
matemáticos y aplicaciones en diversas disciplinas, como física, estadísticas, informática
y más.

Formalmente, una matriz se representa como una disposición rectangular de elementos,


y se denota generalmente de la siguiente manera:

A = [a_ij]

Donde:
"A" es el nombre de la matriz.
"a_ij" representa el elemento ubicado en la fila "i" y la columna "j". En otras palabras, a_ij
es el elemento en la fila "i" y la columna "j" de la matriz.
Las dimensiones de una matriz se especifican mediante el número de filas y columnas.
Por ejemplo, una matriz con "m" filas y "n" columnas se llama una matriz de "m x n". Si
todas las filas tienen el mismo número de elementos y todas las columnas tienen el
mismo número de elementos, se dice que la matriz es "cuadrada"

6.

JUSTIFICACION
En el marco de nuestro curso de Álgebra Lineal, propuesto por el profesor Fernando
Elizalde Camino, se nos presentó la oportunidad de aplicar y demostrar nuestros
conocimientos a través de un proyecto colaborativo. El propósito de este proyecto es
doble: en primer lugar, se busca externar y demostrar nuestros conocimientos adquiridos
en el curso. En segundo lugar, se busca familiarizar a los estudiantes con el álgebra
lineal, un objetivo fundamental del programa de estudios.

Para llevar a cabo este proyecto, hemos utilizado el programa MATLAB, conocido por su
lenguaje matricial de cuarta generación, que nos brinda una plataforma sólida para
trabajar con conceptos matemáticos y aplicaciones prácticas. Este entorno nos permite
aplicar directamente conceptos clave de álgebra lineal, como vectores, matrices y
transformaciones, en un contexto práctico y visual.
La creación de una figura 3D interactiva en MATLAB no solo es una demostración de
nuestros conocimientos en álgebra lineal, sino que también es un medio efectivo para
desarrollar una sólida intuición espacial, una habilidad esencial en nuestra futura carrera
en ingeniería. Además, esta iniciativa nos brinda la oportunidad de mejorar nuestras
habilidades de programación, lo que se alinea con los requisitos del curso y amplía
nuestras capacidades técnicas.

En un mundo en constante evolución, la comprensión del álgebra lineal y la capacidad


para trabajar con objetos 3D se vuelven cada vez más relevantes. Este proyecto no solo
cumple con los objetivos del curso y el propósito de demostrar nuestros conocimientos,
sino que también nos prepara para enfrentar con éxito los desafíos tecnológicos futuros.

En resumen, la creación de esta figura 3D interactiva en MATLAB con aplicaciones de


álgebra lineal se justifica tanto como una demostración de conocimientos como un medio
para familiarizar a los estudiantes con los conceptos clave del curso. Nos proporciona
una oportunidad para aplicar teoría en un entorno práctico, fortalecer nuestra intuición
espacial y mejorar nuestras habilidades de programación, todo lo cual es esencial para
nuestra futura carrera en ingeniería y se alinea con el propósito del proyecto colaborativo
propuesto por el profesor. 7.
DESARROLLO
El siguiente código fue escrito usando el programa Matlab 2021 b para uso académico;
del cual cabe destacar el uso de las funciones básicas para la representación gráfica de
la unión de vértices en un plano (Line), así como opciones de estilo (Color, LineStyle y
LineWitdh). Así como “for” e “if” para las animaciones de la figura.

function Octa
% Crear la figura y los ejes
fig = figure;
ax = axes('XLim',[-8 8],'YLim',[-8 8],'ZLim',[-8 8]);
view(3);
grid on;
hold on;
%Esta parte del código define los vértices del octaedro en un espacio tridimensional.
%Cada fila de la matriz vértices representa las coordenadas (x, y, z) de un vértice.
%Esto se relaciona con el concepto de vectores en álgebra lineal, donde cada vértice es un
vector desde el origen hasta un punto en el espacio.

% Define las coordenadas de los vértices del octaedro


vertices = [0, 0, 1;
1, 0, 0;
0, 1, 0;
-1, 0, 0;
0, -1, 0;
0, 0, -1];
%Esta parte del código define las caras del octaedro. % Cada fila de la matriz faces
representa una cara del octaedro y contiene los índices de los vértices que forman esa cara.
%Esto se relaciona con el concepto de combinaciones lineales en álgebra lineal, donde cada
cara es una combinación de los vértices.
% Define las caras del octaedro
faces = [1, 2, 3;
1, 3, 4;
1, 4, 5;
1, 5, 2;
6, 3, 2;
6, 4, 3;
6, 5, 4;
6, 2, 5];
8.

% Dibuja el octaedro en 3D
h = patch('Vertices', vertices, 'Faces', faces, 'FaceColor', 'g');
%Esta parte del código dibuja el octaedro en 3D utilizando las coordenadas de los vértices
y las definiciones de las caras. La función patch crea un parche gráfico que representa el
octaedro. Esto se relaciona con el concepto de representación gráfica en álgebra lineal y
geometría, donde los objetos tridimensionales se pueden representar visualmente en un
espacio bidimensional.

% Agregar los controles de usuario


uicontrol('Style','pushbutton','String','Reiniciar','Position',[20 120 120
20],'Callback',@(src,event) resetOcta(h, vertices));
uicontrol('Style','edit','Position',[20 400 70 20],'Callback',@(src,event) setScale(src));
uicontrol('Style','pushbutton','String','Cambiar tamaño','Position',[20 380 120
20],'Callback',@(src,event) changeSize(h));
uicontrol('Style','edit','Position',[20 360 70 20],'Callback',@(src,event) setX(src));
uicontrol('Style','pushbutton','String','Desplazamiento X','Position',[20 340 120
20],'Callback',@(src,event) moveX(h));
uicontrol('Style','edit','Position',[20 320 70 20],'Callback',@(src,event) setY(src));
uicontrol('Style','pushbutton','String','Desplazamiento Y','Position',[20 300 120
20],'Callback',@(src,event) moveY(h));
uicontrol('Style','edit','Position',[20 280 70 20],'Callback',@(src,event) setZ(src));
uicontrol('Style','pushbutton','String','Desplazamiento Z','Position',[20 260 120
20],'Callback',@(src,event) moveZ(h));
uicontrol('Style','edit','Position',[20 240 70 20],'Callback',@(src,event) setRotX(src));
uicontrol('Style','pushbutton','String','Rotación X','Position',[20 220 120
20],'Callback',@(src,event) rotateX(h));
uicontrol('Style','edit','Position',[20 200 70 20],'Callback',@(src,event) setRotY(src));
uicontrol('Style','pushbutton','String','Rotación Y','Position',[20 180 120
20],'Callback',@(src,event) rotateY(h));
uicontrol('Style','edit','Position',[20 160 70 20],'Callback',@(src,event) setRotZ(src));
uicontrol('Style','pushbutton','String','Rotación Z','Position',[20 140 120
20],'Callback',@(src,event) rotateZ(h));
uicontrol('Style','pushbutton','String','Combinación','Position',[20 60 120
20],'Callback',@(src,event) combination(h));

% Función para establecer la escala


function setScale(src)
global scale_factor;
scale_factor = eval(get(src, 'String'));
end
%Esta función realiza un escalado lineal del octaedro.
% En álgebra lineal, un escalado es una transformación lineal que altera el tamaño de un
objeto.
9.
% En este caso, el objeto es el octaedro y el tamaño se cambia por un factor de escala
especificado.
% Función para cambiar el tamaño
function changeSize(h)
global scale_factor;
num_steps = 100; % Aumenta este valor para una animación más fluida
for i = 1:num_steps
pause(0.001); % Disminuye este valor para una animación más rápida
% Verificar si el octaedro se moverá fuera de los límites
if max([Link](:) * (1 + (scale_factor-1)/num_steps)) <= 8 && min([Link](:) * (1 +
(scale_factor-1)/num_steps)) >= -8
[Link] = [Link] * (1 + (scale_factor-1)/num_steps); %Escalado lineal.
Multiplica cada vértice del octaedro por un factor de escala para cambiar su tamaño. Este
factor de escala es (1 + (scale_factor-1)/num_steps), que se calcula para que el tamaño final
del octaedro sea el deseado después de num_steps iteraciones.
end
drawnow;
end
end
%Es importante tener en cuenta que esta transformación de escalado se realiza con respecto
al origen.
%Esto significa que el octaedro se hace más grande o más pequeño manteniendo su forma y
orientación, pero su posición puede cambiar si no está centrado en el origen. En este código,
no se realiza ninguna operación para trasladar el octaedro al origen antes del escalado y
luego trasladarlo de vuelta a su posición original después del escalado. Esto se debe a que el
octaedro ya está centrado en el origen en este caso. Si el octaedro no estuviera centrado en
el origen, se deberían realizar estas operaciones adicionales para asegurar que el escalado
no cambie su posición. Esto se conoce como transformación compuesta.
% Función para establecer el desplazamiento en X
function setX(src)
global x_move;
x_move = str2double(get(src, 'String'));
end
% Función para establecer el desplazamiento en Y
function setY(src)
global y_move;
y_move = str2double(get(src, 'String'));
end
% Función para establecer el desplazamiento en Z
function setZ(src)
global z_move; 10.
z_move = str2double(get(src, 'String'));
end

%Estas funciones realizan una traslación lineal a lo largo de los ejes X, Y y Z


respectivamente.
%En álgebra lineal, una traslación es una transformación lineal que mueve todos los puntos
de un espacio una distancia constante en una dirección específica.
%En este caso, los puntos son los vértices del octaedro y la dirección es a lo largo de los ejes
X, Y o Z.

% Función para mover el octaedro en X


function moveX(h)
global x_move;
num_steps = 100; % Aumenta este valor para una animación más fluida
for i = 1:num_steps
pause(0.001); % Disminuye este valor para una animación más rápida
% Verificar si el octaedro se moverá fuera de los límites
if max([Link](:,1) + x_move/num_steps) <= 8 && min([Link](:,1) +
x_move/num_steps) >= -8
[Link](:,1) = [Link](:,1) + x_move/num_steps;% Traslación lineal. Suma una
cantidad constante a la coordenada x de cada vértice del octaedro para moverlo a lo largo del
eje X. Esta cantidad es x_move/num_steps, que se calcula para que la posición final del
octaedro sea la deseada después de num_steps iteraciones.
end
drawnow;
end
end
%Es importante tener en cuenta que esta transformación de traslación se realiza con respecto
al origen. Esto significa que el octaedro se mueve a lo largo del eje X sin cambiar su tamaño,
forma u orientación. En este código, no se realiza ninguna operación para trasladar el
octaedro al origen antes de la traslación y luego trasladarlo de vuelta a su posición original
después de la traslación. Esto se debe a que el octaedro ya está centrado en el origen en este
caso. Si el octaedro no estuviera centrado en el origen, se deberían realizar estas
operaciones adicionales para asegurar que la traslación no cambie su posición. Esto se
conoce como transformación compuesta.

% Función para mover el octaedro en Y


function moveY(h)
global y_move;
num_steps = 100; % Aumenta este valor para una animación más fluida
for i = 1:num_steps
pause(0.001); % Disminuye este valor para una animación más rápida
% Verificar si el octaedro se moverá fuera de los límites 11.
if max([Link](:,2) + y_move/num_steps) <= 8 && min([Link](:,2) +
y_move/num_steps) >= -8
[Link](:,2) = [Link](:,2) + y_move/num_steps;%traslación lineal. Suma una
cantidad constante a la coordenada y de cada vértice del octaedro para moverlo a lo largo del
eje Y. Esta cantidad es y_move/num_steps, que se calcula para que la posición final del
octaedro sea la deseada después de num_steps iteraciones.
end
drawnow;
end
end
%Es importante tener en cuenta que esta transformación de traslación se realiza con respecto
al origen. Esto significa que el octaedro se mueve a lo largo del eje Y sin cambiar su tamaño,
forma u orientación. En este código, no se realiza ninguna operación para trasladar el
octaedro al origen antes de la traslación y luego trasladarlo de vuelta a su posición original
después de la traslación. Esto se debe a que el octaedro ya está centrado en el origen en este
caso. Si el octaedro no estuviera centrado en el origen, se deberían realizar estas
operaciones adicionales para asegurar que la traslación no cambie su posición. Esto se
conoce como transformación compuesta.

% Función para mover el octaedro en Z


function moveZ(h)
global z_move;
num_steps = 100; % Aumenta este valor para una animación más fluida
for i = 1:num_steps
pause(0.001); % Disminuye este valor para una animación más rápida
% Verificar si el octaedro se moverá fuera de los límites
if max([Link](:,3) + z_move/num_steps) <= 8 && min([Link](:,3) +
z_move/num_steps) >= -8
[Link](:,3) = [Link](:,3) + z_move/num_steps;%traslación lineal. Suma una
cantidad constante a la coordenada y de cada vértice del octaedro para moverlo a lo largo del
eje Z. Esta cantidad es z_move/num_steps, que se calcula para que la posición final del
octaedro sea la deseada después de num_steps iteraciones.
end
drawnow;
end
end

%Es importante tener en cuenta que esta transformación de traslación se realiza con respecto
al origen. Esto significa que el octaedro se mueve a lo largo del eje Z sin cambiar su tamaño,
forma u orientación. En este código, no se realiza ninguna operación para trasladar el
octaedro al origen antes de la traslación y luego trasladarlo de vuelta a su posición original
después de la traslación. Esto se debe a que el octaedro ya está centrado en el origen en este
caso. Si el octaedro no estuviera centrado en el origen, se deberían realizar 12. estas
operaciones adicionales para asegurar que la traslación no cambie su posición. Esto se
conoce como transformación compuesta.
% Función para establecer la rotación en X
function setRotX(src)
global rot_x;
rot_x = str2double(get(src, 'String'));
end
% Función para establecer la rotación en Y
function setRotY(src)
global rot_y;
rot_y = str2double(get(src, 'String'));
end
% Función para establecer la rotación en Z
function setRotZ(src)
global rot_z;
rot_z = str2double(get(src, 'String'));
end
% Estas funciones realizan una rotación lineal alrededor de los ejes X, Y y Z respectivamente.
%En álgebra lineal, una rotación es una transformación lineal que mantiene un punto fijo
llamado centro de rotación
% y mantiene una distancia constante entre el punto y el centro de rotación. En este caso, el
centro de rotación es el centro del octaedro.
%La rotación se realiza en sentido antihorario si el ángulo de rotación es positivo, y en sentido
horario si el ángulo de rotación es negativo.
% Función para rotar el octaedro en X
function rotateX(h)
global rot_x;
num_steps = 100; % Aumenta este valor para una animación más fluida
center = mean([Link]); % Calcular el centro del octaedro
for i = 1:num_steps
pause(0.001); % Disminuye este valor para una animación más rápida
%rotación lineal alrededor del eje X.
[Link] = [Link] - center; % Mover el octaedro al origen
rotate(h,[1 0 0],rot_x/num_steps);%Rotación lineal. Esta función de MATLAB rota el
objeto h alrededor del eje X por un ángulo rot_x/num_steps.
[Link] = [Link] + center; % Mover el octaedro de vuelta a su posición original
drawnow;
end
end
%Es importante tener en cuenta que antes de aplicar la rotación, todos los vértices 13.
del octaedro se trasladan al origen (se resta el centro del octaedro a cada vértice),
luego se aplica la rotación, y finalmente se trasladan de vuelta a su posición original (se suma
el centro del octaedro a cada vértice). Esto se hace porque las rotaciones son siempre
alrededor del origen.

% Función para rotar el octaedro en Y


function rotateY(h)
global rot_y;
num_steps = 100; % Aumenta este valor para una animación más fluida
center = mean([Link]); % Calcular el centro del octaedro
for i = 1:num_steps
pause(0.001); % Disminuye este valor para una animación más rápida
%rotación lineal alrededor del eje Y.
[Link] = [Link] - center; % Mover el octaedro al origen
rotate(h,[0 1 0],rot_y/num_steps);%Rotación lineal. Esta función de MATLAB rota el
objeto h alrededor del eje Y por un ángulo rot_y/num_steps.
[Link] = [Link] + center; % Mover el octaedro de vuelta a su posición original
drawnow;
end
end
%Es importante tener en cuenta que antes de aplicar la rotación, todos los vértices del
octaedro se trasladan al origen (se resta el centro del octaedro a cada vértice), luego se aplica
la rotación, y finalmente se trasladan de vuelta a su posición original (se suma el centro del
octaedro a cada vértice). Esto se hace porque las rotaciones son siempre alrededor del
origen.
% Función para rotar el octaedro en Z
function rotateZ(h)
global rot_z;
num_steps = 100; % Aumenta este valor para una animación más fluida
center = mean([Link]); % Calcular el centro del octaedro
for i = 1:num_steps
pause(0.001); % Disminuye este valor para una animación más rápida
%rotación lineal alrededor del eje Z.
[Link] = [Link] - center; % Mover el octaedro al origen
rotate(h,[0 0 1],rot_z/num_steps);%Rotación lineal. Esta función de MATLAB rota el
objeto h alrededor del eje Z por un ángulo rot_y/num_steps.
[Link] = [Link] + center; % Mover el octaedro de vuelta a su posición original
drawnow;
end
end
%Es importante tener en cuenta que antes de aplicar la rotación, todos los vértices del
octaedro se trasladan al origen (se resta el centro del octaedro a cada vértice), luego se aplica
la rotación, y finalmente se trasladan de vuelta a su posición original (se suma el centro14. del
octaedro a cada vértice). Esto se hace porque las rotaciones son siempre alrededor del
origen.

% Función para realizar todas las animaciones juntas


function combination(h)
global scale_factor x_move y_move z_move rot_x rot_y rot_z;
num_steps = 100; % Aumenta este valor para una animación más fluida
for i = 1:num_steps
pause(0.001); % Disminuye este valor para una animación más rápida
if ~isnan(scale_factor)
[Link] = [Link] * (1 + (scale_factor-1)/num_steps);%Escalamiento lineal
end
if ~isnan(x_move)
[Link](:,1) = [Link](:,1) + x_move/num_steps;%Traslación lineal
end
if ~isnan(y_move)
[Link](:,2) = [Link](:,2) + y_move/num_steps;%Traslación lineal
end
if ~isnan(z_move)
[Link](:,3) = [Link](:,3) + z_move/num_steps;%Traslación lineal
end
if ~isnan(rot_x)
rotate(h,[1 0 0],rot_x/num_steps);%Rotación lineal
end
if ~isnan(rot_y)
rotate(h,[0 1 0],rot_y/num_steps);%Rotación lineal
end
if ~isnan(rot_z)
rotate(h,[0 0 1],rot_z/num_steps);%Rotación lineal
end
drawnow;
end
end
% Función para reiniciar el octaedro
function resetOcta(h, vertices)
[Link] = vertices;
end
end

15.

IMÁGENES
Octaedro original

Desplazamiento X: 5 unidades

Desplazamiento Y: 6 unidades
16.

desplazamiento Z: 7 unidades

17.
desplazamiento Z: 7 unidades

Rotación en X: 55 grados

18.
Rotación Y: 70 grados

Rotación Z: 300 grados

19.
Cambio de tamaño: 2 unidades, Desplazamiento X: 3 unidades, Rotación 70 grados

Cambio de tamaño: +2unidades, Desplazamiento Y: 2 unidades, Rotación Y: 45 grados

20.

CONCLUSIÓN
Al terminar la figura en la plataforma MATLAB, pudimos observar que el álgebra tiene
funciones varias en nuestras vidas, aunque no nos demos cuenta, en este proyecto la utilizamos
para crear una figura a base de lenguaje algebraico con matrices y vectores.
Aunque claro que con este proyecto abarcamos una mínima parte de lo que es la programación y
el álgebra, fue interesante investigar sobre la combinación de un lenguaje de programación con
lenguaje algebraico, lo que nos puso a imaginar la inmensidad de cosas que podríamos llegar a
realizar usando otras plataformas de programación, ya que MATLAB es una de las más básicas
de este estilo. en Matlab pudimos comprender en cierta medida las implicaciones que posee el
álgebra lineal para la elaboración de todo tipo de programas que usamos. Es importante recalcar
que para realizar el código se necesitó de
mucha investigación en temas tanto de matrices como de programación y la parte interesante fue
asociarlas en un sistema funcional.
Resulta evidente que el código presentado en este informe es de carácter simple en cuestión del
aprovechamiento de las herramientas que nos da el programa y que existe mucha ventana para la
mejora del mismo, como es el caso de la escalar que no toma valores menores a 1 y que no es
capaz de partir de un punto sino que siempre comienza en el origen, sin embargo lo que se
presenta, interactivamente en la interfaz proporcionada es una aplicación funcional y bastante
interesante una vez que se comprende lo que está pasando en la pantalla. No cabe duda la
relevancia que tiene la programación hoy en día y que si bien se considera a Matlab como uno
de los programas más sencillos de utilizar tener el conocimiento básico de cómo se elabora un
código es algo que vale la pena aprender.
Como lo anterior mencionado, se tuvo que realizar una previa investigación para saber cómo
funciona este programa y que parte de lo aprendido en álgebra era lo que nos iba a ayudar a
culminar con este pequeño pero complicado (a su manera) proyecto. Las bases para esta figura
fueron las matrices y los vectores, ya que la figura necesitaba un campo y moverse a través de
este mismo, así como cambiar su tamaño y girar en varios ángulos.
Se podría decir que fue un proyecto bastante completo, ya que buscamos por nuestra cuenta,
aplicamos lo aprendido en las clases previas y todo eso se plasmó en una figura.

21.
BIBLIOGRAFÍA
Curso Básico de GUI MATLAB. Introducción al entorno de desarrollo. (2015, 23

enero). YouTube. Recuperado 30 de abril de 2022, de

[Link]

v=S4xR2DjedG8&list=PLjApqg2Zsw31HHJONnV 9IQkxTQfUrW_9F

PRADO, J. (2005). Introduction à MATLAB. Mathématiques.

[Link]

Otto, S. (2001). MATLAB Guide MATLAB Guide by Desmond J Higham &

Nicholas J Higham. MSOR Connections, 1(1), 16.

[Link] MATLAB App Designer. (s. f.).

MATLAB & Simulink. Recuperado 30 de abril de 2022, de

[Link]

simulink. (s. f.). Matrices y arreglos - MATLAB & Simulink - MathWorks América

Latina. Matlabworks. Recuperado 20 de marzo de 2022, de

[Link]

simulink. (s. f.-a). Gráfica de lÕneas en 2D - MATLAB plot - MathWorks

América Latina. Matlabworks. Recuperado 20 de marzo de 2022, de

[Link]

22.

También podría gustarte