Matlab - Superficies planas.

Filtrado por el usuario: JOSE JEREMIAS CABALLERO
Filtrado por el usuario 'JOSE JEREMIAS CABALLERO' (Eliminar fitro)
 
Vista:

Superficies planas.

Publicado por Daniel A (11 intervenciones) el 11/02/2013 22:57:38
Ayuda

Estoy haciendo un pequeño programa de gráficos de superficies que representan diferentes niveles del suelo, donde Z=0 es nivel de piso, Z=-0.5 seria una malla (hecha de lineas entrecruzadas) y Z=0.9 seria una capa de piedras.

Pero esto solo me funciona si el área es cuadrada, me gustaría saber como puedo hacerlo pero para diferentes dimensiones o mas bien en el caso de un rectángulo.
Ya que tengo problemas con las dimensiones de la matrices.

Gracias.

clear all
clc

L=4
A=4

%Malla
[x,y]=meshgrid(0:0.8:L,0:0.8:A);
[m,n]=size(x);
z=-0.5*ones(m,n);
plot3(x,y,z,'k',y,x,z,'k')

hold on

%Capa de piedra
[x,y]=meshgrid(0:0.07:L,0:0.07:4A);
[m,n]=size(x);
z=0.9*ones(m,n);
surf(x,y,z)
hold on

%Nicel de la tierra 0 metros
[x,y]=meshgrid(0:0.07:L,0:0.07:A);
[m,n]=size(x);
z=0*ones(m,n);
surf(x,y,z)

xlabel('Largo (m)')
ylabel('Ancho (m)')
zlabel('Profundida (m)')
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Superficies planas.

Publicado por Dave (1094 intervenciones) el 12/02/2013 00:23:34
Hola Daniel;

En tu caso, debería crear una malla irregular (triangulo o de la forma que desees), Matlab no debería tener problemas en interpolar o calcular los datos para una determinada superficie independientemente de si la malla fue creada con meshgrid o con dos bucles for anidados.

Espero que sea de alguna ayuda.

Saludos
Dave Correa
[email protected]
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Superficies planas.

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 12/02/2013 00:54:26
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
clear all
close all
clc
L=4
A=12
 
%Malla
 [x,y]=meshgrid(linspace(0,L,10),linspace(0,A,8));
 [m,n]=size(x);
 z=-0.5*ones(m,n);
 plot3(x,y,z,'k',y,x,z,'k')
 
hold on
%Capa de piedra
 [x,y]=meshgrid(linspace(0,L,18),linspace(0,4*A,16));
 [m,n]=size(x);
 z=0.9*ones(m,n);
 surf(x,y,z)
 hold on
 
%Nicel de la tierra 0 metros
 [x,y]=meshgrid(linspace(0,L,18),linspace(0,A,20));
 [m,n]=size(x);
 z=0*ones(m,n);
 surf(x,y,z)
 
xlabel('Largo (m)')
ylabel('Ancho (m)')
zlabel('Profundida (m)')



Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
[email protected]

http://matlabcaballero.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Superficies planas.

Publicado por Daniel A (11 intervenciones) el 12/02/2013 04:35:14
Gracias por la ayuda..

Ya pude solucionar varios problemas, ahora nada mas me falta ejecutar el siguiente código pero en un gráfico 3D donde puedo variar Z a mi gusto.. Es decir, donde yo pueda subir y bajar la malla a mi gusto.

Como unifico las variables para incluirla en un meshgrid y crear una superficie 3D?


clear all

L=10; %Largo
A=20; %Ancho

x=0:L;
y=[0 A];
plot([x(1) x(1)],y)
hold on
for i=2:length(x)
plot([x(i) x(i)],y)
end

y=0:A;
x=[0 L];
plot(x,[y(1) y(1)],'r')
for i=2:length(y)
plot(x,[y(i) y(i)],'r')
end
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Superficies planas.

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 12/02/2013 13:46:49
porque no usas la funcion plot3()
creo que es mas adecuado.
Quieres graficar curvas en el espacio, o graficar superficies en el espacio?.
1
2
3
4
5
6
7
[code]t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
xlabel('sin(t)')
ylabel('cos(t)')
zlabel('t')
grid on
axis square[/code]



Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
[email protected]

http://matlabcaballero.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Superficies planas.

Publicado por Daniel A (11 intervenciones) el 12/02/2013 17:54:48
Saludos


Si estuve probando, mi idea es hacer es una superficie 100 % plana, pero hecha con lineas horizontales y verticales que se adapte y cualquier valor de "X" y "Y" como en el código que puse anteriormente que crea una malla pero que es para 2D, lo que quiero es llevar ese mismo código pero adaptarlo a un plano 3D.

Ya logre crear la lineas paralelas pero en eje X, lo que tengo problemas es en crear la lineas en el eje Y sobre el mismo gráfico y completar la malla.


clear all

L=10; %Largo
A=20; %Ancho
x=0:L;
y=[0 A];
[X,Y]=meshgrid(x,y)
[m,n]=size(X)
Z=-0.5*ones(m,n);
plot3([X(1) X(1)],Y,Z)
hold on
for i=1:length(X)
plot3([X(i) X(i)],Y,Z)
end
hold on


Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar