如何将球体平移至3D高斯分布图形上方?
解决方法:平移球体的Z坐标到高斯分布顶部
嘿,这个问题其实很好解决,核心就是调整球体的z轴位置,让它刚好落在高斯分布的峰值上~
首先我们先理清楚关键数值:
- 你的高斯分布在原点(0,0)处的峰值高度是1(因为当X=0、Y=0时,
exp(0)=1) - 缩放后的球体半径是
s(你代码里用x1 = x1*s等操作把球体半径改成了s),原来的球体是围绕原点(0,0,0)生成的,z轴范围是[-s, s]
要让球体完美叠加在高斯顶部,你只需要给球体的所有z坐标加上一个偏移量,让球体的底部刚好和高斯的峰值对齐。修改后的完整代码如下:
% 绘制高斯分布 n = 100; % 分辨率 s = 2; % 宽度 x = linspace(-5,5,n); [X,Y] = meshgrid(x); gaus2d = exp( -(X.^2 + Y.^2 )/(2*s^2)); figure(1), clf surf(x,x,gaus2d) hold on % 先开启hold on,确保两个图形在同一个窗口 % 绘制并平移球体到高斯顶部 rotate3d on [x1,y1,z1] = sphere; % 调整球体半径 x1 = x1*s; y1 = y1*s; z1 = z1*s; % 关键:平移z坐标,让球体底部刚好落在高斯峰值上 z1 = z1 + 1 + s; surf(x1,y1,z1) hold off
关键细节解释:
- 代码里的
z1 = z1 + 1 + s是核心操作:缩放后的球体z范围原本是[-s, s],加上1+s后,新的z范围变成[1, 1+2s],这样球体的最低点刚好对应高斯的最高点(0,0,1),完全贴合在顶部。 - 如果你想要球体的中心刚好在高斯顶部(允许球体下半部分嵌入高斯),只需要把偏移量改成
1,也就是z1 = z1 + 1,这样球体中心在(0,0,1),z范围是[1-s, 1+s]。
内容的提问来源于stack exchange,提问作者Hemfri
相关产品推荐
相关产品推荐

