Matlab 绘制空间任意方向圆柱体 您所在的位置:网站首页 圆柱透视图怎么画 Matlab 绘制空间任意方向圆柱体

Matlab 绘制空间任意方向圆柱体

2024-07-17 22:14| 来源: 网络整理| 查看: 265

Matlab 绘制空间任意方向圆柱体 一 系统函数

Matlab本身自带了绘制圆柱体函数,如下:

[X,Y,Z] = cylinder [X,Y,Z] = cylinder(r) [X,Y,Z] = cylinder(r,n) cylinder(axes_handle,...) cylinder(...)

说明:

cylinder 生成单位圆柱的 x、y 和 z 坐标。可使用 surf 或 mesh 绘制圆柱形对象,或不提供输出参数直接绘制它。[X,Y,Z] = cylinder 返回半径等于 1 的圆柱的 x、y 和 z 坐标。该圆柱绕其周长有 20 个等距点。[X,Y,Z] = cylinder® 使用 r 定义剖面曲线以返回圆柱的 x、y 和 z 坐标。cylinder 将 r 中的每个元素视为沿圆柱单位高度的等距高度的半径。该圆柱绕其周长有 20 个等距点。[X,Y,Z] = cylinder(r,n) 基于向量 r 定义的剖面曲线返回圆柱的 x、y 和 z 坐标。该圆柱绕其周长有 n 个等距点。cylinder(axes_handle,…) 将图形绘制到带有句柄 axes_handle 的坐标区中,而不是当前坐标区 (gca) 中。不带任何输出参数的 cylinder(…) 使用 surf 绘制圆柱。

(备注:以上来源于Matlab帮助文档)

可见系统自带函数只能生成垂直于XY平面的圆柱体,要想绘制任意方向的圆柱体则需要在此基础上写程序实现。

二 由空间任意两点绘制空间圆柱体 方法一 思路:首先由系统自带函数cylinder生成标准圆柱体,该圆柱体轴线垂直于XY平面,底面原点位于坐标系原点,半径为r,高度为1。然后在此基础上通过旋转、拉伸变换得到想要的任意方向的圆柱体。实现: 首先将cylinder生成的圆柱体坐标的z坐标扩大L=norm(u1-u2)倍,然后将x,y,z坐标绕坐标y轴旋转angle(z),再将x,y,z坐标绕坐标z轴旋转angle(x),得到最终的圆柱体坐标,最后用surf进行绘制。代码

以下代码转至:https://blog.csdn.net/wushang_1314/article/details/91147550

function plotcylinder(u1,u2,color_a,r,alpha) % 根据空间两点画圆柱 % u1,u2 ——空间两点 % color ——颜色 % r ——半决 % alpha ——透明度 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)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有