您通常如何比较两个GLKMatrix4,或者至少检查是否是单位矩阵?
粗略搜索GLKMatrix4.h显示没有util函数,我觉得手动检查每个字段都是愚蠢的,如下所示:
static BOOL GLKMatrix4EqualToMatrix4(GLKMatrix4 a, GLKMatrix4 b)
{
return
a.m00 == b.m00 &&
a.m01 == b.m01 &&
a.m02 == b.m02 &&
a.m03 == b.m03 &&
a.m10 == b.m10 &&
a.m11 == b.m11 &&
a.m12 == b.m12 &&
a.m13 == b.m13 &&
a.m20 == b.m20 &&
a.m21 == b.m21 &&
a.m22 == b.m22 &&
a.m23 == b.m23 &&
a.m30 == b.m30 &&
a.m31 == b.m31 &&
a.m32 == b.m32 &&
a.m33 == b.m33;
}
答案 0 :(得分:1)
您可以将其转换为字符串,然后使用此函数进行比较NSStringFromGLKMatrix4
答案 1 :(得分:0)
您可以这样做:
static BOOL GLKMatrix4EqualToMatrix4(GLKMatrix4 a, GLKMatrix4 b) {
return memcmp(a.m, b.m, sizeof(a.m)) == 0;
}
由于 memcmp 通常针对特定体系结构进行了高度优化,因此它应该是最快,最简洁的方法。
有关{strong> memcmp 的讨论,请参见Why is memcmp so much faster than a for loop check?。