charles792 发表于 2010-2-1 22:29

如何用matlab生成随机的封闭曲面?

我知道利用圆的参数方程和一维插值方法可以生成随机的封闭曲线。

取若干个【0,2*pi】内的数作为参数a,并对应生成一个随机数作为半径r(两端的值相等)。
再通过插值方法将【0,2*pi】内“所有”点的半径求出来,最后作图即可。

但是如何利用球体的参数方程和二维插值方法来生成随机封闭曲面呢?
参数a【0,2*pi】
参数b【-0.5*pi,0.5*pi】

出现问题是这曲线做出来不封闭且两头尖啊,估计是插值时出了问题,求高手指点……


N=0.1;
n=pi/6;
nonrandbit=1;
randbit=1;
ta=;
tb=[-0.5*pi:n:0.5*pi];
=meshgrid(ta,tb);
tta=;
ttb=[-0.5*pi:N:0.5*pi];
=meshgrid(tta,ttb);
r=nonrandbit+randbit*rand(size(Ta));
%r=nonrandbit+randbit*ones(size(t));
r(:,size(r,2))=r(:,1);
x=r.*cos(Ta).*cos(Tb);
y=r.*sin(Ta).*cos(Tb);
z=r.*sin(Tb);
rr = interp2(Ta,Tb,r,TTa,TTb);
xx=rr.*cos(TTa).*cos(TTb);
yy=rr.*sin(TTa).*cos(TTb);
zz=rr.*sin(TTb);

subplot(221)
mesh(x,y,z)
subplot(222)
mesh(xx,yy,zz)
subplot(223)
plot3(x,y,z,'*')
subplot(224)
plot3(xx,yy,zz,'*')

charles792 发表于 2010-2-3 11:35

顶…………………………………………
页: [1]
查看完整版本: 如何用matlab生成随机的封闭曲面?