如果给出一个平行六面体(甚至其他多面体)的各个顶点坐标,如何画出这个平行六面体。

在网上找了找方法,可以参考这篇博客 matlab中patch函数详解。然后我具体查看了 Multifaceted Patches 帮助,记录下来以备后查。

绘制主要就是利用 patch 函数,patch 的一般调用格式为patch(X,Y,C)(二维)和patch(X,Y,Z,C)(三维)。这里主要看三维情况下。X,Y,Z分别是各个点的 X 坐标,Y 坐标和 Z 坐标,C 是颜色参数。假设我们有一个立方体如下图所示,

那么对应于这个立方体的XYZ参数就是下图所示,

可以看出,XYZ都是一个4*6的矩阵,3个矩阵第 n 列合起来表示一个平面的4个顶点的坐标,6个平面所以有6列,每个平面4个顶点所以有4行。但是这样表示就会出现一个问题——一些点重复出现,这是由于相邻两个平面之间有2个顶点是共用的。可以看到上图中实际上给出了24个顶点的坐标,但是真正“独立”的只有8个,也就是立方体实际的顶点数,很明显这样做不是一个明智的做法。于是,另一种方法出来了。

这种表示方法可以只提供8个顶点的坐标(Vertices 属性)而不是24个,给这些顶点编号1~8,然后指定每个平面上的4个顶点(Faces 属性,要按连接顺序),再指定颜色就可以了。顶点编号可以自己任意(最好有顺序,方便记忆理解),如下图,

然后平面和顶点的对应关系如下图所示,

Vertices每一行是一个顶点的坐标,共8行8个顶点;Faces每一行是一个平面的4个顶点,共6行6个平面。

下面举个例子。

假设我要通过其他方法已经得到平行六面体的8个顶点的分别是 (0,0,0),(1,0,0),(1,1,0),(0,1,0),(0,0.5,0),(1,0.5,1),(1,1.5,1),(0,1.5,1),代码如下,

clear

vertices_matrix = [ 0 0 0;1 0 0;1 1 0;0 1 0;0 0.5 1;1 0.5 1;1 1.5 1;0 1.5 1];

faces_matrix = [1 2 6 5; 2 3 7 6;3 4 8 7;4 1 5 8;1 2 3 4;5 6 7 8];

h = patch('Vertices',vertices_matrix,'Faces',faces_matrix,...

'FaceVertexCData',hsv(8), ...

'FaceColor','interp');

view(3)

xlabel('x', 'FontName', 'courier new', 'FontWeight', 'bold');

ylabel('y', 'FontName', 'courier new', 'FontWeight', 'bold');

zlabel('z', 'FontName', 'courier new', 'FontWeight', 'bold');

grid on;

box on;

结果如下图所示,

在MATLAB中运行出来后可以通过旋转来从不同角度观察。

另外,假如flat_matrix我写成这样,

faces_matrix = [1 2 5 6; 2 3 7 6;3 4 8 7;4 1 5 8;1 2 3 4;5 6 7 8];

也就是说我把第一个面的顶点顺序稍微变一下,5和6交换,那么结果如下图,

明显第一个面不对,有部分“镂空”了,这是因为改变点的连接顺序,所以一定要注意顶点顺序。

每个面的颜色可以不一样,例如第一个面黄色,第二个面蓝色……,可以通过 hsv 函数或者指定 FaceVertexCData 属性值并设置 FaceColor 属性值为flat实现,具体可以参考本文开始给出的 Multifaceted Patches 链接和 Specifying Patch Coloring 。

OK,昨晚睡不着跟室友聊到2点,现在好困,不过还是不想睡。扯远了~这篇就这样了~

Good Luck,Alan!

