MWE低于
我正在使用Matlabs surf
函数绘制能量表面。我首先在各种方位角和仰角处创建我的数据点,接下来我使用通常的球 - π - 方程将它们转换为(x,y,z)坐标,并将坐标重新整形为矩阵。
然而,当我绘制这个时,我发现所有数据点都表示为颜色“补丁”的左下角,而不是颜色补丁的中心。
然而,当我缩放表面的半径以反映该点处的能量时,由于这种效应,表面中的任何凹坑都会弄乱颜色,即在可视化中数据的任何对称性都会丢失。 I would like this dimple to have roughly symmetrical color around the deepest point here.
显示的示例是从球形坐标转换为笛卡尔坐标转换为两个数据点之间角度差的一半 - 这意味着补丁以右侧点为中心,但着色仍然关闭。
有没有办法将彩色色块“居中”在数据拍摄的确切方向上?
scaling = 100;
min_val = 0.5
count = 1;
azstep = 10;
elstep = 10;
az = 0:azstep:360;
el = -90:elstep:90;
for ii = 1:length(az)
for jj = 1:length(el)
if any(az(ii) == [260 270 280]) && any(el(jj) == [-10 0 10])
r_output(count) = 0.8;
else
r_output(count) = 1;
end
c(count) = r_output(count);
r(count) = 1 + scaling.*(r_output(count)/min_val) - scaling;
x(count) = (r(count)) .* cosd(el(jj)) .* cosd(az(ii));
y(count) = (r(count)) .* cosd(el(jj)) .* sind(az(ii));
z(count) = (r(count)) .* sind(el(jj));
count = count + 1;
end
end
X = reshape(x,length(el),length(az));
Y = reshape(y,length(el),length(az));
Z = reshape(z,length(el),length(az));
C = reshape(c,length(el),length(az));
figure
hold on
surf(X,Y,Z,C)
colorbar
axis equal
xlabel('X axis'); ylabel('Y axis'); zlabel('Z axis');