matlab中如何实现三维图像以指定角度旋转,坐标轴不变? 题主所说的在保持坐标轴不变的情况下,对图像进行特定角度的旋转,其实就是将图像按照某一固定轴旋转一定角度。MATLAB中可以通过rotate函数实现(区别于view和rotate3d,它们只改便3D图形的视角,并不旋转图像本身)。 首先,看一下如何对旋转轴进行刻画,一般有两种方式:以[
]表示的向量作为旋转轴,即笛卡尔形式(Cartesian candidates),示意图如下
以[
]表示的球坐标(spherical candidates)为的旋转轴,其中
为旋转轴在
平面投影与
正半轴的夹角,
为旋转轴与
平面所成夹角,示意图如下
其次,选定旋转轴的起始点[
],特定的旋转轴肯定是由一点和方向向量(direction,如上所述)唯一确定的,如果缺省的话,MATLAB将其默认为plotbox中心点。 最后,就是围绕旋转轴旋转多少角度的问题,习惯以
标记标记所要旋转的角度,那么rotate函数的语法规则为: h is the graphics object.direction is a two- or three-element vector that describes the axis of rotation.positive alpha is defined as the righthand-rule angle about the direction vector as it extends from the origin of rotation.origin is a three-element vector which describes the origin of the axis of rotation. 翻译成人话就是:h为待旋转的图像对象direction为以笛卡尔或球坐标表示的旋转轴,对应为3维和2维向量alpha 为旋转角度origin 表示旋转轴的起始点 简单看个例子: 效果图如下:
可以看到,第一张图为旋转前的原图,第二张和第三张分别按照笛卡尔形式和球坐标形式给出的绕同一旋转轴[1 1 1]旋转
后的效果图,最后一张为绕
轴旋转
。 PS.以上内容主要参考MATLAB强大的帮助文档,部分截图也出自源文档。作为一个学术界的搬运工,希望能帮到题主~ 附MATLAB关于rotate函数的官方注解(学渣英语不好,不想坑了题主,所以以上内容仅供参考)rotate Rotate objects about specified origin and direction.rotate(H,[THETA PHI],ALPHA) rotates the objects with handles H through angle ALPHA about an axis described by the 2-element direction vector [THETA PHI] (spherical coordinates). All the angles are in degrees. The handles in H must be children of the same axes.THETA is the angle in the xy plane counterclockwise from the positive x axis. PHI is the elevation of the direction vector from the xy plane (see also SPH2CART). Positive ALPHA is defined as the righthand-rule angle about the direction vector as it extends from the origin.rotate(H,[X Y Z],ALPHA) rotates the objects about the direction vector [X Y Z] (Cartesian coordinates). The direction vector is the vector from the center of the plot box to (X,Y,Z).rotate(…,ORIGIN) uses the point ORIGIN = [x0,y0,z0] as the center of rotation instead of the center of the plot box. 如果想要对复杂曲面(包含数据较多)旋转或者做其他放射变换的话请用hgtransform(变换矩阵可以用makehgtform构建) 这样的好处(在比较新的版本)是只需要向GPU传递一个4×4的变换矩阵由GPU对图像重新渲染,而rotate的处理方式是提取数据并对数据计算(在内存中用CPU计算)之后重新交由GPU渲染,当被旋转对象数据量较大时性能显然不如前者,这一点尤其能在连续变换的动画中体现出来 视频讲解MATLAB实例讲解绘制多个图片堆叠图
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/29079.html