QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4211|回复: 1
打印 上一主题 下一主题

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

[复制链接]
字体大小: 正常 放大

5

主题

3

听众

180

积分

升级  40%

该用户从未签到

自我介绍
神秘的Charles

新人进步奖

跳转到指定楼层
1#
发表于 2010-2-1 22:29 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
我知道利用圆的参数方程和一维插值方法可以生成随机的封闭曲线。

取若干个【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,'*')
复制代码
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

5

主题

3

听众

180

积分

升级  40%

该用户从未签到

自我介绍
神秘的Charles

新人进步奖

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-4-10 04:52 , Processed in 0.440245 second(s), 57 queries .

回顶部