Я пишу игру, используя cocos 2d, которая включает в себя множество свойств типа Float для определения вершин (x, y) моих фигур (квадрат, треугольник). У меня есть класс Shape , который просто содержит общее количество вершин (int) и вершин (CGFloat *). У меня есть еще один класс с именем ShapeHolder , который определяет значения для различных типов фигур, у него есть свойства, называемые Shape square; and Shape Triangle
. В инициализации ShapeHolder (жесткое кодирование) информация о вершинах (x, y) выглядит следующим образом, а также печатаю значения сразу после определения, которое прекрасно работает
CGPoint _square[] = {
CGPointMake(100.0f, 100.0f) ,
CGPointMake(200.0f, 100.0f) ,
CGPointMake(200.0f, 200.0f) ,
CGPointMake(100.0f, 200.0f)
};.
square = [[[Shape alloc] initWithVerticesLength: 4] retain];
square.vertices = _square;
for (int i = 0; i< square.count; i++) {
NSLog(@"Init Square Vertices X Y = %f , %f" , square.vertices[i].x ,square.vertices[i].y );
}
triangle = [[[Shape alloc] initWithVerticesLength: 3] retain];
triangle.vertices = _triangle;
Возникла проблема при получении тех же значений в моем классе рисования OpenGL для рендеринга различных фигур. Вот код
allShapes = [[ShapeHolder alloc] init];
for (int i = 0; i< allShapes.square.count; i++) {
NSLog(@"Main Square Vertices X Y = %f , %f" , [[allShapes square]vertices][i].x ,[[allShapes square] vertices][i].y );
}
Значение преобразуется как-то, не знаю, почему, пожалуйста, уточните. Я не получаю никаких ошибок времени выполнения или ошибки времени компиляции, которые действительно мешают моим знаниям
Init Square Vertices X Y = 100.000000 , 100.000000
Init Square Vertices X Y = 200.000000 , 100.000000
Init Square Vertices X Y = 200.000000 , 200.000000
Init Square Vertices X Y = 100.000000 , 200.000000
Main Square Vertices X Y = 100.000000 , 100.000000
Main Square Vertices X Y = -1.998910 , 0.000000
Main Square Vertices X Y = 0.000000 , 0.000000
Main Square Vertices X Y = -1.998912 , 0.000000