有谁知道如何在MATLAB中绘制圆顶(又称半球)或任何其他编程语言?

时间:2010-08-30 18:34:26

标签: matlab plot

我需要绘制一个圆顶或半个球体,并能够改变圆顶的尺寸。我认为MATLAB将是我的最佳选择。

有什么建议吗?

感谢

4 个答案:

答案 0 :(得分:6)

SPHERE函数为球面生成x,y和z坐标。您只需要移除与球体底部对应的点以制作圆顶。例如:

[x,y,z] = sphere;      %# Makes a 21-by-21 point sphere
x = x(11:end,:);       %# Keep top 11 x points
y = y(11:end,:);       %# Keep top 11 y points
z = z(11:end,:);       %# Keep top 11 z points
r = 3;                 %# A radius value
surf(r.*x,r.*y,r.*z);  %# Plot the surface
axis equal;            %# Make the scaling on the x, y, and z axes equal

答案 1 :(得分:2)

看看surf。球体的公式是

x^2+y^2+z^2 = R^2

您可能还需要meshgrid

答案 2 :(得分:2)

这是一个起点:

R = 7;
[X,Y] = meshgrid(-10:.1:10);
Z = sqrt(R.^2 - X.^2 - Y.^2);
Z(imag(Z) ~= 0) = 0;
mesh(X,Y,Z);

答案 3 :(得分:0)

我拍了一张圆形图,并将其改编成圆顶图。我无法测试它,但它应该可以工作,因为圆圈工作正常。

我用JavaScript制作了这个。 setVox只是一个可以在3D平面上打印体素的函数。

  var rad = 1; //radius

  for (var z = -(rad); z < 0; z++) {
    r = Math.round(Math.sqrt(Math.pow(rad,2) - Math.pow(z,2)));
    for (var x = -(r); x < r; x++) {
      y = Math.round(Math.sqrt(Math.pow(r,2) - Math.pow(x,2)));
      setVox(x,y,z);
      setVox(x,-(y),z);
    }
    for (y = -(r); y < r; y++) {
      x = Math.round(Math.sqrt(Math.pow(r,2) - Math.pow(y,2)));
      setVox(x,y,z);
      setVox(-(x),y,z);
    }
  }