【MATLAB 画斜圆柱】
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 画斜圆柱】相关推荐
- MATLAB画高斯曲线
MATLAB画高斯曲线 高斯曲线 均值不同 高斯曲线 方差不同 高斯曲线 方差sigma=1,改变均值a(-6, 0,+6) 高斯曲线 均值a=0,改变方差sigma (0.5, 1, 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; ...
- 在线使用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, ...
- matlab绘图z=sin(x_「matlab画三维图」Matlab 应用之绘制三维图形(基础篇) - seo实验室...
matlab画三维图 在Matlab中,三维图形的绘制包括三维曲线,三维网线图和三维曲面图.闲话不多说,直接进入正题.首先介绍几个函数: 1.plot3(x,y,z,-) 其中,x,y,z为维数相同的 ...
- matlab画三维图电磁场,利用matlab实现矩形波导电磁场分布图的绘制.doc
利用matlab实现矩形波导电磁场分布图的绘制.doc 利用MATLAB实现矩形波导电磁场分布图的绘制(附源程序)通过MATLAB计算并绘出任意时刻金属矩形波导的主模TE10模的电磁场分布图.波导尺寸 ...
- 【转】用matlab画极坐标图,希望不同的半径点对应不同颜色,应该怎么做?有什么函数
https://zhidao.baidu.com/question/2204361617701408588.html?qbl=relate_question_1&word=polarplot ...
- matlab画圆的命令_matlab画半圆
matlab画半圆 (2014-01-07 05:41:01) clear % 清除所有workspace中的变量. [x,y] = meshgrid ([-1:.05:1]); % 这是在打网点,自 ...
- matlab贝塞尔函数的根,matlab画贝塞尔函数根分布的曲线图.doc
matlab画贝塞尔函数根分布的曲线图.doc 主程序:clcclearw=0:0.1:12;y0=Besselj(0,w);y1=Besselj(1,w);y2=Besselj(2,w);plot( ...
- matlab输出高质量图片,Matlab 画平滑轮廓 print 高质量 figure | 学步园
Matlab 画平滑轮廓 print 高质量 figure 在matlab中,想将分割的结果以轮廓的形式显示到灰度图上,要提取.绘制平滑轮廓. 自己提取轮廓.绘制,不方便,效果差. matlab提供了 ...
最新文章
- MPB:林科院袁志林组-​原生质体法制备根系腐生型共生菌(伞菌目)单核化菌丝...
- 黑马程序员——Java集合基础知识之Map
- hadoop 实战练习_Hadoop 实战实例
- appengine_在Google的AppEngine上升级到Java 7
- 微型计算机各部件之间通过总线传递各种信息,2015年9月计算机一级考试基础及MSOffice应用选择真题...
- 2 WM配置-企业结构-分配-给工厂和库存地点分配仓库号
- 2020年浙江高考考python吗_2020年浙江高考改革最新消息 浙江新高考规则解读
- 多级缓存设计详解 | 给数据库减负,刻不容缓!
- C语言实现的RSA算法程序
- java睡眠后继续执行_Java高级编程基础:如何使用线程的休眠,中断和连接
- 【JavaScript】我所知道的JavaScript
- 我的WCF之旅(10):如何在WCF进行Exception Handling
- $bzoj1079-SCOI2008$ 着色方案 $dp$
- Oracle数据库编译存储过程挂死问题解决办法
- WPS如何在同一篇文档针对不同章节设置不同的页眉页脚
- c语言第一章复习思维导图
- 知乎首页实战之下载知乎App模块
- RDS数据库cpu过高分析
- html中怎么写虚线框的宽高,html如何设置虚线边框
- RxJava相关 - 收藏集 - 掘金