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)

结果是:

你可能感兴趣的:(matlab画圆环立体图)