这是源代码。 ANSWER
是正确答案,RESULT
是实际结果。
我是盲人,还是应该为-1
计算条目33
的1
?
这是代码:
GLKMatrix4 a = GLKMatrix4Make(-1.000000, 0.000000, 0.000000, 0.000000,
0.000000, 1.000000, 0.000000, 0.000000,
0.000000, 0.000000, -1.000000, 0.000000,
0.000000, 0.000000, 0.000000, 1.000000);
GLKMatrix4 b = GLKMatrix4Make(1.000000, 0.000000, 0.000000, 0.000000,
0.000000, 1.000000, 0.000000, -1.000000,
0.000000, 0.000000, 1.000000, -1.000000,
0.000000, 0.000000, 0.000000, 1.000000);
GLKMatrix4 ANSWER = GLKMatrix4Make(-1.000000, 0.000000, 0.000000, 0.000000,
0.000000, 1.000000, 0.000000, -1.000000,
0.000000, 0.000000, -1.000000, 1.000000,
0.000000, 0.000000, 0.000000, 1.000000);
NSLog(@"##################################################");
GLKMatrix4 RESULT = GLKMatrix4Multiply(a,b);
NSLog(@"Result:");
NSLog(@" %f %f %f %f",RESULT.m00,RESULT.m01,RESULT.m02,RESULT.m03);
NSLog(@" %f %f %f %f",RESULT.m10,RESULT.m11,RESULT.m12,RESULT.m13);
NSLog(@" %f %f %f %f",RESULT.m20,RESULT.m21,RESULT.m22,RESULT.m23);
NSLog(@" %f %f %f %f",RESULT.m30,RESULT.m31,RESULT.m32,RESULT.m33);
NSLog(@"Answer:");
NSLog(@" %f %f %f %f",ANSWER.m00,ANSWER.m01,ANSWER.m02,ANSWER.m03);
NSLog(@" %f %f %f %f",ANSWER.m10,ANSWER.m11,ANSWER.m12,ANSWER.m13);
NSLog(@" %f %f %f %f",ANSWER.m20,ANSWER.m21,ANSWER.m22,ANSWER.m23);
NSLog(@" %f %f %f %f",ANSWER.m30,ANSWER.m31,ANSWER.m32,ANSWER.m33);
NSLog(@"##################################################");
这是输出:
##################################################
Result:
-1.000000 0.000000 0.000000 0.000000
0.000000 1.000000 0.000000 -1.000000
0.000000 0.000000 -1.000000 -1.000000
0.000000 0.000000 0.000000 1.000000
Answer:
-1.000000 0.000000 0.000000 0.000000
0.000000 1.000000 0.000000 -1.000000
0.000000 0.000000 -1.000000 1.000000
0.000000 0.000000 0.000000 1.000000
##################################################
我花了最后5个小时尝试调试一些OpenGL代码,才发现这是问题所在。我肯定想念一些东西。任何人都可以发现正在发生的事情,或者验证是否应该发生这种情况?
最佳答案
嗯,我得到的结果与您的“结果”矩阵相同。
我按照以下规则用纸和笔进行矩阵乘法:
http://www.mathsisfun.com/algebra/matrix-multiplying.html
这是我使用您的两个矩阵a和b做到的:
好的,我想我知道您出了错,您必须在错误的位置列出数字:
您在代码中列出数字的方式是水平的,例如Coordinate(x,y,z),但是在矩阵中,这些数字会移动到垂直位置。
因此,例如[X Y Z W]应该垂直:
现在如果我们将在错误的位置列出您的数字,然后将Matrix a与Matrix b相乘,我们得到的答案与您的“ANSWER”矩阵相同:
关于ios - iOS:据我所知,GLKit矩阵乘法已中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9029796/