MATLAB 画斜圆柱

  • 内容介绍
    • 效果
    • 代码

内容介绍

MATLAB中并没有直接画斜圆柱的方法,我百度了一下,解决方案是用齐次矩阵做坐标变换,然后用fill3、surf函数画变换后的点。我改写了一下百度到的代码,因为源代码写的有点……功能单一。原理就不多介绍了,下面先看效果。

效果

这里用了图片编辑器里面的相机工具来增强画面的质感,可以自己调,也可以百度一下怎么在代码里面加,我比较懒就没去查了。

代码

代码能力有限,如果有更好更高效的的写法可以帮我更新一下,记得@我学习一下,谢谢。
代码片.


function  Getcolumn(axis,r)
%Getcolumn 此函数为画一般圆柱
%   axis:轴线上的端点坐标,n*6 [plx ply plz pux puy puz;...],n为圆柱的个数
%   r:   圆柱的半径,1*n
column_num = size(axis,1);%圆柱数量Hight = sqrt(sum((axis(:,1:3)-axis(:,4:6)).*(axis(:,1:3)-axis(:,4:6)),2)); % 各个圆柱的高度 n*1
axis_vec = (axis(:,4:6) - axis(:,1:3))./Hight;  % 各个圆柱的单位向量  n*3% 获取转换矩阵
for i = 1:column_numavi = axis_vec(i,:);    trans(:,:,i) = [ [null(avi) avi' axis(i,1:3)'];0 0 0 1 ];
end% 标准圆柱面的点云
x = repmat(cos((1:50)*2*pi/50),column_num,1).*r'; % n*50
y = repmat(sin((1:50)*2*pi/50),column_num,1).*r'; % n*50
z = ones(column_num,50).*Hight;                   % n*50x = [x x(:,1)];
y = [y y(:,1)];
z = [z z(:,1)];for i = 1:column_numlp(:,:,i) = trans(:,:,i)*[x(i,:);y(i,:);zeros(1,51);ones(1,51)];up(:,:,i) = trans(:,:,i)*[x(i,:);y(i,:);z(i,:);ones(1,51)];
endpoint_cloud = [lp;up];% 绘图
color = rand(column_num,3);%不想要随机颜色的话可以自己根据圆柱的数量自己一个一个的设置,但比较麻烦。
for j = 1:column_nums = surf([point_cloud(1,:,j);point_cloud(5,:,j)],[point_cloud(2,:,j);...point_cloud(6,:,j)],[point_cloud(3,:,j);point_cloud(7,:,j)],'FaceColor',color(j,:));s.EdgeColor = 'none';hold onfill3(point_cloud(1,:,j),point_cloud(2,:,j),point_cloud(3,:,j),color(j,:));fill3(point_cloud(5,:,j),point_cloud(6,:,j),point_cloud(7,:,j),color(j,:));
end
hold offend

