数学建模社区-数学中国

标题: 如何用matlab生成随机的封闭曲面? [打印本页]

作者: 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】

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


  1. N=0.1;
  2. n=pi/6;
  3. nonrandbit=1;
  4. randbit=1;
  5. ta=[0:n:2*pi];
  6. tb=[-0.5*pi:n:0.5*pi];
  7. [Ta,Tb]=meshgrid(ta,tb);
  8. tta=[0:N:2*pi];
  9. ttb=[-0.5*pi:N:0.5*pi];
  10. [TTa,TTb]=meshgrid(tta,ttb);
  11. r=nonrandbit+randbit*rand(size(Ta));
  12. %r=nonrandbit+randbit*ones(size(t));
  13. r(:,size(r,2))=r(:,1);
  14. x=r.*cos(Ta).*cos(Tb);
  15. y=r.*sin(Ta).*cos(Tb);
  16. z=r.*sin(Tb);
  17. rr = interp2(Ta,Tb,r,TTa,TTb);
  18. xx=rr.*cos(TTa).*cos(TTb);
  19. yy=rr.*sin(TTa).*cos(TTb);
  20. zz=rr.*sin(TTb);

  21. subplot(221)
  22. mesh(x,y,z)
  23. subplot(222)
  24. mesh(xx,yy,zz)
  25. subplot(223)
  26. plot3(x,y,z,'*')
  27. subplot(224)
  28. plot3(xx,yy,zz,'*')
复制代码

作者: charles792    时间: 2010-2-3 11:35
顶…………………………………………




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5