3D 坐标变换 公式 推导
[ 更新 ]更好的方法见[用抽象代数讨论仿射变换和仿射空间中的坐标变换] ,以下是之前的内容。
以下的推导 结论是正确的,可是过程有点懵。
以下使用行向量:
e1=(1,0,0)
e2=(0,1,0)
e3=(0,0,1)
i, j, k是三个线性无关的向量。它们在e1,e2,e3坐标系下的坐标也记作i,j,k
i’, j’, k’是三个线性无关的向量,它们在e1,e2,e3坐标系下的坐标也记作i’, j’, k’
已知点P相对于Oijk的坐标是(x,y,z)
则点P相对于O’i’j’k’的坐标:
若B是正交矩阵。就不用求逆了,求转置就是。
特别地,
若O=(0,0,0),i=e1,j=e2,k=e3,则
推导
设点P相对于O’i’j’k’的坐标是(x’,y’,z’)
补充
记 B=AM(M=A−1B),即M是把i,j,k变换到i’,j’,k’的变换矩阵,
特别地。
若O=(0,0,0),i=e1,j=e2,k=e3,则
应用
实际应用中,用到的一般都是O=(0,0,0),i=e1,j=e2,k=e3的特殊情况。
这是由于:问题在描写叙述O’i’j’k’坐标的时候一般都是相对于Oikj而言的;
这里没有绝对的坐标系,仿射空间中不论什么一个点都看以看成(0,0,…0),随意一组基都能够看成{(1,0,…0), (0,1,…0), (0,0,…1)}。
换个角度理解
点P不动。把坐标架O,i,j,k变换到O’,i’,j’,k’,则变换矩阵是(MO′01), M=B,
就相当于 坐标架不动,点P逆着上述变换,变换到新坐标。
变换的两种方式
①先原地变换坐标架,再平移坐标架
②先平移坐标架。再相对平移之后的原点变换坐标架
X能够看成先平移回原点,相对原点 原地变换 坐标架,再平移过去:
注意到 X 与 [B001] 是类似矩阵,正是同一(4维的)线性变换在不同基下的坐标表示。1
3D 坐标变换 公式 推导的更多相关文章
- 3D旋转矩阵的推导过程
3D旋转矩阵的推导过程 包含平移的线性变换称作仿射变换,3D中的仿射变换不能用 3 x 3 矩阵表达,必须使用4 x 4矩阵. 一般来说,变换物体相当于以相反的量变换描述这个物体的坐标系.当有多个变换 ...
- 2d,3d中旋转推导
二维绕原点旋转,其实点为(x,y),旋转角度为黄色标注的角度. 推导过程如下: x' = r cos(al+be); y' = r sin(al+be);x '= rcosalcosbe-rsinal ...
- 3D UI场景中,把XY平面的尺寸映射为屏幕像素的数学模型推导
概述及目录(版权所有,请勿转载,欢迎读者提出错误) 之前用kanzi的3D UI引擎和cocos-2d的时候都有遇到过这个问题,就如何把3D场景中的XY平面的尺寸映射为与屏幕像素一一对应的,即XY平面 ...
- DirectX12 3D 游戏开发与实战第三章内容
变换 学习目标 理解如何使用矩阵表示线性变换和仿射变换 学习对几何体进行缩放.旋转和平移的坐标变换 根据矩阵之间的乘法运算性质,将多个变换矩阵合并为一个单独的净变换矩阵 找寻不同坐标系之间的坐标转换方 ...
- OpenGL坐标变换及其数学原理,两种摄像机交互模型(附源程序)
实验平台:win7,VS2010 先上结果截图(文章最后下载程序,解压后直接运行BIN文件夹下的EXE程序): a.鼠标拖拽旋转物体,类似于OGRE中的“OgreBites::CameraStyle: ...
- 3D几何变换
3D点:非齐次坐标x(x,y,z) (x表示向量矢量) 齐次坐标:x~=(x~,y~,z~,w~)=w~(x,y,z,1)=w~x~ 增广矢量:x—=(x,y,z,1) w~=0时,齐 ...
- WPF实现3D翻转的动画效果
1.前端代码实现 1.1 原理见代码注析 <Grid MouseDown="Grid_MouseDown"> <Viewport3D> <Viewpo ...
- 用CATransform3D实现3D效果和制作简单3D动画
我们先来看下CATransform3D的头文件 struct CATransform3D { CGFloat m11, m12, m13, m14; CGFloat m21, m22, m23, m2 ...
- Android OpenGL ES(十二):三维坐标系及坐标变换初步 .
OpenGL ES图形库最终的结果是在二维平面上显示3D物体(常称作模型Model)这是因为目前的打部分显示器还只能显示二维图形.但我们在构造3D模型时必须要有空间现象能力,所有对模型的描述还是使用三 ...
随机推荐
- elk搭建实战
1 安装elasticsearch 1.1安装elasticsearch 相关中文文档:https://es.xiaoleilu.com 下载:从https://www.elastic.co/down ...
- Characters_of_the_Three_Kingdoms - 三国人物结构化数据
Characters_of_the_Three_Kingdoms - 三国人物结构化数据 三国人物结构化数据 为什么会有这个项目 需求1:摆脱网上那些长篇累牍的文章: 需求2:只是想简单查看下人物姓甚 ...
- Gitlab基本管理(二)
一. Gitlab分支 1. 切换到项目位置. 2. 创建一个项目的一新分支. mike@win10-001 MINGW64 ~/cookbook/cookbook (master) $ git br ...
- ubuntu下让进程在后台运行
(1)输入命令: nohup 你的shell命令 & (2)回车,使终端回到shell命令行: (3)使用第二第三条,完全屏蔽掉信号 用disown -h jobspec来使某个作业忽略HUP ...
- 解决win10下git闪退
网上找了很多方法,只有这个是有用的,记录下来. 问题描述 在git官网下载了软件,安装之后,git Bash出现闪退现象,同时在当前文件夹下面会生成一个mintty.exe.stackdump的文件. ...
- java自定义类
引用数据类型(类) 引用数据类型分类 提到引用数据类型(类),其实我们对它并不陌生,之前使用过的Scanner类.Random类. 我们可以把类的类型为两种: 第一种,Java为我们提供好的类,如Sc ...
- java学习助手
感谢大家使用Java学习助手! 打一开始,这应用就是全开源,希望大家自觉遵循开源协议,还Android开发一片净土(国内的情况你懂的) 接下来都不会更频繁更新文章,大家更应该把注意力放在基础的模块那里 ...
- 【BZOJ 2656】2656: [Zjoi2012]数列(sequence) (高精度)
2656: [Zjoi2012]数列(sequence) Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 1499 Solved: 786 Descri ...
- Linux下解压缩 - 中文解决方案
命令行工具 Unar 以及 Lsar 安装:sudo apt-get install unar: 预览压缩包:lsar example.zip 解压缩:unar example.zip 指定位置解压: ...
- codevs 1392 合并傻子
1392 合并傻子 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 在一个园形操场的四周站着N个傻子,现要将傻子有 ...