- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MATLAB作图基本知识
由线到面的可视化
摘要:
在Matlab,面的绘制过程中经常有许多问题,尤其是许多对计算机运用不够成熟的人,他们将长不知道怎么将脑子中的图形画出来,从而实现面的可视化,有的则会通过很复杂的方法才能实现面的绘制。本文主要想大家提供一种在你知道线的函数的情况下,快速绘制出相应的面。
线到面:
如果我们想要绘制一个平面,首先必须真正体会’meshgrid’函数的用法。
例如,我们很容易可以绘制一个直平面如图1:
图1
相应代码如下:
clear all
s=linspace(0,5,21);
t=linspace(0,5,21);
[s,t]=meshgrid(s,t);
x=s;
z=t;
y=zeros(size(s));
surf(x,y,z);
shading interp;
axis equal
但是我们也可以通过另一种方法:
我们可以知道一个一条线例如一个空间的直线如图2:
图2
相应代码如下:
clear
clc
s=linspace(0,5,21);
z1=s;
x1=zeros(size(z1));
y1=zeros(size(z1));
plot3(x1,y1,z1);
然后我们可以通过for循环得到一排直线如图3:
图3
相应代码如下:
clear
clc
for t=0:0.25:5
s=linspace(0,5,21);
z1=s;
x1=zeros(size(z1));
y1=zeros(size(z1));
% plot3(x1,y1,z1);
z2=z1;
x2=x1+t;
y2=y1;
plot3(x2,y2,z2);
hold on
end
axis equal
然后我们可以通过meshgrid函数把这些直线变成一个面,所需要做的只是把meshgid代替for循环,plot3改为surf函数。
代码如下:
clear
clc
t=linspace(0,5,21);
s=linspace(0,5,21);
[s,t]=meshgrid(s,t);
z1=s;
x1=zeros(size(z1));
y1=zeros(size(z1));
plot3(x1,y1,z1);
z2=z1;
x2=x1+t;
y2=y1;
surf(x2,y2,z2);
hold on
shading interp
axis equal
如图4:
图4
因而我们可以得到meshgid的使用方法:可以将线做展开、延伸、旋转为一个面。
基本步骤:先画出线图形,让后利用for函数进行图形叠加,最后使用meshgrid替代for函数。
同理我们也可以使用方法画球:
先画一个圆在将圆沿z轴旋转即可得到一个球。
执行如下代码:
clear
Clc
%%%%%%%%%%%%%%%%%
t=linspace(0,pi,21);
s=linspace(0,2*pi,21);
[s,t]=meshgrid(s,t);
%%%%%%%%%%%%%%%%%%%
x1=cos(s);
z1=sin(s);
y1=zeros(size(x1));
图5
%%%%%%%%%%%%%%%%%%%%
z2=z1;
x2=x1.*cos(t);
y2=x1.*sin(t);
surf(x2,y2,z2);
hold on
% shading interp
axis equal
结果如图5:
根据以上方法我们可以画出许多图形,如圆环(图6),单叶双曲回转面(图7),???圆锥面等等。
图6
图7
但是这种方法一般用于简单图形变换,并不适用于所有情况,像双曲抛物面,及导线比较复杂的圆锥面的变换均不适用。
我们可以通过线到面的可视化,做一些我们常见的图形,如轮胎的剖面图。
绘制轮胎剖面图:
设计原理:由线到面的可视化,我们可以画出轮胎的剖面图。
设计步骤:
首先设计轮胎的外圈。轮胎的外圈是一个圆环,处于剖面图的需要,只画出3/4*3/4的圆环,代码如下:
clear
clc
t=linspace(0,3*pi/2,31);
p=linspace(pi/2,2*pi,31);
[t,p]=meshgrid(t,p);
x1=5+cos(p);
z1=sin(p);
y1=zeros(size(z1));
z2=z1;
x2=x1.*cos(t)-y1.*sin(t);
y2=x1.*sin(t)+y1.*cos(t);
surf(x2,y2,z2);
第二步:绘制径向剖面图:
t=linspace(0,3*pi/2,31);
p=linspace(0,1,31);
[t,p]=meshgrid(t,p);
x1=5+p;
y1=zeros(size(x1));
z1=zeros(size(x1));
z2=z1;
x2=x1.*cos(t)-y1.*sin(t)
您可能关注的文档
最近下载
- 中英工程量计价比较.ppt
- unit 1 how can we become good learners 大单元教学+课时设计 section A (3a-4c).docx
- 博途-profinet技术讲解课件:Day2_2_2_PROFINETFunctions.pptx VIP
- 海南大学2022-2023学年《马克思主义基本原理概论》期末考试试卷(A卷)含参考答案.docx
- 2023华侨港澳台联考招生院校录取分数线.pdf
- PDC钻头优化设计与选型技术.pptx VIP
- 建筑设计公司岗位职责.pdf
- TCUPTA 004-2020 城市轨道TOD综合开发项目评价标准.docx
- 我国影视公司税务筹划分析—基于范冰冰逃税案的视角.docx
- 电力系统新能源弃电率的快速求解方法、系统、设备及存储介质.pdf VIP
文档评论(0)