0

CGPoint のような構造体を作成したいのですが、座標が 2 つではなく 3 つです。

私は次の方法で作成します。

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

また、構造体の特定のコンポーネントの制限を導入する方法は何ですか? コンポーネントが 0 より低くならない CGSize のように?

ありがとう。

4

1 に答える 1

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 };
}
于 2012-04-04T16:17:17.000 に答える