plotcylinder matlab,Matlab在任意两点之间绘制三维圆柱

Matlab在任意两点之间绘制三维圆柱

Matlab在任意两点之间绘制三维圆柱

此函数可能存在一些不足,请多多指教!

function plotcylinder(u1,u2,color_a,r)

L=norm(u1-u2);

ROD=u2-u1;

[X,Y,Z]=cylinder(r,100);

x1=X*0;y1=Y*0;z1=Z*0;

Z=L*Z-L/2;

ROD_midpoint=(u1+u2)/2;

x=ROD_midpoint(1);

y=ROD_midpoint(2);

z=ROD_midpoint(3);

a=[1 0 0];b=[0 1 0];c=[0 0 1];

if(ROD(2)==0||ROD(1)==0)

if(ROD(2)==0) % 在XZ平面

angel=acos(dot(ROD,c)/norm(ROD)/norm(c));

if(ROD(1)<0)

angel=-angel; %%

end

A2=[cos(angel) 0 sin(angel);0 1 0; -sin(angel) 0 cos(angel)]; % 绕Y轴旋转

for i=1:length(X(1,:))

u=[X(1,i) Y(1,i) Z(1,i)]';

u1=A2*u;

x1(1,i)=u1(1);y1(1,i)=u1(2);z1(1,i)=u1(3);

u=[X(1,i) Y(1,i) Z(2,i)]';

u1=A2*u;

x1(2,i)=u1(1);y1(2,i)=u1(2);z1(2,i)=u1(3);

end

end

if(ROD(1)==0) % 在YZ平面

angel=acos(dot(ROD,c)/norm(ROD)/norm(c));

angel=2*pi-angel; % 此处maybe要增加类似上面的判定是否变为负数

A1=[1 0 0;0 cos(angel) -sin(angel);0 sin(angel) cos(angel)]; % 绕X轴旋转

for i=1:length(X(1,:))

u=[X(1,i) Y(1,i) Z(1,i)]';

u1=A1*u;

x1(1,i)=u1(1);y1(1,i)=u1(2);z1(1,i)=u1(3);

u=[X(1,i) Y(1,i) Z(2,i)]';

u1=A1*u;

x1(2,i)=u1(1);y1(2,i)=u1(2);z1(2,i)=u1(3);

end

end

else

% 先绕Z轴旋转,在绕Y轴旋转

angel=acos(dot(ROD,c)/norm(ROD)/norm(c));

A2=[cos(angel) 0 sin(angel);0 1 0; -sin(angel) 0 cos(angel)];

angel=acos(dot(ROD,a)/norm(ROD)/norm(a));

if(ROD(2)<0)

angel=2*pi-angel;

end

A3=[cos(angel) -sin(angel) 0;sin(angel) cos(angel) 0;0 0 1];

A=A3*A2;

for i=1:length(X(1,:))

u=[X(1,i) Y(1,i) Z(1,i)]';

u1=A*u;

x1(1,i)=u1(1);y1(1,i)=u1(2);z1(1,i)=u1(3);

u=[X(1,i) Y(1,i) Z(2,i)]';

u1=A*u;

x1(2,i)=u1(1);y1(2,i)=u1(2);z1(2,i)=u1(3);

end

end

fill3(x1(1,:)+x,y1(1,:)+y,z1(1,:)+z,color_a,'EdgeColor','none')

hold on

fill3(x1(2,:)+x,y1(2,:)+y,z1(2,:)+z,color_a,'EdgeColor','none')

hold on

surf(x1+x,y1+y,z1+z,'facecolor',color_a,'edgecolor','none')

axis equal

xlabel('x')

ylabel('y')

zlabel('z')

set(gcf,'color','w')

主函数如下:

figure(1)

set(gcf,'color','w')

a=[2 4 6];

b=[10 10 8];

plotcylinder(a,b,'b',0.1)

xlabel('x')

ylabel('y')

zlabel('z')

axis equal

camlight;

lighting flat;

效果图

699de9e3d8179b18cde7516845b4b52e.png

Matlab在任意两点之间绘制三维圆柱相关教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/336438.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jdk8和hotspot_HotSpot的-XshowSettings标志的简单性和价值

