DirectX 矩阵

 

基础:

下标:第一个下标为该元素所在行的索引,第二个下标为该元素所在列的索引。如下图所示

image

 

行向量和列向量:只有单行的向量称为行向量,只有单列的称之为列向量。

相等

维数和元素都相等

数乘(与标量相乘)

每一个元素与标量相乘

加法(矩阵+矩阵=矩阵)

两个矩阵相应元素想加所得的矩阵,必须维数相等

矩阵乘法(矩阵*矩阵=矩阵)

条件:A的列数必须等于B的行数

定义:A(m*n) B(n*p) 则乘积AB有意义,且等于一个矩阵C(m*p),其中乘积C[i][j] = A的第i个行向量 * B的第j个列向量的点积。

单位矩阵(类似于标量1与矩阵相乘不改变矩阵)

定义:除主对角线上的元素为1外,其它全为0

image

单位阵可以作为一个乘法单位(multiplicative identity) MI = IM = M

即,用一个单位矩阵与某一个矩阵相乘,不改变该矩阵。而且,某一矩阵与单位矩阵相乘,是矩阵简洁可交换的特例,单位矩阵对于标量可以认为是矩阵中的”1”

证明:

image

逆矩阵(矩阵的乘法逆运算)

  • 只有方阵才有逆矩阵
  • 一个n*n的矩阵M的逆矩阵也是一个n*n的矩阵用clip_image002[4]表示
  • 并非所有方阵都有逆矩阵
  • 一个矩阵与其逆阵的乘积为单位阵,当一个矩阵与其逆矩阵相乘时,可交换相乘次序

 

  • 矩阵的转置

  • 通过交换矩阵的行和列

image

D3DX矩阵

编程D3DX程序时,我们通常只使用4*4的矩阵和1*4的行向量。注意,使用这两种维护的矩阵,意味着以下矩阵乘法是有意义的:

向量-矩阵乘法。若v为1*4的行向量,T为4*4的矩阵,则乘积vT有意义,且其结果为1*4的行向量

矩阵矩阵乘法:若T和R都为4*4的矩阵,则乘积TR和RT有意义,其结果为4*4的矩阵。注意TR和RT不一定相等。

 

 

基本变换

1*4向量在3d坐标系中点表示方法p = (p1,p2,p3,0

1*4向量在3d坐标系中向量的表示方法 v = (v1,v2,v3,1) 扩展后的向量称为齐次向量,因为齐次向量即可以表示点,又可以表示向量

向量处于齐次空间:

image

 

平移矩阵

要想将向量(x,y,z,1)沿x轴平稳px单位,y轴平移py个单位,z轴平移pz个单位 我们只需要将该向量与以下矩阵相乘

image

用于创建平移矩阵的D3DX函数为D3DXMatrixTranslation

旋转矩阵

我们可以用如下3个矩阵分别表示绕x,y,z轴旋转θ弧度

image

image

image

旋转矩阵R的逆矩阵与其转置相等,即

clip_image002[6]

比例变的矩阵

比例变的

如果让一个向量沿x,y,z轴分别放大qx,qy,qz倍,可令该向量与如下矩阵相乘

image

Dx中的函数为

image

几何变的的组合

矩阵变换的一个最关键的优点是,可借助矩阵乘法将几种变换组合为一个变换矩阵

向量变换的一些函数

D3DXVerc3TransformCoord函数对点进行变换,并假定向量第4个分量为1

D3DXVec3TransformNormal用于向量变换,并假定向量第4个分量为0

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/544881.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么阿里内部不允许用Executors创建线程池?

来源:cnblogs.com/zjfjava/p/11227456.html1. 通过Executors创建线程池的弊端在创建线程池的时候,大部分人还是会选择使用Executors去创建。下面是创建定长线程池(FixedThreadPool)的一个例子,严格来说,当使…

RabbitMQ中7种消息队列和保姆级代码演示!

blog.csdn.net/qq_32828253/article/details/110450249七种模式介绍与应用场景简单模式(Hello World)做最简单的事情,一个生产者对应一个消费者,RabbitMQ相当于一个消息代理,负责将A的消息转发给B应用场景:…

CyclicBarrier:人齐了,老司机就发车了!

作者 | 王磊来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)上一篇咱讲了 CountDownLatch 可以解决多个线程同步的问题,相比于 join 来说它的应用范围更广,不仅可…

iOS平台快速发布HT for Web拓扑图应用

iOS平台一直是封闭的生态圈,iOS开发者要缴纳年费加入开发者计划才可进行iOS平台的APP开发测试,所开发的APP需要上传到App Store经过苹果审核以后才可对外发布。如果要开发企业内部应用,则要缴纳更高的费用购买企业账户才可以。 对于现在火如荼…

事务注解 @Transactional 失效的3种场景及解决办法

