DirectX9.0第一天

第一部分 基础知识

开始的时候复习一下向量

在D3DX库中有很多函数返回指向变换结果的指针。在大部分情况下,除非特别声明

叉积(叉乘):p = u*v = [(uyvz - uzvy),(uzvx-uxvz),(uxvy-vyux)]

矩阵:三个变化矩阵要特别注意

1.平移:

1000
0100
0010
xyz1
2.旋转

绕x旋转a弧度

1000
0cosasina0
0-sinacosa0
0001
绕y旋转a弧度

cosa0-sina0
0100
sina0cosa0
0001
绕z旋转a弧度

cosasina00
-sinacosa00
0010
0001
3.缩放

x000
0y00
00z0
0001



平面:这里有一句不是很明白哈,如果平面的法向量的模为1,则d=-np0给出了坐标原点到该平面最短的有符号距离。

在代码中代表平面的时候用四个变量便可以了,期中三个变量构成了法向量n,d = -n*p0

平面的变换可以将(n,d)看作4D向量并与所期望的变换矩阵的逆转置相乘来实施变换

这里推导一下哈:

以下是参考师兄的博客的,师兄的是对法向量的转变的

先要说明一个前置知识:

1矩阵的点乘是在两个矩阵具有同样大小的基础上。

2向量(注意是向量)的点乘等于后一个向量的置换与前一个向量相乘,即

A·B = AB’

设某切向量为T,某法向量为N。 自然有N·T = 0

另变换矩阵为M,设法向量的变化矩阵为G

有(NG)·(TM) = 0

有(NG)·(TM) = (NG)(TM)' = NGM'T' = 0      (1)

因为N·T = 0

有NT‘ = 0

到这里有一点小跳跃当GM’ = I 时 才能使 (1)式成立

于是乎G = (M')^-1

即逆转置

下面是我自己推导的平面的

平面的向量为(a,b,c,d)

其中d = -n·p0

n = (a,b,c)

设变换后d' = -n'点p0‘

设变换矩阵为M

由上得

有d' = -(n(M’)^-1)·(p0M)

有d‘ = -(n(M')^-1M'p0'

有d' = -(np0')

d' = -n·p0

d' = d



空间中的点到平面上最近的哪一点为q = p + (-kn)

k为点p到平面的最短有符号距离

k = n*p+d


射线:

射线的参数方程:p(t) = p0+tu

p0为射线的起点,u为射线的方向,t的定义域为[0,正无穷)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值