matlab中如何转动三维图_MATLAB小技巧之:绕任意空间轴旋转三维图形
x=1:0.1:10;
y=sin(x);
c=cosd(15);
s=sind(15);
X=x*c-y*s;
Y=x*s+y*c;
plot(x,y)
hold on
plot(X,Y)
这就是新的坐标:
Xr=X*c-Y*s;
Yr=X*s+Y*c;
这样保存:
xlswrite('Newdata',Xr,'Sheet1','A1:A2716');
xlswrite('Newdata',Yr,'Sheet1','B1:B2716');
-----------------------------------------------------------
MATLAB小技巧之七:绕任意空间轴旋转三维图形
2011年10月25日 16:05:51
本小技巧原帖在:http://www.matlabsky.com/thread-18841-1-1.html
在计算图形学中,会经常涉及两种变化:
一是:三维几何变换。就是在同一个坐标系中,对图形进行旋转,缩放,平移等,其中任意轴旋转比较麻烦!
二是:三维坐标变换。就是在不同的坐标系中观察同一物体,从一个坐标系的坐标转换在另外一个坐标系的坐标。比如我在绘制三维图形的时候有事需要建立局部坐标系,那么这里就涉及到全局坐标系和局部坐标系的数据转换了。
坐标变换比几何变化复杂很多,这次不讨论哦。另外一个复杂的变换可以通过一些简单的变化组成,比如任意轴旋转就可以分解为平移、绕坐标轴旋转完成。
关于具体的理论推导我们也不讨论了,感兴趣的朋友可以查看相关《计算机图形学》教材。至于平移和缩放就更加简单了,只要右乘一个变换矩阵(矩阵的内容请查看相关书籍)就可以。下面我给出图形绕任意三维轴旋转的MATLAB代码。
clc
clear
close all
% 随机生成转轴通过的点
origin=rand(1,3)*10;
% 随机生成转轴方向
direct=rand(1,3)*10;
% 随机生成旋转角度
theta=rand*5;
[x,y,z]=peaks;
%% 图形比较
% 使用MATLAB自带rotate函数
figure
mesh(x,y,z);
hold on
h=mesh(x,y,z);
% rotate函数中角单位是角度
rotate(h,direct,rad2deg(theta),origin)
title('使用MATLAB自带rotate函数')
% 使用自己编写的rot3d函数
figure
mesh(x,y,z)
hold on
P=[x(:),y(:),z(:)];
Pr=rot3d(P,origin,direct,theta);
xr=reshape(Pr(:,1),size(x));
yr=reshape(Pr(:,2),size(x));
zr=reshape(Pr(:,3),size(x));
mesh(xr,yr,zr);
title('使用自己编写rot3d函数')
%% 数据比较
% 使用MATLAB自带rotate函数
% 由于该函数直接将图形旋转,如果想得到旋转之后的数据
% 此时可以使用get函数直接从图形的xdata,ydata和zdata属性中获取
xq=get(h,'xdata');
yq=get(h,'ydata');
zq=get(h,'zdata');
% 使用自己编写的rot3d函数
% 该函数自动返回旋转的数据而不是图形
% 也就是上面的xr,yr,zr
% 现在比较两组数据是否一致
disp('坐标Y的最大差距')
max(max(abs(yq-yr)))
disp('坐标X的最大差距')
max(max(abs(xq-xr)))
disp('坐标Z的最大差距')
max(max(abs(zq-zr)))
我们下面验证下我们的效果,MATLAB中提供了rotate函数进行图形旋转,但是可惜的是不会返回旋转后的坐标数据。
function Pr=ro
matlab中如何转动三维图_MATLAB小技巧之:绕任意空间轴旋转三维图形相关推荐
- matlab序列负轴,MATLAB中雷达信号回波图为什么会有负半轴
公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:MATLAB中雷达信号回波图为什么会有负半轴?哪条产生 问题详情:re, plot(0:ts:(16*N-1)*ts,s_pc), ...
- python三维图视角旋转_如何在python中旋转3d图? (或作为动画)使用鼠标旋转三维视图...
我有这段代码,其中包含一个3D图.我在Spyder中运行代码;我想知道是否可以使这个绘图旋转(360度)并保存. 谢谢! P.s.对不起,如果这是一个愚蠢的问题,但我是Python的newby.如何在 ...
- 怎么查看CAD建筑图纸呢?有什么CAD看图的小技巧吗?
怎么查看CAD建筑图纸呢?有什么CAD看图的小技巧吗?答案当然是肯定的!在此之前,我们先来了解一下CAD图纸有什么特点吧! CAD图纸:CAD即计算机辅助设计(CAD-Computer Aided D ...
- Win10 UWP开发中的重复性静态UI绘制小技巧 1
Win10 UWP开发中的重复性静态UI绘制小技巧 1 原文:Win10 UWP开发中的重复性静态UI绘制小技巧 1 介绍 在Windows 10 UWP界面实现的过程中,有时会遇到一些重复性的.静态 ...
- excel删除空行_办公中常用的6个Excel小技巧,不会你就OUT了!
原标题:办公中常用的6个Excel小技巧,不会你就OUT了! 今天小编给大家分享几个EXCEL办公中比较常用的小技巧,赶紧跟我一起来学习下吧! 01 将所有数据上调 在某些情况下,我们希望将表格中所有 ...
- 深度linux运行windows游戏,在deepin linux系统中手动安装windows游戏的小技巧
本文介绍在deepin linux系统中手动安装windows游戏的小技巧.其实现在wine很好用了,基本dx9的游戏都能玩,但是有些RA2则效果一般,不是很好.关于deepin-wine的版本低有些 ...
- 11个教程中不常被提及的JavaScript小技巧
Java面试笔试面经.Java技术每天学习一点 Java面试 关注不迷路 作者:冷星 来源:https://segmentfault.com/a/1190000018897633 这次我们主要来分享1 ...
- Python中四个不常见的小技巧
1. 引言 在编程界,每个人都希望自己可以写出世界上最好的代码,其实最好的代码往往需要具备最好的代码质量.勤能补拙,善于总结往往可以快速提升大家的编程技巧. 本文重点对日常中不常使用的四个Python ...
- Excel表格中一些你不知道的鼠标双击实用小技巧
Excel表格中一些你不知道的鼠标双击实用小技巧 目录 Excel表格中一些你不知道的鼠标双击实用小技巧 1.鼠标双击自动填充整列公式, 鼠标放在单元格右下角,鼠标指针变成十字时双击鼠标右键,整列汇总 ...
最新文章
- 禁止北京地区IP访问站点
- linux efi 双系统,EFI+GPT模式下Linux与Windows双系统要诀
- java调度:(六)quarts_cron表达式
- 计算机辅助审计学心得,审计学心得体会2000字
- adb failed to start daemon 彻底解决
- H5实例 移动端页面练习
- 夏季学期软工综合实践小记(二)
- Android开发手记(23) Notification
- 解决 Invalid character found in method name. HTTP method names must be tokens 异常信息
- linux 中文件的操作
- echarts自动排序_百度echarts 排序问题
- 一、从0开始——黑客学习路线
- java web 教学视频_超全面的JavaWeb视频教程
- “汇新杯”青年创客专项赛介绍
- Matlab 可视化世界地图,matlab绘制世界地图的脚本
- vs2008+vss2005实现代码管理
- Android--- Drawer and Tab Navigation with ViewPager
- 苹果MACOS电脑修改mac地址
- 银行放贷冲动不强:7折房贷利率料最早明年现身
- 频率控制方式及优缺点总结