三维变换的一个应用之组合变换

这种组合变换在实际开发当中应用很多,所以知道原理可以举一反三

第一,你要明白矩阵是有结合律的

第二,你要知道旋转矩阵 绕x轴 绕y轴 绕z轴时,这个旋转矩阵是三个形式的矩阵

第三,你要明白为什么我们在旋转一个模型时一定要把它先移回原点,当然了,这个旋转矩阵有关

小应用:

对三角形(中心点(75,93,1))以中心点左旋转90度,要经过一下几步:

1.将三角形的中心移动到原点,也即是相反方向(75,93,1)个单位

2.使用x轴的选装矩阵

3.将中心点移回原来的位置

1  0 -75         cos90  -sin90  0         1  0  75        x

0  1 -93  右乘 sin90   cos90   0 右乘  0  1  93 右乘  y

0  0 -1                0         0    1         0 0    1         1

时间: 2024-10-11 12:26:57

三维变换的一个应用之组合变换的相关文章

OpenCV 入门示例之五:一个复杂点的变换

前言 前文介绍了一个简单的变换.需要注意的是,很多时候,输出和输入图像的格式是不同的( 大小,深度,通道 ).在本文将展示的程序中,对图像进行了缩放( 使用cvPyrDown 函数 ),这种情况下需要先定制好输出图像的格式,然后再将其与输入图像一起传递进缩放函数. 代码示例 1 // 此头文件包含图像IO函数的声明 2 #include "highgui.h" 3 // 此头文件包含基本的图像处理函数和高级计算机视觉算法 4 #include "cv.h" 5 6

理解离散傅立叶变换(一. 傅立叶的起源变换)

理解离散傅立叶变换(一) ------傅立叶变换的由来 关于傅立叶变换,不管是书本还是在网上可以非常easy找到关于傅立叶变换的描写叙述,可是大都是些故弄玄虚的文章,太过抽象.尽是一些让人看了就望而生畏的公式的罗列,让人非常难可以从感性上得到理解.近期.我偶尔从网上看到一个关于数字信号处理的电子书籍,是一个叫Steven W. Smith, Ph.D.外国人写的,写得非常浅显,里面有七章由浅入深地专门讲述关于离散信号的傅立叶变换.尽管是英文文档.我还是硬着头皮看完了有关傅立叶变换的有关内容,看了

每天一个设计模式之组合模式

作者按:<每天一个设计模式>旨在初步领会设计模式的精髓,目前采用javascript和python两种语言实现.诚然,每种设计模式都有多种实现方式,但此小册只记录最直截了当的实现方式 :) 原文地址是:<每天一个设计模式之组合模式> 欢迎关注个人技术博客:godbmw.com.每周 1 篇原创技术分享!开源教程(webpack.设计模式).面试刷题(偏前端).知识整理(每周零碎),欢迎长期关注! 如果您也想进行知识整理 + 搭建功能完善/设计简约/快速启动的个人博客,请直接戳the

一个基本的傅立叶变换例子

clear;clc; tempresult=[]; figure for i=1:6 filename=['ROISignals_sub_00' num2str(i) '_2000.mat']; data=importdata(filename); x=data(:,1); fs=2; % L=length(x); L=256; y1=fft(x,L); y2=fftshift(y1); mag=abs(y2); f=(0:L-1)*fs/L-fs/2; tempresult=[tempresu

组合变换

假设有一个立方体,这个立方体由8个顶点构成,我们希望将旋转.平移.缩放三个变换应用到这个立方体的每一个顶点.假设T为平移矩阵,S为缩放矩阵,R为旋转矩阵,Cij代表了立方的单个顶点,那么最简单的方式为: Cij*R*T*S.每个顶点都先乘以旋转矩阵,然后将结构在乘以平移矩阵,最后将结果乘以缩放矩阵. 但是在3D开发中,我们要考虑到性能问题,不能进行频繁的矩阵运算,我们就需要找到一种方式,将旋转. 平移和缩放三个变换矩阵变成一个矩阵.这样我们就从3次矩阵乘法运算变成了一次矩阵乘法运算.在这之前 我

[Swift] 如何用Swift做一个不错的按钮变换动画

汉堡按钮在 UI 设计中早已不是什么新鲜玩意儿了,但是某天我突然在 dribbble 上看到了这个酷炫的动画效果,效果真是棒棒哒!于是我决定把它在代码里实现一下. 先来看下 CreativeDash 团队做出来的原始动画效果: 我们可以看到 (看得我眼睛都花了),汉堡按钮 (也就是三条横线的那个)的上下两条线分别绕着自身最优的端点旋转了45°,变成了按钮里的 X ,中间的那个线则摇身一变,成了外面的圈圈.这个效果可以用 CAShapeLayer 实现,但是首先,我需要为这三条直线分别创建一个 C

opencv —— HoughLines、HoughLinesP 霍夫线变换(标准霍夫线变换、多尺度霍夫线变换、累积概率霍夫线变换)

霍夫线变换的原理 一条直线在图像二维空间可由两个变量表示,有以下两种情况: ① 在笛卡尔坐标系中:可由参数斜率和截距(k,b)表示. ② 在极坐标系中:可由参数极经和极角(r,θ)表示. 对于霍夫线变换,我们将采用第二种方式极坐标系来表示直线,因此直线的表达式可为: 化简便可得到: 对于(x0,y0),我们可以将通过这一点的所有直线统一定义为: 这就意味着每一对  代表一条通过点  的直线. 对于一个给定点   ,我们可以在直角坐标系中,绘出所有通过它的直线(θ 为 x 轴,r 为 y 轴).最

玩Linux桌面发现一个最佳的组合配置

其实前段时间玩Arch,其实不难,主要是太浪费时间配置折腾了,学到有用的东西太少,不能让我快速进入编程工作的状态,(真不知道有些人用Gentoo和Arch都能用出优越感了,就因为难安装和配置??)但是自己又想用个轻量快速的系统,不能像ubuntu那么臃肿,华而不实,但也不能太丑了.所以采用Lubuntu,这个比较轻量,不过它内置的DE是 LXDE的,需要换个DE,漂亮点的Gnome不错 1.其实壁纸很重要,一个好看的,适合的壁纸可以挽救一个DE. 2.DE嘛,其实Gnome不错,比较good l

用Matplotlib画三维图片的一个实例

from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np from matplotlib import cm fig=plt.figure() ax=fig.add_subplot(111,projection='3d') u=np.linspace(-1,1,100) x,y=np.meshgrid(u,u) z=x**2+y**2 ax.plot_surface(x,y