matlab里min函数的使用方法,Matlab - 使用surf和min函数减去两个3D图形

这是我谦虚的建议:

N = 400; % resolution

x = linspace(-1,1,N);

y = linspace(-1,1,N);

[X,Y] = meshgrid(x,y);

Triangle1 = -abs(X)+1.5 ;

Triangle2 = -abs(Y)+1.5 ;

Z = min(Triangle1, Triangle2);

Trig = alphaShape(X(:),Y(:),Z(:),2);

[Xs,Ys,Zs] = sphere(N-1);

Sphere = alphaShape(Xs(:),Ys(:),Zs(:)+2,2);

% get all the points from the pyramid that are within the sphere:

inSphere = inShape(Sphere,X(:),Y(:),Z(:));

Zt = Z;

Zt(inSphere) = nan; % remove the points in the sphere

surf(X,Y,Zt)

shading interp

view(70,35)

axis tight

我使用 alphaShape 对象从金字塔中删除所有不需要的点,然后在没有它们的情况下绘制它:

74957ed1-365a-4e9a-ad0d-2ddbb64ba1aa.png

我知道,它并不完美,因为你没有在金字塔中看到圆圈的底部,但是我所有尝试实现这一目标都失败了 . 我的基本想法是将它们绘制在一起,如下所示:

hold on;

Zc = Zs;

inTrig = inShape(Trig,Xs(:),Ys(:),Zs(:)+1.5);

Zc(~inTrig) = nan;

surf(Xs,Ys,Zc+1.5)

hold off

但结果并不是那么好,因为你无法真正看到金字塔内的圆圈 .

无论如何,我在这里发布,因为它可能会给你一个指导 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值