jdk8和hotspot一个方便的HotSpot JVM标志 &#xff08; 选项为Java启动 java &#xff09;是-XshowSettings选项。 Oracle Java启动器描述页面中对此选项进行了如下描述 &#xff1a; -XshowSettings &#xff1a; category显示设置并继续。 该选项的可能类别参数包括&#xf…

matlab信号分割与比对,matlab测量计算信号的相似度

本示例说明如何测量信号相似度。将回答以下问题&#xff1a;如何比较具有不同长度或不同采样率的信号&#xff1f;如何确定测量中是否存在信号或仅有噪声&#xff1f;有两个信号相关吗&#xff1f;如何测量两个信号之间的延迟&#xff1f;比较具有不同采样率的信号考虑一个音频…

Spring Bootstrap中具有配置元数据的高级配置

在简要介绍了配置元数据并涵盖了我之前的文章《 在Spring Boot中使用配置元数据Pimp您的配置》中的基础知识之后&#xff0c;现在该看看如何进一步执行此步骤并进一步自定义配置。 在这篇文章中&#xff0c;我计划提出对配置属性的弃用&#xff0c;并讨论各种值提供程序&#x…

ssh 与 telnet 有何不同?_采用创新面料Nike Infinalon的全新瑜珈系列究竟有何不同?...

采用创新面料Nike Infinalon的全新瑜珈系列究竟有何不同&#xff1f;无拘无束自由运动——这是耐克瑜伽系列新品的核心设计理念。全新系列为你提供垫上瑜伽时毫无束缚的舒适感&#xff0c;采用了耐克创新型面料&#xff1a;Nike Infinalon。Nike Infinalon应用于耐克最新瑜伽系…

matlab中的导函数驻点,Matlab用导数作定性分析

Matlab用导数作定性分析5.1知识要点&#xff1a;函数作图 —用导数定性描述函数【 clf,xlinspace(-8,8,30);f(x-3).^2./(4*(x-1)); plot(x,f) 】【 fplot((x-3)^2/(4*(x-1)),[-8,8])) 】【 clf,xsym(x); f(x-3)^2/(4*(x-1)); ezplot(f,[-8,8]) ,ti…

原生态基于OpenCV图像处理软件开发

部分功能效果图 GitHub:https://github.com/CnYiXiaoNaiHe/OpenCV- 持续更新

git.exe 启动 慢_四川成都surface电脑启动到一半黑屏维修服务地址电话

联系人&#xff1a;刘工 欢迎来电 地址&#xff1a;成都市一环路南二段1号(磨子桥口)数码科技大厦(新世纪电脑城对面)4楼413专业surface全系列维修因为专注&#xff0c;所以专注&#xff0c;所以surface配件都有现货。微软电脑&#xff0c;微软平板电脑专业维修服务点surface R…

【FFMPEG应用篇】基于C++使用ffmpeg和QT开发播放器

音视频基础知识 1.MPEG-4是一套用于音频&#xff0c;视频信息的亚索编码标准。 2.常见的封装格式 MP4 MOV AVI&#xff1a;压缩标准可以任意选择 FLV &#xff1a;FLV封装格式详细参考 TS&#xff1a;直播流媒体使用&#xff1b; 3.常用视频编码格式 H264&#xff0…

java代码自动生成的插件_如何使用插件生成自定义Java 8代码

java代码自动生成的插件大多数程序员讨厌的一件事就是编写样板代码。 无休止的时间花费在设置实体类和配置数据库连接上。 为了避免这种情况&#xff0c;您可以让Speedment Open Source之类的程序为您生成所有这些代码。 这样可以很容易地以最少的人工就可以启动和运行数据库项…

PHP在Tomcat中CSS出错,tomcat找不到css怎么办

tomcat找不到css怎么办Tomcat找不到WEB下的Css文件&#xff0c;一般可以通过以下方式解决&#xff1a;将路径相对位置修改为域相对位置&#xff0c;如下&#xff1a;备注&#xff1a;WEB-INF不是公共访问目录&#xff0c;只有在Servlets的RequestDispatcher或JSPS的可以访问&am…

