|
|

楼主 |
发表于 2008-5-6 20:37:00
|
显示全部楼层
Re:关于变换矩阵的行列性(不懂请勿乱选)
我为什么要发这个帖子?这对我自己的项目有什么好处?
为了一个矩阵操作,我反复写过的代码,可以说也有3000行左右了。
前后改过2次,从列向量->行向量->列向量。目前保留的代码也有1200行。
我偏离微软的D3D9,把行向量改为列向量,这种举动虽然符合数学,但是
计算机业是计算机业,MS的做法或许有他的道理呢!?
所以我想发个帖子出来,看看别人的意见如何。
而不是擅自作决定。
结果我已经知道了,OpenGL,asm shader,d3d10,都采用列向量,
那么,我应当更多地学习这些权威,研究出这些东西的人,功底自然比我搞多了。
而且,既然大多数3D技术,都采用列向量,我也应当遵循多数人的选择。
我设计每一个底层类库时,都仔仔细细地,假设以用户的立场来考虑问题,
尽量减少累库的依赖性,连indentifier名称,都要思索很久才能下决定。
什么最难?做出一个choice最难。如果不了解其他人的意见,就更难下决定。
我大多数类库的设计,都反复参考过手头的书籍,和网络上的资料。
这是绝对必要的吗?封装的不好,自己也可以用。但是,用起来可能会有所不便,更会为他人带来不便。
一般来说,我的类库,基本上只要看到名字,就知道是干什么的了。
比如 UI库,凡是有VB6.0或者.NET皮毛的,基本上也不需要什么文档。
另一方面,我不仅要考虑类库的速度,还需要兼顾类库的易用性,还需要考虑减少用户出错。
矩阵和向量,我重载了几乎所有可能的operator,
每个函数,我都写2终版本,一种是按value,一种是按pointer。
VEC4 Mul(const MAT44 &mat,const VEC4 &vec); //方便
void Mul(VEC4 *ret,const MAT44 *mat,const VEC4 *vec); //性能
每天不仅要编码,还需要思索着一个一个“设计”问题。实在是艰苦。。。 |
|