比较GLKMatrix4

时间:2016-09-07 13:32:03

标签: glkit

您通常如何比较两个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;
}

2 个答案:

答案 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?