matlab画圆环立体图,在Matlab中可视化环形表面

解决你的第一个问题:首先你需要在环形坐标中定义圆环的坐标(看起来自然!)然后转换为笛卡尔坐标,这就是MATLAB期望构建所有图的方式(除非你制作极坐标图,当然).所以我们从定义环形坐标开始:

aminor = 1.; % Torus minor radius

Rmajor = 3.; % Torus major radius

theta = linspace(-pi, pi, 64) ; % Poloidal angle

phi = linspace(0., 2.*pi, 64) ; % Toroidal angle

我们只想要一个圆环表面,所以小半径是一个标量.我们现在制作这些坐标的2D网格:

[t, p] = meshgrid(phi, theta);

并使用在问题中链接的维基百科页面上给出的公式转换为3D笛卡尔坐标:

x = (Rmajor + aminor.*cos(p)) .* cos(t);

y = (Rmajor + aminor.*cos(p)) .* sin(t);

z = aminor.*sin(p);

现在我们将我们的圆环定义为3D,我们可以使用surf绘制它:

surf(x, y, z)

axis equal

编辑:为了解决你的第二个问题,它取决于你如何存储你的失真,但是假设你在每个环形和极向点处定义了一个矩阵,你只需要通过失真乘以小半径的常数.在下文中,我创建了一个与我的环形和极向角坐标矩阵尺寸相同的失真矩阵,它通常分布在平均值1,FWHM为0.1:

distortion = 1. + 0.1 * randn(64, 64);

x = (Rmajor + aminor .* distortion .*cos(p)) .* cos(t);

y = (Rmajor + aminor .* distortion .* cos(p)) .* sin(t);

z = aminor.* distortion .* sin(p);

surf(x, y, z)

结果是:

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值