matlab画六面体,MATLAB绘制平行六面体相关推荐

  1. 用matlab画树叶,matlab画漂亮的树叶

    美丽的树叶 画叶子 1.构出大形 2.增加漂亮的花纹 3.添加环境 找一找你看到了哪些线条 线描树叶: 美丽的树叶 画叶子 1.构出大形 2.增加漂亮的花纹 3...... 方法和材料表现叶子. 叶子 ...

  2. 怎么用matlab画误差椭圆,matlab画误差椭圆

    一 图4椭圆抛物面 图5双曲抛物面 图6锥面 例如画螺旋曲线的图形,其参数方程设... 数学实验第二次实验报告--MATLAB基本图形绘制_理学_高等教育_教育专区.数... 实验作业 2 解: 代码 ...

  3. matlab画足球,Matlab画足球

    Matlab画足球 科普:足球表面是由12个正五边形和20个正六边形构成,每个正五边形相邻的是5个正六边形,共有60个顶点,90条棱,这些数据可以根据欧拉定理计算得出,不是这里要说明的重点. 思路:先 ...

  4. matlab画圆柱体,Matlab中如何实现绘制任意圆柱

    本代码实现了,由两点和半径绘制空间任意圆柱 function [Cylinder EndPlate1 EndPlate2] = cylinder3(X1,X2,r,n,cyl_color,closed ...

  5. matlab 画渐近线,如何绘制渐近线?

    我遵循了一个小教程,它让我接近了我想要的地方,但它并不完全在那里,我不知道如何用它进行下一步. 以下是我目前的数据: 但我不知道如何在这个图中绘制渐近线.在 我在想我需要创建一个名为Y的变量,它是一条 ...

  6. matlab 画中垂线,zrender 绘制带有中垂线的线段

    zrender(Zlevel Render) 是一个轻量级的Canvas类库,绘制直线是很简单的事情,但是绘制中垂线还需借助到数学知识「三角函数」. y ^ | B(x1, y1) | /┆ | / ...

  7. matlab画半球面,Matlab 绘制3D半球

    R=10; z=real(zeros(201,201)); m=0; n=0; step = 0.1; for x=-R:step:R m = m + 1; %x for y=-sqrt(R*R - ...

  8. matlab画坐标系,Matlab绘制图形坐标轴操作汇总 | 望天博客

    1.坐标轴的视点(viewpoint): 从哪个方向看整个坐标系统,这决定了坐标轴的方向和位置,通过view函数实现视点的设置:view([z y ]):(将坐标系统想象为一座房子,而自己是个会飞的天 ...

  9. matlab画凸轮廓线,凸轮廓线绘制,layout of cam profile,音标,读音,翻译,英文例句,英语词典...

    补充资料:地下轮廓线 地下轮廓线 underground outline 暇挡包坏及排拘图t的 卿水吵地砂廓豁黔擎纂鬓豁燕!廓不许平均坡降值为工必亡'则要大 L一C式中L为渗径长度朴万为上下游最大水头 ...

  10. matlab画圆柱,Matlab 画三维圆柱体

    主要学习了画空间圆柱体和空间长方形的绘制方法. 有两个surface property:'FaceColor'和'EdgeColor'; 先讲'FaceColor',它指定了surface画出曲面的颜 ...

最新文章

  1. android 网络调试 源代码,一个步骤教你调试Android系统源代码
  2. win7连接centos的nfs
  3. Android提权漏洞CVE-2014-7920CVE-2014-7921分析
  4. jQuery选择器大全(48个代码片段+21幅图演示)
  5. AspNet.WebAPI.OData.ODataPQ实现WebAPI的分页查询服务-(个人拙笔)
  6. 认识 MySQL 和 Redis 的数据一致性问题
  7. RocketMQ初探(五)之RocketMQ4.2.6集群部署(单Master+双Master+2m+2s+async异步复制)
  8. python爬虫 库_七款必备的Python爬虫库,你知道几个?
  9. Python 笔试 —— 效率与优雅
  10. 高通混频器配置文件如何选择
  11. 蓝桥杯嵌入式备赛手册
  12. system进程占用资源高居不下
  13. 如何提高自身跟团队的领导力?
  14. 万国觉醒信号进爆满服务器,游漫谈:《万国觉醒》冷知识,玩家纷纷联盟,千人同屏硬刚服务器...
  15. 威联通文件传输服务器,QNAP NAS方案-------文件共享
  16. 生活些许失落,工作些许失落
  17. Oracle Sqlplus显示不足问题
  18. 国外主流搜索引擎提交入口
  19. 国家计算机报名730,730分学霸杨晨煜被清华智班录取!学习的专业是......
  20. PL/SQL Developer x64 官网下载、中文包、注册码

热门文章

  1. R语言Outliers异常值检测方法比较
  2. iMac重装系统的问题:无法与恢复服务器取得联系/将安装器信息下载到目标卷宗失败
  3. Eloquent ORM
  4. Laravel 5.5 Eloquent ORM - 快速入门
  5. png图片尺寸大小调整
  6. opengl fbo 纹理 开发步骤
  7. 奥运五环的含义及其颜色对应码
  8. php判断某天星期几,php怎么判断指定日期是星期几?
  9. CSS网页布局中易犯的10个小错误
  10. 运营商精准大数据外呼系统