iCAx开思网

标题: uf5942_ [打印本页]

作者: xialin1    时间: 2005-11-22 09:37
标题: uf5942_
请问     (uf_trns.h)
extern void uf5942_ (
double * rp1,
double * rp2,
double * rr3 );

double *  rp1 Input Matrix Number 1. This must be a 16 element array.
/这其中的16个元素应该怎么写? 能举个例子吗?

double *  rp2 Input Matrix Number 2. This must be a 16 element array.
/这其中的16个元素应该怎么写? 能举个例子吗?

double *  rr3 Output Product Matrix. This must be a 16 element array.

请指教,谢谢!
作者: xialin1    时间: 2005-12-5 12:23
这是一个执行UG "变换"的函数,能帮我解释一下函数中的 rp1 该如何用,怎么赋值?
谢谢!
作者: supergirl    时间: 2005-12-6 11:57
我记得好像应该是double 12的,UF的uf_trns.h中的大部分说明都要求输入16的double,结果你做程序的时候发现应该是12的才对。不过不管12还是16其实都是一个意思

UG中用一个4X4的矩阵来表示 一个xform或者一个坐标系。double ele[16];
0  4   8     12                         x1     y1    z1    0
1  5   9     13     对应于           x2    y2     z2    0
2  6   10   14                         x3    y3     z3    0
3  7   11   15                         t1     t2       t3      s

其中左上角x, y ,z的那个3X3是旋转矩阵(一般要求是单位正交矩阵), t是平移的量或者坐标系原点坐标,S一般是1,表示放大的倍数。其实和图形学中的齐次矩阵是一样的,不过UG中好像转了一下秩的。

在早期的UF的函数中一般用double ele[12]来表示这个矩阵,我估计是早期为了节约内存空间吧。对应于
0   4    8      X
1   5    9      X   三个X为0的地方它就不算进去了。
2   6    10    X
3   7    11    12

你的这个函数uf5942是求两个矩阵相乘的。如果连矩阵相乘也不明白,请参见高等数学或者线性代数XX页,呵呵。

[ 本帖最后由 supergirl 于 2005-12-6 16:15 编辑 ]
作者: xialin1    时间: 2005-12-7 09:46
太谢谢了!你解决我的大问题了!
以后有问题,还请你多指教!




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3