比较GLKMatrix4

问题描述 投票:0回答:2

你通常如何比较两个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;
}
glkit
2个回答
1
投票

您可以将其转换为字符串,然后使用此函数NSStringFromGLKMatrix4进行比较


0
投票

你可以做:

static BOOL GLKMatrix4EqualToMatrix4(GLKMatrix4 a, GLKMatrix4 b) {
    return memcmp(a.m, b.m, sizeof(a.m)) == 0;
}

因为memcmp通常针对特定体系结构进行了高度优化,所以它应该是最快速,最干净的方法。

有关memcmp的讨论,请参阅Why is memcmp so much faster than a for loop check?

© www.soinside.com 2019 - 2024. All rights reserved.