【MATLAB 画斜圆柱】相关推荐

  1. MATLAB画高斯曲线

    MATLAB画高斯曲线 高斯曲线   均值不同 高斯曲线  方差不同 高斯曲线  方差sigma=1,改变均值a(-6, 0,+6) 高斯曲线  均值a=0,改变方差sigma (0.5, 1, 2, ...

  2. matlab泰勒图,matlab画泰勒图

    急 在matlab中写个用泰勒级数计算arctan(x)的方程 clear;clc;x=1;s=0;y=atan(x);fori=1:1e6n=2*i-1;s=s+(-(-1)^i)*(x^n)/n; ...

  3. 在线使用Octave、Matlab画单电荷等位线和电力线、matlab的nonconformant arguments错误

    如下代码,据说是matlab画单电荷等位线和电力线的: theta=[0:.01:2*pi]'; r=0:10; x=sin(theta) * r; y=cos(theta)*4; plot(x,y, ...

  4. matlab绘图z=sin(x_「matlab画三维图」Matlab 应用之绘制三维图形(基础篇) - seo实验室...

    matlab画三维图 在Matlab中,三维图形的绘制包括三维曲线,三维网线图和三维曲面图.闲话不多说,直接进入正题.首先介绍几个函数: 1.plot3(x,y,z,-) 其中,x,y,z为维数相同的 ...

  5. matlab画三维图电磁场,利用matlab实现矩形波导电磁场分布图的绘制.doc

    利用matlab实现矩形波导电磁场分布图的绘制.doc 利用MATLAB实现矩形波导电磁场分布图的绘制(附源程序)通过MATLAB计算并绘出任意时刻金属矩形波导的主模TE10模的电磁场分布图.波导尺寸 ...

  6. 【转】用matlab画极坐标图,希望不同的半径点对应不同颜色,应该怎么做?有什么函数

    https://zhidao.baidu.com/question/2204361617701408588.html?qbl=relate_question_1&word=polarplot ...

  7. matlab画圆的命令_matlab画半圆

    matlab画半圆 (2014-01-07 05:41:01) clear % 清除所有workspace中的变量. [x,y] = meshgrid ([-1:.05:1]); % 这是在打网点,自 ...

  8. matlab贝塞尔函数的根,matlab画贝塞尔函数根分布的曲线图.doc

    matlab画贝塞尔函数根分布的曲线图.doc 主程序:clcclearw=0:0.1:12;y0=Besselj(0,w);y1=Besselj(1,w);y2=Besselj(2,w);plot( ...

  9. matlab输出高质量图片,Matlab 画平滑轮廓 print 高质量 figure | 学步园

    Matlab 画平滑轮廓 print 高质量 figure 在matlab中,想将分割的结果以轮廓的形式显示到灰度图上,要提取.绘制平滑轮廓. 自己提取轮廓.绘制,不方便,效果差. matlab提供了 ...

最新文章

  1. MPB:林科院袁志林组-​原生质体法制备根系腐生型共生菌(伞菌目)单核化菌丝...
  2. 黑马程序员——Java集合基础知识之Map
  3. hadoop 实战练习_Hadoop 实战实例
  4. appengine_在Google的AppEngine上升级到Java 7
  5. 微型计算机各部件之间通过总线传递各种信息,2015年9月计算机一级考试基础及MSOffice应用选择真题...
  6. 2 WM配置-企业结构-分配-给工厂和库存地点分配仓库号
  7. 2020年浙江高考考python吗_2020年浙江高考改革最新消息 浙江新高考规则解读
  8. 多级缓存设计详解 | 给数据库减负,刻不容缓!
  9. C语言实现的RSA算法程序
  10. java睡眠后继续执行_Java高级编程基础:如何使用线程的休眠,中断和连接
  11. 【JavaScript】我所知道的JavaScript
  12. 我的WCF之旅(10):如何在WCF进行Exception Handling
  13. $bzoj1079-SCOI2008$ 着色方案 $dp$
  14. Oracle数据库编译存储过程挂死问题解决办法
  15. WPS如何在同一篇文档针对不同章节设置不同的页眉页脚
  16. c语言第一章复习思维导图
  17. 知乎首页实战之下载知乎App模块
  18. RDS数据库cpu过高分析
  19. html中怎么写虚线框的宽高,html如何设置虚线边框
  20. RxJava相关 - 收藏集 - 掘金

热门文章

  1. ----顾问应该是探索新领域的向导,而不是拉雪橇的狗
  2. access团员人数公式_ACCESS实验-数据查询
  3. PDF文件被加密不能复制打印,一个方法教你解除
  4. jvm脉络梳理1- jvm基础
  5. 使用adb命令将手机上的文件传输至电脑
  6. 每周学算法/读英文/知识点心得分享 9.27
  7. MySQL查询每天每周每月每季每年的数据等常用统计查询
  8. LCYのACM退役回忆录【兼2022西安威海赛后记录】
  9. windows下通过PID杀死进程
  10. 【图像去噪】基于matlab全变分算法(TV)图像去噪【含Matlab源码 625期】