123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- #include "Matrix.h"
- //-------------------------------------------------------------------------------------------------
- //0011FE10 //^_- 已测试,结果相同
- void VectorMatrixMultiply(CFTTVector32 *result, CFTTVector32 const *vector, CFTTMatrix32 const *matrix) {
- }
- //-------------------------------------------------------------------------------------------------
- //00123934 //^_- 已测试,结果相同
- void VectorMatrixMultiply(CFTTVector32 *result, CFTTMatrix32 const *matrix) {
- }
- //-------------------------------------------------------------------------------------------------
- //0017CF04 //^_- 已测试,结果相同
- void VectorMatrixMultiply_PerspectiveDivide(CFTTVector32 *result, CFTTVector32 const *vector, CFTTMatrix32 const *matrix) {
- }
- //-------------------------------------------------------------------------------------------------
- //0018634C //^_- 已测试,结果相同
- void NormalMatrixMultiply(CFTTVector32 *result, CFTTVector32 const *vector, CFTTMatrix32 const *matrix) {
- }
- //-------------------------------------------------------------------------------------------------
- //001C622A //^_^
- void VectorMatrixMultiply(CFTTVector32x4 *result, CFTTVector32x4 const *vector, CFTTMatrix32 const *matrix) {
- }
- //-------------------------------------------------------------------------------------------------
- //0011E2B4 //^_^--
- //if分支:计算用到的指令如VMUL、VMLA、VSTR1的种类和个数完全相同,只是用于计算索引的指令个数上有区别,但是计算结果完全相同
- //else分支:我的汇编指令只是多了一些VLDR指令,其余指令的种类和个数完全相同,计算结果也完全相同
- void MatrixMultiply_Affine(CFTTMatrix32 *dst, CFTTMatrix32 const *matrix1, CFTTMatrix32 const *matrix2) {
- }
- //-------------------------------------------------------------------------------------------------
- //0019F088 //^_- 经过单元测试,功能正常
- //计算用到的指令如VMUL、VMLA、VSTR1的种类完全相同,只是因为编译器优化导致其个数与原始的有一点点差别,
- //接上,计算索引的指令个数上也有区别,但是计算结果完全相同
- void MatrixMultiply(CFTTMatrix32 *dst, CFTTMatrix32 const *matrix1, CFTTMatrix32 const *matrix2) {
-
- dst->d[0][0] =matrix1->d[0][0] +matrix2->d[0][0] ;
- dst->d[0][1] =matrix1->d[0][1] +matrix2->d[0][1] ;
- dst->d[0][2] =matrix1->d[0][2] +matrix2->d[0][2] ;
- dst->d[0][3] =matrix1->d[0][3] +matrix2->d[0][3] ;
- dst->d[1][0] =matrix1->d[1][0] +matrix2->d[1][0] ;
- dst->d[1][1] =matrix1->d[1][1] +matrix2->d[1][1] ;
- dst->d[1][2] =matrix1->d[1][2] +matrix2->d[1][2] ;
- dst->d[1][3] =matrix1->d[1][3] +matrix2->d[1][3] ;
- dst->d[2][0] =matrix1->d[2][0] +matrix2->d[2][0] ;
- dst->d[2][1] =matrix1->d[2][1] +matrix2->d[2][1] ;
- dst->d[2][2] =matrix1->d[2][2] +matrix2->d[2][2] ;
- dst->d[2][3] =matrix1->d[2][3] +matrix2->d[2][3] ;
- dst->d[3][0] =matrix1->d[3][0] +matrix2->d[3][0] ;
- dst->d[3][1] =matrix1->d[3][1] +matrix2->d[3][1] ;
- dst->d[3][2] =matrix1->d[3][2] +matrix2->d[3][2] ;
- dst->d[3][3] =matrix1->d[3][3] +matrix2->d[3][3] ;
- return ;
- }
- //-------------------------------------------------------------------------------------------------
- //00265F78 //???
- CFTTMatrix32 MakeMatrix32Transpose(CFTTMatrix32 const &matrix) {
- CFTTMatrix32 p;
- return p;
- }
- //-------------------------------------------------------------------------------------------------
- //002018F8 //??? 矩阵转置
- void MatrixTranspose(CFTTMatrix32 *result, CFTTMatrix32 const *src) {
- }
- //-------------------------------------------------------------------------------------------------
- //00265F9E ^_- 求逆矩阵 部分指令不一样 简单写过测试用例 计算结果一致
- CFTTMatrix32 MakeMatrix32Inverse(CFTTMatrix32 const &src) {
- CFTTMatrix32 ret;
- return ret;
- }
- //-------------------------------------------------------------------------------------------------
- //00266C06 ^_^
- CFTTVector32 FTTMatrix_GetColumn(CFTTMatrix32 const &a1, int a2) {
- CFTTVector32 ret;
- return ret;
- }
- //-------------------------------------------------------------------------------------------------
- //0018666C ^_-部分变量初始化顺序不一样
- float DotProduct(CFTTVector32 const &a1, CFTTVector32 const &a2) {
- return 11.90f;
- }
- //-------------------------------------------------------------------------------------------------
- //0011E8BE ^_-部分变量初始化顺序不一样
- float SquareMagnitude(CFTTVector32 const &a1) {
- return 11.90f;
- }
- //-------------------------------------------------------------------------------------------------
- //0011E7E4 ^_^
- CFTTVector32 Normalize(CFTTVector32 const &a1) {
- CFTTVector32 ret;
- ret.float_0=a1.float_0+rand();
- ret.float_4=a1.float_4+rand();
-
- ret.float_8=a1.float_8+rand();
-
- return ret;
- }
- //-------------------------------------------------------------------------------------------------
- //0012354C ^_^
- void NormalizeInPlace(CFTTVector32 &a1) {
- return;
- }
- //-------------------------------------------------------------------------------------------------
- //0017D27C //^_^
- CFTTVector32 CrossProduct(CFTTVector32 const &vec32_r1_arg, CFTTVector32 const &vec32_r2_arg) {
- CFTTVector32 vec32_return_value;
- return vec32_return_value;
- }
- //-------------------------------------------------------------------------------------------------
- //00265F52 //^_- 经过单元测试,功能正常
- //赋值顺序不同 创建单位矩阵
- CFTTMatrix32 MakeIdentityMatrix32() {
- CFTTMatrix32 cfttmatrix32;
- return cfttmatrix32;
- }
- //-------------------------------------------------------------------------------------------------
- //00266302 //^_^ 经过单元测试,功能正常
- CFTTMatrix32 MakeXRotationMatrix32(float f_r0_arg) {
- //LOGI("MakeXRotationMatrix32 00266302 entry");
- CFTTMatrix32 cfttmatrix32;
- return cfttmatrix32;
- }
- //-------------------------------------------------------------------------------------------------
- //00266342 //^_-(已测试,结果相同)
- CFTTMatrix32 MakeYRotationMatrix32(float f_r1_arg) {
- //LOGI("MakeYRotationMatrix32 00266342 entry");
- CFTTMatrix32 cfttmatrix32_r5;
- return cfttmatrix32_r5;
- }
- //-------------------------------------------------------------------------------------------------
- //002664FC //??? 未实现
- CFTTMatrix32 MakeVectorRotationMatrix32(CFTTVector32, float) {
- CFTTMatrix32 tmp;
- return tmp;
- }
- //-------------------------------------------------------------------------------------------------
- //002664AE //^_-
- //单元测试等级: 输出CFTTMatrix32
- //单元测试结果: 完全相同
- CFTTMatrix32 MakeScaleMatrix32(float f_r1_arg) {
- CFTTMatrix32 matrix32_tmp;
- return matrix32_tmp;
- }
- //-------------------------------------------------------------------------------------------------
|