在Objective-C中将CGPoint转换为GLKVector2

时间:2011-11-24 20:05:32

标签: ios xcode

简单的问题。将CGPoint转换为GLKVector的最佳方法是什么?

这些结构是相同的,所以能够重新解释广播或memcpy或类似的东西会很好。我的解决方案有效,但似乎不太合适。我正在堆栈上创建一个GLKVector2,为每个成员分配然后将其作为一个值返回,然后将其分配给另一个GLKVector。

它不会破坏银行或其他任何东西,但必须有一个更简洁的方法来做到这一点?

GLKVector2 Vector2FromPoint(CGPoint point)
{
    GLKVector2 v;
    v.x = point.x;
    v.y = point.y;
    return v;
}

2 个答案:

答案 0 :(得分:1)

你可以尝试在这样的函数中使用memcpy:

bool vector2ToCGPoint(GLKVector2* s, CGPoint* d) {
    memcpy(d, s, sizeof(*d));
}

但是最好有:

bool copyVector2ToCGPoint(GLKVector2* s, CGPoint* d) {
     d.x = s.x;
     d.y = s.x;
}

如果你真的想要优化,你可以选择一个宏:

#define copyS2D(S,D) (D.x = S.x, D.y = S.y)

所以你可以这样做:

CGPoint b;
GLKVector2 a;
vector2FromCGPoint(a, b);

当然,正如您所知,宏不会那么类型安全......

答案 1 :(得分:-1)

GLKVector2 v = GLKVector2Make(point.x, point.y);
相关问题