首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用空心曲面表示山体的方程

用空心曲面表示山体的方程
EN

Stack Overflow用户
提问于 2018-03-29 10:56:45
回答 1查看 99关注 0票数 0

我想用函数,其中x和y是坐标形成的圆,z(x,y)从边缘的0增长到R/2的最大值,在中心再增长到0,没有剧烈的变化。我和你在一起

代码语言:javascript
复制
t = -pi:pi/180:pi;
R = 5;
x = R*cos(t);
y = R*sin(t);

for i = 1:361
  for j = 1:361
     z(i,j) = exp( sqrt((x(i)).^2 + (y(j)).^2));
  end
end
[u, v] = meshgrid(x, y);
mesh(u, v, z), grid on;

我应该如何意识到z把这个滴加到中间呢?如有任何建议请见谅!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-29 11:33:30

也许用不同的标准差减去两个二维高斯?

代码语言:javascript
复制
% the area
x = linspace(-5,5,1E2);
y = linspace(-5,5,1E2);

sig1=1;
sig2=2;

%2D gaussian
efac = 1/(2*sig1);
X   = exp(-efac*x.^2);
Y   = exp(-efac*y.^2)';
z1    = Y*X;
z1=z1./max(z1(:));

%2D gaussian
efac = 1/(2*sig2);
X   = exp(-efac*x.^2);
Y   = exp(-efac*y.^2)';
z2    = Y*X;
z2=z2./max(z2(:));

[u, v] = meshgrid(x, y);
mesh(u, v, z2-z1), grid on;

在R之外有一个零的替代方案,它更符合您自己的代码:

代码语言:javascript
复制
x = linspace(-2*pi,2*pi,1E2);
y = linspace(-2*pi,2*pi,1E2);
[u, v] = meshgrid(x, y);
r = sqrt(u.^2+v.^2);
z = sin(r);
z(r>pi)=0;

mesh(u, v, z), grid on;

或者让它在底部少一点锋利:

代码语言:javascript
复制
z = sin(r).^2;

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49554301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档