游戏开发论坛

 找回密码
 立即注册
搜索
查看: 15144|回复: 49

关于变换矩阵的行列性(不懂请勿乱选)

[复制链接]

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2008-5-3 18:40:00 | 显示全部楼层 |阅读模式
关于变换矩阵的行列性,
你喜欢哪一种

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-5-3 18:51:00 | 显示全部楼层

Re:关于变换矩阵的行列性(不懂请勿乱选)

以前看D3D的时候,就觉得他的顺序不好。
写4D引擎的时候,使用了数学标准的列向量。

刚写3D引擎的时候,也使用了列向量。
后来改了,我怕shader里面规定非要列向量。

实际上呢,shader正好相反,shader中是列向量。
(因为变换矩阵是切分成一行一行然后点乘列向量的)
结果昨晚又改了。。。orz

固定管线不管他,我SetTransform时转置即可。
ASM shader既然我看了一遍,发现应该用列向量,变换矩阵需要按行切分。
所以就放心了。果然还是数学标准的好啊。

不过我质疑一下,这个宏指令:
m4x4 r1, r0, c0    ; c0 - 矩阵的第一个行向量

这样顺序不好,应该是 m4x4 r1, c0, r0。

不过 dp4 顺序无所谓拉,我打算这样写,十分舒服:

dp4 r1.x, c0, r0
dp4 r1.y, c1, r0
dp4 r1.z, c2, r0
dp4 r1.w, c3, r0

21

主题

136

帖子

165

积分

注册会员

Rank: 2

积分
165
发表于 2008-5-3 19:00:00 | 显示全部楼层

Re:关于变换矩阵的行列性(不懂请勿乱选)

当然是列咯..opengl是列..
我学的就计算机图形学..那本书也是列...看着舒服.M*P..多爽啊.

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-5-3 21:48:00 | 显示全部楼层

Re: Re:关于变换矩阵的行列性(不懂请勿乱选?> </t

yjlh1234: Re:关于变换矩阵的行列性(不懂请勿乱选)

当然是列咯..opengl是列..
我学的就计算机图形学..那本书也是列...看着舒服.M*P..多爽啊.


实在很爽~~
不过不理解M$为什么要搞成行...

2

主题

30

帖子

32

积分

注册会员

Rank: 2

积分
32
发表于 2008-5-3 23:04:00 | 显示全部楼层

Re:关于变换矩阵的行列性(不懂请勿乱选)

上线性代数时教材用的就是行向量,
习惯了,看图形学的书总有些不习惯

2

主题

23

帖子

38

积分

注册会员

Rank: 2

积分
38
发表于 2008-5-3 23:26:00 | 显示全部楼层

Re:关于变换矩阵的行列性(不懂请勿乱选)

印书时多占版面而且不容易排版.

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-5-4 12:25:00 | 显示全部楼层

Re: Re:关于变换矩阵的行列性(不懂请勿乱选)

shichangone: Re:关于变换矩阵的行列性(不懂请勿乱选)

上线性代数时教材用的就是行向量,
习惯了,看图形学的书总有些不习惯



不知道是编书的人脑残,还是你视力问题。
据我所知,所有数学课本上都是列向量。

比如: a = [x,y,z] T

这的的确确是列向量。只不过为了书写方便,写成行向量的转置。
在和变换矩阵相乘的时候,是 Matirx * [x,y,z] T

我说过了,“不懂请勿乱选”

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-5-4 12:26:00 | 显示全部楼层

Re: Re:关于变换矩阵的行列性(不懂请勿乱选)

Rainstorey: Re:关于变换矩阵的行列性(不懂请勿乱选)

印书时多占版面而且不容易排版.


关于变换矩阵的行列性(不懂请勿乱选)

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-5-4 12:32:00 | 显示全部楼层

Re:关于变换矩阵的行列性(不懂请勿乱选)

|a b c|
|d e f| * [ x, y, z ] T
|g h i|

意思是,一个 3*3 方阵左乘一个 3*1 列矩阵。

矩阵乘法的条件是,左边矩阵的列数==右边矩阵的行数。

|a b c|
|d e f| * [ x, y, z ] T
|g h i|

这是万万不能的。

              |a d g|
[ x, y, z ] * |b e h|  
              |c f i|
这是D3D里用的方式,可见变换矩阵的顺序有所不同了。

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2008-5-4 13:11:00 | 显示全部楼层

Re:关于变换矩阵的行列性(不懂请勿乱选)

行向量做矢量矩阵乘法其实更方便。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-22 13:54

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表