3D数学--学习笔记(三):3D中绕任意轴的旋转

本文转自:http://blog.youkuaiyun.com/zjc_game_coder/article/details/24269757

不要小看我们在Unity或者3DMAX中的一个简单的旋转物体操作。

——题记

这里需要用到的知识:向量运算(数量积,叉乘,加减)、矩阵基本运算。

让我们导出绕任意轴n旋转角度Θ的矩阵。

即 vR(n.Θ) = v ' 。

只要能用v,n,Θ表示出v ' 即可,然后再求出基向量。

方法如下:(看图)

说明:

1.向量n是单位向量

2.VII向量和VT向量是V向量的分向量,即满足:V = VII + VT   ①,同时,由于VII平行于n向量,它也是V在n上的投影,于是有 VII = (V *n)n  ②(与物理上的求做功大小是一样理解的!)。

3.V ' 向量是 V向量 绕 n旋转后得到的向量,虚线表示,同理VT ' 。

4.W向量是垂直于V,VII所在平面的向量,这是引入的,为了便于讨论问题,其长度 =  V 向量模长。W是VT绕n旋转90°得到的,故有:W = n X VT   ③。(力矩知识哈!)

下面开始求解:

由旋转后,可以得到:VT ' = VT * COSΘ + W * SinΘ     ④(三角函数知识哈..超级有用的玩意儿)

由②、①可推出 VT = V - (V * n)n  。⑤

由①、②、③可得: W = n X v。⑥

将⑤、⑥带入 ④ 可得:

v ' = (v - (v*n)n)cosΘ + (n x v)sinΘ +(v * n)n

现在已经得到v ' 与v,n,Θ的关系了,于是,下一步就是得到基向量然后再构造矩阵,哈哈。

第一个基向量为:

p  = [1  0  0]

p ' = (p - ( p * n )n)cosΘ + (n x p)sinΘ + (p * n)n

然后按照矩阵运算方法即可,还算简单吧!

最后得到:


另外两个基向量的方法类似,同时我们也就得到了R(n,Θ) :


### 关于DFT(离散傅里叶变换)的学习资料与笔记 #### 1. **基础概念** 离散傅里叶变换 (Discrete Fourier Transform, DFT) 是一种用于将时域信号转换为频域表示的方法。其核心思想在于,任何有限长度的离散信号可以被分解为一系列正弦波分量的加权和[^2]。这种技术广泛应用于数字信号处理、图像处理以及通信等领域。 #### 2. **推荐学习资源** - **知乎专栏** 文章链接提供了直观且易于理解的内容,适合初学者快速掌握基本概念。例如,《傅里叶分析之掐死教程》通过生动的例子和动画展示了如何从几何角度理解傅里叶变换的工作机制。此外,另一篇知乎文章也深入探讨了实信号的特及其对应的DFT结果——即共轭对称[^3]。 - **教科书级参考资料** 对于更严谨的学习需求,《数字图像处理》中的相关内容覆盖了理论推导过程,并辅以实际应用案例说明[^1]。另外,在线文档如《Fourier Tutorial by Steve Lehar》同样值得阅读,因为它不仅讲解了数学背景还涉及到了物理意义层面的理解。 - **学术论文和技术报告** 西安电子科技大学发布的PDF文件详细介绍了DFT算法的具体实现步骤及优化技巧[^4]。这份材料对于想要深入了解内部工作机制的人士非常有帮助。 #### 3. **Python代码实践指南** 以下是基于NumPy库的一个简单版本DFT实现: ```python import numpy as np def dft(x): N = len(x) n = np.arange(N).reshape((N, 1)) k = np.arange(N).reshape((1, N)) Wn = np.exp(-2j * np.pi * k * n / N) Xk = np.dot(Wn, x.reshape((N, 1))) return Xk.flatten() # 测试数据 signal = np.array([0, 1, 2, 3]) result = dft(signal) print("原始信号:", signal) print("DFT 结果:\n", result) ``` 此脚本定义了一个名为`dft()` 的函数来计算输入向量 `x` 的离散傅立叶变换值 。注意这里我们手动构建了旋转因子矩阵Wn并通过矩阵乘法完成整个运算流程。 #### 4. **重要质概述** | 序列 | 质名称 | 描述 | |------|------------------------|----------------------------------------------------------------------| | | 线质 | 若有两个序列分别经过DFT,则它们任意线组合后的DFT等于各自单独做DFT后再按相同方式组合的结果 | | | 循环移位质 | 当一个周期的序列发生循环平移时,仅影响相角而不改变幅度谱分布情况 | | | 时间反转质 | 如果把时间反向排列得到新序列y[n]=x[-n],那么Y(k)=X*(N-k),其中*代表复数共轭操作 | 以上表格列举了几种常见的DFT属描述。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值