matlab绘制球面模型_【Matlab学习秘籍】绘制三维镂空图

5f5cc1d1eb9ccc87e33937519c045c54.png

球板模型:模型中间是一个小球面,被一块平板夹着,然后外面包着一个大的球面,大球面的直径和平板的边长相等。

跟着我一步步来画图:

b72605c53dbbe95e4f5db8f8abe12aa0.png
先画两个球冠

fc4542d57bc6bb03913a932608b80123.png
画上下两个面

c5ae71c59f42c64bb35943bfc0b06a13.png
画圆柱面

ee997d6230977d7e4b636486f9be2c78.png
画四个侧面

3d4a174a782eb9c89dd24de05d16d661.png
完整图

完整代码:

clear; clc;
% 生成球面数据
[x1, y1, z1] = sphere(101);         
z0 = z1;
% 半径 0.8 之外的不显示
z1(x1.^2 + y1.^2 >= 0.8^2) = nan;   
x0 = linspace(-1.2, 1.2, 25);
z = linspace(-0.6, 0.6, 10);
[x, z] = meshgrid(x0, z);
y0 = zeros(size(x));
[x2, y2] = meshgrid(x0);
% 生成圆柱数据
[x3, y3, z3] = cylinder(0.8);       
s = zeros(size(x2));
% 绘制两个球冠
surf(x1, y1, z1);
hold on
% 绘制上下两个面
surf(x2, y2, s - 0.6);              
surf(x2, y2, s + 0.6);
% 绘制圆柱面
surf(x3, y3, 1.2 * (z3 - 0.5));
% 绘制四个侧面
mesh(x, y0-1.2, z);
mesh(x, y0+1.2, z);
mesh(y0 + 1.2, x, z);
mesh(y0 - 1.2, x, z);
% 绘制两个大的球冠
mesh(1.2 * x1, 1.2 * y1, 1.2 * z0);
% 镂空
hidden off
hold off
axis equal
axis square
axis off

【秘籍】

  1. 曲面裁剪:将需要裁剪的部分对应的数据用 nan 表示,最简单不接受反驳;
  2. 细节:为什么0.8,0.6,自行体会。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值