Следующие фрагменты кода - это мои попытки получить треугольники от индексов и вершин. Вектор indices
содержит номер вершины. Вектор vertices
содержит координаты, в которых три из них образуют одну вершину. Вместе три вершины образуют треугольник.В чем разница между этими фрагментами кода?
Первый снипп работает, но я бы не хотел использовать дополнительный вектор.
vector<float> coords;
for(unsigned int i : indices)
{
coords.push_back(vertices[3 * i + 0]);
coords.push_back(vertices[3 * i + 1]);
coords.push_back(vertices[3 * i + 2]);
}
for(unsigned int i = 0; i < coords.size(); i += 9)
{
triangles->addTriangle(
btVector3(coords[i + 0], coords[i + 1], coords[i + 2]),
btVector3(coords[i + 3], coords[i + 4], coords[i + 5]),
btVector3(coords[i + 6], coords[i + 7], coords[i + 8])
);
}
Второй сниппет не работает, это приводит к нарушению доступа.
float coords[9];
for(unsigned int i = 0; i < indices.size(); i += 9)
{
for(int n = 0, j = 0; j < 3; ++j)
for(int k = 0; k < 3; ++k, ++n)
coords[n] = vertices[3 * indices[i + n] + k];
triangles->addTriangle(
btVector3(coords[0], coords[1], coords[2]),
btVector3(coords[3], coords[4], coords[5]),
btVector3(coords[6], coords[7], coords[8])
);
}
Я не нашел разницы. Почему не работает второй фрагмент?
@ Джон. Я не знал, что эта страница существует. Как мы можем переместить вопрос? – danijar
Во втором примере вы не используете 'j', который я вижу? – John
@Jon ["5. Насколько мне известно, работает ли код?"] (Http://codereview.stackexchange.com/faq#im-confused-what-questions-are-on-topic-for- этот сайт) Нет, это не так. – Dukeling