回 帖 发 新 帖 刷新版面

主题:求救,matlab形貌仿真问题!

看了程序以后,对下面的语句不是很清楚,
w=2;
vx=8-0.6*t1;
vy=6+0.5*t1;
vz=0.1-0.001*t1;
for i=1:11
X=x*cos(w*t1(i))-y*sin(w*t1(i))+vx(i)*t1(i);
Y=x*sin(w*t1(i))+y*cos(w*t1(i))+vy(i)*t1(i);
Z=z+vz(i)*t1(i);
你应该是给那个正态分布曲面一个运动轨迹(具体的轨迹我不是很清楚),不过好象在运动完成以后,并没有产生叠加,希望你能解释一下。。。谢谢,还有我贴了一张运动轨迹图片在上面附件里面,你看了就会很清楚了。。。麻烦你了:)

回复列表 (共6个回复)

沙发

[x,y]=meshgrid(-40:1:40);
r=sqrt(x.^2+y.^2)+eps;
%creat  Gass function
z=(25/118)*exp(-59/10000*r.^2)/pi^(1/2)*59^(1/2);
 
%draw the static Gass function
mesh(x,y,z);
colormap(cool);
xlabel('X');
ylabel('Y');
zlabel('Z');
hold on

%graphic moving and rotation
t1=linspace(0,3*pi,11);

w=2;
vx=8-0.6*t1;
vy=6+0.5*t1;
vz=0.1-0.001*t1;
for i=1:11
X=x*cos(w*t1(i))-y*sin(w*t1(i))+vx(i)*t1(i);
Y=x*sin(w*t1(i))+y*cos(w*t1(i))+vy(i)*t1(i);
Z=z+vz(i)*t1(i);
mesh(X,Y,Z)
end
grid
hold off
仅供参考
具体平移和旋转函数自己输入

板凳

看了程序以后,对下面的语句不是很清楚,
w=2;
vx=8-0.6*t1;
vy=6+0.5*t1;
vz=0.1-0.001*t1;
for i=1:11
X=x*cos(w*t1(i))-y*sin(w*t1(i))+vx(i)*t1(i);
Y=x*sin(w*t1(i))+y*cos(w*t1(i))+vy(i)*t1(i);
Z=z+vz(i)*t1(i);
你应该是给那个正态分布曲面一个运动轨迹(具体的轨迹我不是很清楚),不过好象在运动完成以后,并没有产生叠加,希望你能解释一下。。。谢谢,还有我贴了一张运动轨迹图片在上面附件里面,你看了就会很清楚了。。。麻烦你了:)

3 楼

[x,y]=meshgrid(-12:1:12);
r=sqrt(x.^2+y.^2)+eps;
%creat  Gass function
z=(25/118)*exp(-59/10000*r.^2)/pi^(1/2)*59^(1/2);
 
%draw the static Gass function
z0=9;
z=z+z0;
figure(1)
mesh(x,y,z);
colormap(cool);
xlabel('X');
ylabel('Y');
zlabel('Z');

figure(2)
hold on
%graphic moving and rotation
t=linspace(0,2*pi,588);
%t=ones(81,1)*t1;
w=2;
R=sqrt(y.^2+z.^2);
for i=1:588
X=x+(9+1.2*t(i))*t(i);
Y=R.*sin(w*t(i));
Z=R.*cos(w*t(i));
mesh(X,Y,Z);
end
axis equal
hold off

4 楼

%graphic moving and rotation
t1=linspace(0,3*pi,11);

vx=8-0.6*t1;
vy=6+0.5*t1;

for i=1:11
X=vx(i)*t1(i);
Y=vy(i)*t1(i);
Z=z;
mesh(X,Y,Z)
end
grid
hold off

我把下半部分的程序该成这样,运行时出现
Warning: Matrix dimensions must agree, not rendering mesh.这是怎么回事,,我想把z方向的速度去掉,发现这么改不行,如果要求这个曲面只在XOY平面内运动,并把运动完的各个曲面的轮廓叠加起来该怎么弄?  

5 楼

想给30分,发现不让,一个主题最多只能给到50分,  你太强了!非常感谢。。。

6 楼

[x,y]=meshgrid(-30:1:30);
r=sqrt(x.^2+y.^2)+eps;
%creat  Gass function
z=(25/118)*exp(-59/10000*r.^2)/pi^(1/2)*59^(1/2);
 
%draw the static Gass function
z0=100;
z=z+z0;
figure(1)
mesh(x,y,z);
colormap(cool);
xlabel('X');
ylabel('Y');
zlabel('Z');

figure(2)
hold on
%graphic moving and rotation
t=linspace(0,120,588);
%t=ones(81,1)*t1;
w=2*pi;
R=sqrt(y.^2+z.^2);
for i=1:588
F=@(t)(5+0.2*t);
X=x+quad(F,0,t(i));
Y=R.*sin(w*t(i));
Z=R.*cos(w*t(i));
mesh(X,Y,Z);
end
axis equal  
hold off
运行时出现Warning: Minimum step size reached; singularity possible.是什么意思? 而且得到的图形不是一条螺旋轨迹,而是很多条,很奇怪。。。怎么能控制螺旋轨迹的导程,使第一圈和第二圈产生叠加,就是要把叠加部分的z坐标值相加,并能将叠加后的轮廓绘制出来。。。之所以要使它有叠加部分是因为这样得到的轮廓才能相对平滑,不至于产生波浪形。。。这个过程类似纺纱,一圈一圈最后缠成一个管状的实体,相邻两圈之间要有部分能够叠加起来,以便产生预计的平滑的管状轮廓。。。

我来回复

您尚未登录,请登录后再回复。点此登录或注册