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小技巧之:绕任意空间轴旋转三维图形相关推荐

  1. matlab序列负轴,MATLAB中雷达信号回波图为什么会有负半轴

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:MATLAB中雷达信号回波图为什么会有负半轴?哪条产生 问题详情:re, plot(0:ts:(16*N-1)*ts,s_pc), ...

  2. python三维图视角旋转_如何在python中旋转3d图? (或作为动画)使用鼠标旋转三维视图...

    我有这段代码,其中包含一个3D图.我在Spyder中运行代码;我想知道是否可以使这个绘图旋转(360度)并保存. 谢谢! P.s.对不起,如果这是一个愚蠢的问题,但我是Python的newby.如何在 ...

  3. 怎么查看CAD建筑图纸呢?有什么CAD看图的小技巧吗?

    怎么查看CAD建筑图纸呢?有什么CAD看图的小技巧吗?答案当然是肯定的!在此之前,我们先来了解一下CAD图纸有什么特点吧! CAD图纸:CAD即计算机辅助设计(CAD-Computer Aided D ...

  4. Win10 UWP开发中的重复性静态UI绘制小技巧 1

    Win10 UWP开发中的重复性静态UI绘制小技巧 1 原文:Win10 UWP开发中的重复性静态UI绘制小技巧 1 介绍 在Windows 10 UWP界面实现的过程中,有时会遇到一些重复性的.静态 ...

  5. excel删除空行_办公中常用的6个Excel小技巧,不会你就OUT了!

    原标题:办公中常用的6个Excel小技巧,不会你就OUT了! 今天小编给大家分享几个EXCEL办公中比较常用的小技巧,赶紧跟我一起来学习下吧! 01 将所有数据上调 在某些情况下,我们希望将表格中所有 ...

  6. 深度linux运行windows游戏,在deepin linux系统中手动安装windows游戏的小技巧

    本文介绍在deepin linux系统中手动安装windows游戏的小技巧.其实现在wine很好用了,基本dx9的游戏都能玩,但是有些RA2则效果一般,不是很好.关于deepin-wine的版本低有些 ...

  7. 11个教程中不常被提及的JavaScript小技巧

    Java面试笔试面经.Java技术每天学习一点 Java面试 关注不迷路 作者:冷星 来源:https://segmentfault.com/a/1190000018897633 这次我们主要来分享1 ...

  8. Python中四个不常见的小技巧

    1. 引言 在编程界,每个人都希望自己可以写出世界上最好的代码,其实最好的代码往往需要具备最好的代码质量.勤能补拙,善于总结往往可以快速提升大家的编程技巧. 本文重点对日常中不常使用的四个Python ...

  9. Excel表格中一些你不知道的鼠标双击实用小技巧

    Excel表格中一些你不知道的鼠标双击实用小技巧 目录 Excel表格中一些你不知道的鼠标双击实用小技巧 1.鼠标双击自动填充整列公式, 鼠标放在单元格右下角,鼠标指针变成十字时双击鼠标右键,整列汇总 ...

最新文章

  1. 禁止北京地区IP访问站点
  2. linux efi 双系统,EFI+GPT模式下Linux与Windows双系统要诀
  3. java调度:(六)quarts_cron表达式
  4. 计算机辅助审计学心得,审计学心得体会2000字
  5. adb failed to start daemon 彻底解决
  6. H5实例 移动端页面练习
  7. 夏季学期软工综合实践小记(二)
  8. Android开发手记(23) Notification
  9. 解决 Invalid character found in method name. HTTP method names must be tokens 异常信息
  10. linux 中文件的操作
  11. echarts自动排序_百度echarts 排序问题
  12. 一、从0开始——黑客学习路线
  13. java web 教学视频_超全面的JavaWeb视频教程
  14. “汇新杯”青年创客专项赛介绍
  15. Matlab 可视化世界地图,matlab绘制世界地图的脚本
  16. vs2008+vss2005实现代码管理
  17. Android--- Drawer and Tab Navigation with ViewPager
  18. 苹果MACOS电脑修改mac地址
  19. 银行放贷冲动不强:7折房贷利率料最早明年现身
  20. 频率控制方式及优缺点总结

热门文章

  1. 布莱克斯科尔斯模型(三)热传导方程的解析解
  2. 使用c语言实现复数运算的程序,用C语言实现的复数运算程序设计
  3. 二叉树的遍历(递归、非递归)
  4. 微信公众号多域名回调系统1.0发布
  5. Linux命令详解(4)-vim命令(一)vim命令选项
  6. latex输入单双引号
  7. 武汉大学计算机学院李明,第一届CSIG全国SLAM技术论坛成功举办
  8. 解析xml的几种方法,他们的原理,比较 以及JAVA源码
  9. JAVA 网络编程中TCP和UDP
  10. math.h数学函数