游戏开发论坛

 找回密码
 立即注册
搜索
楼主: instemast

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

[复制链接]

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

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

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

我觉得回帖的各位中间也有不少是高手。学历也都比我高。
但是,我十几岁刚看现行代数看了没几天就理解了的东西,对各位的水平来说,应该不难。

认为被变换的向量为列向量(数学标准)

我说了“被变换的向量”

而不是“变换矩阵的切分”

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-5-5 13:27:00 | 显示全部楼层

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

哦,看来几百年的数学,还不如这些搞计算机的是吧?

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-5-5 13:30:00 | 显示全部楼层

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

Output.Position = mul(vAnimatedPos, g_mWorldViewProjection);
没错,是行向量×列矩阵

行向量==行矩阵
列向量==列矩阵

请问这位仁兄数学考多少分?

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-5-5 13:34:00 | 显示全部楼层

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

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

用哪种其实都可以,左乘行,右乘列,只不过是右乘列是默认的图形学习惯表示法,d3d 采用左乘行也许是现实自己的与众不同吧,ms 经常愿意干这种事。d3d10 就改过来了,右乘列,你说可笑不。


[em1] [em3] [em1]

恩,右乘列,是几百年数学传统。
d3d10改过来,我想,可能是因为和shader的交互不方便。
MS真有点nao can

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-5-5 13:46:00 | 显示全部楼层

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

注意,这本书虽然不错,不过对于广义的向量(线性向量空间)
这一章(第6章)讲解的是,不知所云,符号表示也很乱。(难怪这章是选学)
我推荐看《神经网络设计》第5,6章,讲的十分清晰。
sf_200855134552.jpg

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

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

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

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

数学是让你考的么?


可以不考试,但是数学书的基本概念要花点时间看看,这并不难。

不好好看数学书,把什么D3D,HLSL的什么“技术文档”等看烂了也搞不清楚。

那还不如花个几分钟翻翻数学书。

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-5-5 14:47:00 | 显示全部楼层

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

----SetTransform,SetMatrix的参数是行向量,还是列向量,还是都可以,shader代码里头呢?请回答。。现在你搞清楚了没有?

我的类库的 SetTransform,执行的如下代码:

m_pdev->SetTransform->( (D3DMATRIX *) &Transpose(matrix) )

原理如下:

(B)T * (A)T == (A*B)T

SetMatrix 在我的类库里是一个重载函数,
SetVSC, SetPSC
这个函数不需要对矩阵转置。

原理如下:
p'.x == m1 * p
p'.y == m2 * p
p'.z == m3 * p
p'.w == m4 * p
其中,矩阵的4个子矩阵 m1...m4 是按行排列的。

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-5-5 14:47:00 | 显示全部楼层

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

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

请问我哪里说错了,愿意修改。“线代”我想搞游戏开发的都学过,当然有可能有点朦胧了,毕竟很多年前的事情了。。


不过,我不朦胧

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-5-5 15:01:00 | 显示全部楼层

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

wjk98550328
没有应用,行列就没多大意义。。。

这是对的。

而正是因为,向量自身的行列,可以弹性地理解为不同的情况,
所以,矩阵的运算,在计算机里面才变得“缥缈不定”

关键问题在于,变换矩阵的"内容",是按照什么基准建立的。
是以行向量为基准,还是列向量为基准。

造成问题复杂化的原因还有,计算机中的书写顺序,不一定是矩阵乘法的实际顺序。

m4x4 vector, vector, matrix

如果 不 了解这个宏的幕后是什么样的,那么就很容易迷惑,
认为是 行矩阵 * 方阵
实际上,这个宏所进行的操作是, 方阵 * 列矩阵


如果,你把被变换的向量当成行矩阵,来填写你的变换矩阵的话,
在进入shader之前,需要把这个矩阵转置。否则结果不同。


另外我绝不是用 M$ 的 m4x4 这种宏,根本就是脑残!

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-5-5 15:33:00 | 显示全部楼层

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

赫赫,矩阵倒是类库写过不少。

"骨骼动画啥的"

被变换向量的“行列性”,还影响父母和孩子矩阵的相乘顺序。。。
如果不注意这一点。。。

此外,还有逆矩阵,也影响父母和孩子矩阵的相乘顺序。。。
(为此我还仔仔细细计算了,然后画了一张图)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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