Transactional失效场景第一种 Transactional注解标注方法修饰符为非public时,Transactional注解将会不起作用。例如以下代码,定义一个错误的Transactional标注实现,修饰一个默认访问符的方法:/*** author zhoujy**/ Component pub…

Android的多语言实现

文章转自:http://blog.csdn.net/barryhappy/article/details/23436527 以前就知道Android的多语言实现很简单,可以在不同的语言环境下使用不同的资源什么的,但是一直没有实际使用过。 最近公司的项目要用到多语言于,是就研究了一下…

厉害了,自己手写一个Java热加载!

热加载:在不停止程序运行的情况下,对类(对象)的动态替换。Java ClassLoader 简述Java中的类从被加载到内存中到卸载出内存为止,一共经历了七个阶段:加载、验证、准备、解析、初始化、使用、卸载。接下来我们…

公司新来的小可爱,竟然把内存搞崩了!

ThreadLocal使用不规范,师傅两行泪组内来了一个实习生,看这小伙子春光满面、精神抖擞、头发微少,我心头一喜:绝对是个潜力股。于是我找经理申请亲自来带他,为了帮助小伙子快速成长,我给他分了一个需求&…

理解Node.js的event loop

为什么80%的码农都做不了架构师?>>> 关于Node.js的第一个基本概念是I/O操作开销是巨大的: 所以,当前变成技术中最大的浪费来自于等待I/O操作的完成。有几种方法可以解决性能的影响: 同步方式:按次序一个…

硬核|定时任务的10种实现方案,满足你的不同需求!

最近有几个读者私信给我,问我他们的业务场景,要用什么样的定时任务。确实,在不用的业务场景下要用不同的定时任务,其实我们的选择还是挺多的。我今天给大家总结10种非常实用的定时任务,总有一种是适合你的。一. linux自…

Semaphore自白:限流器用我就对了!

作者 | 王磊来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)大家好,我是 Semaphore,我的中文名字叫“信号量”,我来自 JUC 家族(java.uti…

Android Activity和Intent机制学习笔记

文章转自:http://www.cnblogs.com/feisky/archive/2010/01/16/1649081.html Activity Android中,Activity是所有程序的根本,所有程序的流程都运行在Activity之中,Activity具有自己的生命周期(见http://www.cnblogs.com…

线程的故事:我的3位母亲成就了优秀的我!

作者 | 王磊来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)声明:本故事纯属虚构,如果雷同那就是真事了!大家好,我是线程,我的…

7种内存泄露场景和13种解决方案!

前言Java通过垃圾回收机制,可以自动的管理内存,这对开发人员来说是多么美好的事啊。但垃圾回收器并不是万能的,它能够处理大部分场景下的内存清理、内存泄露以及内存优化。但它也并不是万能的。不然,我们在实践的过程中也不会出现…

Android Sqlite

2019独角兽企业重金招聘Python工程师标准>>> 一、http://lansuiyun.iteye.com/blog/1246430 good! 二、增加新表时,需要更新版本号。 三、Android 使用自定义cursorAdapter: http://blog.csdn.net/buaalei/article/details/6064792 good! 四…

小黑小波比.git clone报错解决方案

2019独角兽企业重金招聘Python工程师标准>>> zmzpzmzp1:~/data$ git clone git192.168.199.199:zmw/s910.git 正克隆到 s910... ssh: connect to host 192.168.199.199 port 22: Connection refused fatal: Could not read from remote repository.Please make sure…

一个sql注入直接把我们服务搞挂了

前言最近我在整理安全漏洞相关问题,准备在公司做一次分享。恰好,这段时间团队发现了一个sql注入漏洞:在一个公共的分页功能中,排序字段作为入参,前端页面可以自定义。在分页sql的mybatis mapper.xml中,orde…

reinterpret_cast和static_cast的总结

主要参考:http://blog.csdn.net/querw/article/details/7387594 http://www.cnblogs.com/jerry19880126/archive/2012/08/14/2638192.html http://www.cnblogs.com/ider/archive/2011/07/30/cpp_cast_operator_part3.htmlhttp://bbs.csdn.net/topics/390249118 关键…

Java双刃剑之Unsafe类详解

前一段时间在研究juc源码的时候,发现在很多工具类中都调用了一个Unsafe类中的方法,出于好奇就想要研究一下这个类到底有什么作用,于是先查阅了一些资料,一查不要紧,很多资料中对Unsafe的态度都是这样的画风&#xff1a…

Java知多少(66)输入输出(IO)和流的概述

输入输出(I/O)是指程序与外部设备或其他计算机进行交互的操作。几乎所有的程序都具有输入与输出操作,如从键盘上读取数据,从本地或网络上的文件读取数据或写入数据等。通过输入和输出操作可以从外界接收信息,或者是把信…