《webgl编程指南》中,"平移矩阵"中相关值的得出
是基于"矩阵和向量相乘所得的等式"与"向量表达式"组成一个方程组
x'=ax+by+cz+d
x'=x+Tx
书中说,根据上面的方程组,可以很容易得出
a=1、b=0、c=0、d=Tx
0、问题来了!
我也确实可以看出,a=1、b=0、c=0、d=Tx,是上述方程组的一个解
但是,我觉得这种方式很不"数学" !很不"严谨" !!
也没有用严谨的手段来证明,只有这1个解!!(我这篇文章也没有证明)
下面写出自己的一些思考和推导过程
1、定义和概念:
正确的定义和概念,就可以极大的推进问题的解决
上述方程组中,我觉得有这么几类数据:
|--------|----------|---------------------------------------|
| 类型 | 相关变量 | 备注 |
| "自由"变量 | x、y、z、x' | 可以随意赋值为任何数 |
| 未知常量 | a、b、c、d | 要解出"未知常量" 不是求x、y、z的值 (一般方程是求xyz值) |
| 已知常量 | Tx | 可以当做一个已知常数来对待 |
2、取值互相不约束
上述方程中x、y、z的取值,是互相不限制
(x想取什么值,就取什么值,不需要考虑y或z是什么值)
备注:
下述方程组中,x、y的值就是互相制约和限制(x想取什么值,需要考虑y已经取了什么值)
23x+17y=63
17x+23y=57
3、方案1:
基于1的结论,我可以随便给出x、y、z的值
给出4组值,就会组成4个等式,然后求4个"未知常量"
4、方案2:
因为x、y、z可以取任意值,可以取一个特殊值,比如0
来快速求解出"未知常量"
把上述方程组,改成等式:ax+by+cz+d=x+Tx
**情形A:**x=0;y=0;z=0;
带入等式:0a+0b+0c+d=0+Tx
结果:d=Tx
**情形B:**x=0;y=0;z=1;
带入等式:0a+0b+1c+d=0+Tx
结果:c=Tx-d
因为:Tx=d
所以:c=0
**情形C:**x=0;y=1;z=0;
带入等式:0a+1b+0c+d=0+Tx
结果:b=0
**情形D:**x=1;y=0;z=0;
带入等式:1a+0b+0c+d=1+Tx
结果:a=1
至此:
才算严格的证明了:
a=1、b=0、c=0、d=Tx是方程的一个解!
(数学水平一般,不知道这个推导对不对,欢迎大家指正)