Я пишу загрузчик объектов Wavefront для работы, потому что мне неудобно использовать код, которого я не понимаю в профессиональных проектах. После очевидного первого шага, разбирая, какие части какие, я пытаюсь загрузить и записать вершины. Прежде всего, я написал структуру C для хранения значений.
struct Vertice {
float x;
float y;
float z;
};
Далее, мне нужен был способ эффективного ведения журнала, поэтому я написал функцию препроцессора, вдохновленную той, что была найдена на этом сайте. Боже, у вас, ребята, есть все.
#define LogVertice(VERTICE) NSLog(@"Vertice - X: %0.00000f, Y: %0.00000f, Z: %0.00000f", VERTICE.x, VERTICE.y, VERTICE.z);
Далее я загружаю попытку разобрать вершины.
NSArray *verticeLineParts = [currentLine componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
struct Vertice v;
v.x = [[verticeLineParts objectAtIndex:1] floatValue];
v.y = [[verticeLineParts objectAtIndex:2] floatValue];
v.z = [[verticeLineParts objectAtIndex:3] floatValue];
NSLog(@"%@", currentLine);
LogVertice(v);
Я не уверен, что лучше всего описать результаты, кроме как сказать, что это неправильно, поэтому я покажу вам. Первые пять строк вывода:
2010-10-14 13:46:03.587 ObjLoader[1353:207] v -0.035910 1.710543 -0.048286
2010-10-14 13:46:03.594 ObjLoader[1353:207] Vertice - X: -0, Y: 2, Z: -0
2010-10-14 13:46:03.595 ObjLoader[1353:207] v -0.041089 1.710543 -0.048951
2010-10-14 13:46:03.596 ObjLoader[1353:207] Vertice - X: -0, Y: 2, Z: -0
2010-10-14 13:46:03.596 ObjLoader[1353:207] v -0.040913 1.711848 -0.048951
2010-10-14 13:46:03.597 ObjLoader[1353:207] Vertice - X: -0, Y: 2, Z: -0
2010-10-14 13:46:03.598 ObjLoader[1353:207] v -0.040396 1.713069 -0.048951
2010-10-14 13:46:03.599 ObjLoader[1353:207] Vertice - X: -0, Y: 2, Z: -0
2010-10-14 13:46:03.600 ObjLoader[1353:207] v -0.039573 1.714114 -0.048951
2010-10-14 13:46:03.600 ObjLoader[1353:207] Vertice - X: -0, Y: 2, Z: -0
И первые пять вершин из файла.
v -0.035910 1.710543 -0.048286
v -0.041089 1.710543 -0.048951
v -0.040913 1.711848 -0.048951
v -0.040396 1.713069 -0.048951
v -0.039573 1.714114 -0.048951
Я бы сказал, что я неплохой программист на Objective-C, но, видимо, я не могу даже сделать мои поплавки правильными. Кто-нибудь видел мою очевидную ошибку?