Matlab 中二维极坐标图的旋转

Revolution of a 2D polar plot in Matlab

我想围绕 0° 方向轴执行以下 2D 极坐标图的 360° 旋转:

我没有描述它的分析函数(例如 f = R(theta)),但只有两个离散数组:半径值和角度 theta

设 R 为包含极坐标图半径值的向量:

  xv = R.* cos(theta);  % // Polar to 2D Cartesian coordinates
  yv = R.* sin(theta);  % // Polar to 2D Cartesian coordinates
  
  phi = 0:.001:2*pi;        % // 3D revolution angle around theta = 0

  % // 3D points of the surface

  xf = repmat(xv',size(phi)); 
  yf = yv' * cos(phi);
  zf = yv' * sin(phi);
  
mesh(xf,yf,zf)

上面的代码绘制了这个:

似乎是正确的,但是:

  1. zf 值(参见颜色条)与我对极坐标图的简单 360° 旋转所期望的范围不同。那是因为zf是坐标变换的结果
  2. 颜色图算法的工作方式,它根据距原点 zf 的大小分配颜色。这意味着表面的着色方式现在与 zf 的实际大小无关。例如,二维极坐标图中没有负值,而旋转显然会生成相对于参考系原点具有负坐标的点。

这应该是一个简单的操作,但我莫名其妙地卡住了...

感谢您对此的任何见解!

mesh 命令接受 another argument to define colors:一种方法是为每个顶点定义颜色,在您的情况下,您仍然可以通过使用半径 R 作为颜色:

mesh(xf,yf,zf, repmat(R', size(phi)))