0

假设我有一个 GLKVector3 并且只想将 x 和 y 值读取为 CGPoints - 我该怎么做?

4

2 回答 2

3

GLKVector3doc中,有类型定义:

union _GLKVector3
{
   struct { float x, y, z; };
   struct { float r, g, b; };
   struct { float s, t, p; };
      float v[3];
};
typedef union _GLKVector3 GLKVector3;

有3个选项:

GLKVector3v属性,它是一个float[3]数组{x,y,z}

IE:

GLKVector3 vector;

...

float x = vector.v[0];
float y = vector.v[1];
float z = vector.v[2];

CGPoint p = CGPointMake(x,y); 

然后还有浮点属性x,y,z或不太相关r,g,bs,t,p用于向量类型的不同用途:

CGPoint p = CGPointMake(vector.x,vector.y);
于 2013-10-20T21:36:47.347 回答
1

GLKVector3被声明为

union _GLKVector3
{
    struct { float x, y, z; };
    struct { float r, g, b; };
    struct { float s, t, p; };
    float v[3];
};
typedef union _GLKVector3 GLKVector3;

所以最简单和最易读的转换方法是:

GLKVector3 someVector;
…
CGPoint somePoint = CGPointMake(someVector.x,someVector.y);

但是请注意,它CGPointCGFloats 组成,在 64 位环境中可能是双精度值。

于 2013-10-20T21:44:28.247 回答