如何为这个结构创建自己的结构和常量?

时间:2012-04-04 16:13:02

标签: objective-c struct components constants limit

我想创建一个类似CGPoint的结构,但是有3个坐标而不是2个。

我按以下方式创建它:

typedef struct {CGFloat x;CGFloat y;CGFloat z;} CG3Vector;

CG_INLINE CG3Vector CG3VectorMake(CGFloat x, CGFloat y, CGFloat z)
{
  CG3Vector p; p.x = x; p.y = y; p.z = z; return p;
}

工作正常。但我现在想要改进这个结构,以便它具有像CGPoint一样的常量:CGPointZero

另外,为结构的特定组件引入限制的方法是什么,就像CGSize一样,组件永远不会低于0?

感谢。

1 个答案:

答案 0 :(得分:2)

您可以创建如下常量:

const CG3Vector CG3VectorZero = { 0, 0, 0 };

如果你想要限制,我想你可以像这样做一些检查:

CG_INLINE CG3Vector CG3VectorMake(CGFloat x, CGFloat y, CGFloat z)
{
    // normalize the values
    x = fmod(x, 360);
    y = fmod(y, 360);
    z = fmod(z, 360);

    x = (x < 0) ? 360 + x : x;
    y = (y < 0) ? 360 + y : y;
    z = (z < 0) ? 360 + z : z;

    return (CG3Vector) { x, y, z };
}