Mostrando las entradas con la etiqueta Gráficas 3D. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Gráficas 3D. Mostrar todas las entradas

martes, 8 de julio de 2014

Graficando un "toro" en MATLAB


Un toro es una superficie o sólido de revolución generado por la rotación de una circunferencia alrededor de un eje determinado.

Para nuestro caso utilizaremos la circunferencia de radio 1 y coordenadas de centro (1,2), cuya ecuación en coordenadas cartesianas sería:

$$(x-1)^2+(y-2)^2=1$$

La ecuación anterior está dada de forma implícita, pero para nuestros fines necesitamos la función de la circunferencia de forma explícita, lo cual nos conduce a despejar la variable dependiente "y" y expresar la circunferencia mediante las dos funciones que se muestran enseguida:

$$ \left\{ \begin{array}{cc} y_1=\sqrt{1-(x-1)^2}+2 \\ y_2=-\sqrt{1-(x-1)^2}+2 \end{array} \right. $$

Una vez comprendido lo anterior, podemos centrarnos en la función cylinder nativa de MATLAB que nos permite generar un sólido de revolución mediante la sintaxis:

>> cylinder(fun);

Donde "fun" es una función $f(x)$ y que sirve para establecer el perfil del sólido de revolución. Regresando a nuestro objetivo principal, enseguida se muestra el código necesario para generar la gráfica de un toro, utilizando las dos funciones mencionadas con anterioridad:

x=0:0.1:2;
f1=sqrt(1-(x-1).^2)+2;
f2=-sqrt(1-(x-1).^2)+2;
hold on
cylinder(f1);
cylinder(f2);
daspect([1 1 1]);
view(3);




viernes, 28 de marzo de 2014

Gráficas en tres dimensiones en MATLAB (Superficies, Curvas en el espacio, Planos)


Superficies

Utilizando matrices

Una manera de graficar superficies es utilizar matrices y representarlas mediante funciones disponibles en MATLAB. Para ello debe definirse previamente una malla bidimensional utilizando el comando meshgrid, cuyos argumentos son los intervalos de las variables independientes, por ejemplo suponga que quiere graficarse la siguiente función:

$$f(x,y)=x^2+y^2$$

[X,Y]=meshgrid(-5:0.1:5);
Z=X.^2+Y.^2;
surf(X,Y,Z);


De forma simbólica

Otra forma de obtener el mismo resultado que el caso anterior, es proceder de manera simbólica. Una de las funciones que permite esto es ezsurf, cuya forma es la siguiente:

ezsurf('x^2+y^2',[-5 5]);


Como puede observarse, se necesitan menos líneas de código bajo este método.


Curvas en el espacio

Para graficar curvas en el espacio se dispone del comando plot3, cuyos argumentos son las ecuaciones paramétricas de la curva, tómese como ejemplo la siguiente curva (helice circular):

$$ x(t)=cos(t) \,\,\,\,\,\,\,\,\, y(t)=sin(t)  \,\,\,\,\,\,\,\,\, z(t)=t $$

t=linspace(0,10*pi,200);
x=cos(t);
y=sin(t);
z=t;
plot3(x,y,z,'linewidth',2);

Puede utilizar la forma simbólica para obtener un resultado similar al anterior con el comando ezplot3, tal como sigue:

ezplot3('cos(t)','sin(t)','t',[0 10*pi]);


Planos

El siguiente ejemplo muestra como graficar un plano $z=constante$, para ello se utiliza el comando fill3.

hold on
ezsurf('x^2+y^2',[-5 5]);
k=20;
A=[-5 -5 k];
B=[-5 5 k];
C=[5 5 k];
D=[5 -5 k];
X=[A(1) B(1) C(1) D(1)];
Y=[A(2) B(2) C(2) D(2)];
Z=[A(3) B(3) C(3) D(3)];
fill3(X,Y,Z,[0.7 0.7 0.7]);
view(3);