eve模拟器_《Re:从零开始的新伊甸征程》一步到位教你下载EVE手游

自从小生发布了《「EVE Echoes」萌新向完全入门指南》后有小伙伴回应不懂怎样下载游戏的问题&#xff0c;小生作为殷郡中的一名闲云野鹤也尽一点绵薄之力帮助各位&#xff0c;尽量为各位扫清前往新伊甸的“石头”吧。[酷]在开篇前小生可以大致明确告诉你&#xff0c;不要问小生…

【开源项目】QT OPENGL 与 shader 绘制展示视频代码实例 OPenGL直接显示YUV数据

本文使用QT中的QOpenGLFunctions&#xff08;此类封装了OPenGL的方法&#xff0c;相当于QT版OPenGL&#xff09; 其次重载 void paintGL(); void initializeGL(); void resizeGL(int width, int height);是基本操作 * 三种GLSL变量说明 * varying 顶点与片元共享 * attri…

java开发课程表_展示Java开发人员课程包

java开发课程表60个小时以上的课程&#xff0c;5门所有级别的课程&#xff1a;成为Java编程专家 嘿&#xff0c;怪胎&#xff0c; 本周&#xff0c;在我们的JCG Deals商店中 &#xff0c;我们提供了一个极端的报价 。 我们提供的Java Developer Course Bundle 仅售39美元&am…

二阶自回归过程matlab,时间序列分析:二阶自回归过程

时间序列分析&#xff1a;二阶自回归过程Author: nex3z2019-07-131. 定义对于二阶自回归过程 $AR(2)$\begin{equation}X_t \phi_1 X_{t-1} \phi_2 X_{t-2} e_t \tag{1}\end{equation}假设 $e_t$ 独立于 $Y_{t-1}, Y_{t-2}, \cdots$。式 $(1)$ 也可以表示为\begin{equation}X…

m4s格式转换mp3_mp4怎么转换成mp3格式?mp4转mp3的傻瓜式方法

原标题&#xff1a;mp4怎么转换成mp3格式&#xff1f;mp4转mp3的傻瓜式方法或许对于很多小伙伴来说&#xff0c;要将视频改变一下格式就已经很难了&#xff0c;又何况是要将原本的视频改变成音频格式呢&#xff1f;一个是视频&#xff0c;一个是音频&#xff0c;压根就是风马牛…

Git安装及基本操作

1.安装Git 配置用户 git config --global user.name "用户名" git config --global user.email "邮箱"配置完成后查看配置 git config -l生成SSH秘钥 ssh-keygen -t rsa -C “邮箱” 输入完成后需要按3次Enter键 $ ssh-keygen -t rsa -C "邮箱&quo…

ZigBee网络数据传递流程_蓝牙、Wifi与ZigBee三种,这三种无线传输技术,谁能一统天下...

智能产品种类越来越多&#xff0c;运用在智能家居上的技术也越来越成熟。然而在无线通信协议上却一直无法做到统一&#xff0c;从目前的情况来看&#xff0c;短期内是无法实现这一愿望的了。既然如此&#xff0c;我们何不另辟蹊径&#xff0c;在这些标准中&#xff0c;选择优势…

千元平板电脑排行榜_最值得买的平板电脑推荐-最佳平板电脑品牌排行榜【2020年10月】...

平板电脑相较笔记本电脑而言&#xff0c;以其便携与功能强大的特点成为大家日常生活和工作的必备搭档&#xff0c;无论在性能配置上还是在内置软件应用方面&#xff0c;不同的使用场景有不同的需求。今天给大家推荐最佳平板电脑品牌排行&#xff0c;希望对大家选购平板电脑有帮…

java 枚举 菜鸟_2个菜鸟Java常量和枚举陷阱

java 枚举 菜鸟在对Java和Groovy代码进行的各种代码审查中&#xff0c;我经常看到魔术数字和其他随机字符串散落在整个代码库中。 例如&#xff0c;下面的&#xff08;Groovy&#xff09;代码段中的4.2是一个神奇的数字&#xff1a; if (swashbuckle > 4.2) {... }4.2是什…