【问题标题】:Comparing GLKMatrix4比较 GLKMatrix4
【发布时间】:2016-09-07 13:32:03
【问题描述】:

您通常如何比较两个 GLKMatrix4,或者至少检查 on 是否是单位矩阵?

对 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


    【解决方案1】:

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

    【讨论】:

    • 聪明,但是啊 ;)
    【解决方案2】:

    你可以这样做:

    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?

    【讨论】:

      猜你喜欢
      • 2012-08-23
      • 1970-01-01
      • 2013-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多