Я хочу сделать цилиндр в Opengl. Для этого я написал простой алгоритм, который генерирует мне сетку точек радиуса параметров, высоту, xSubDivisions и ySubDivisions: (Java)странная вещь с алгоритмом цилиндра
for(int yDivision = 0; yDivision < yDivisionCount; yDivision++){
for(int xDivision = 0; xDivision < xDivisionCount; xDivision++){
float line[] = getVboLine(xDivision, yDivision, radius, height, xDivisionCount, yDivisionCount);
string.append(line[0] + ", " + line[1] + ", " + line[2] + ", " + line[3] + ", " + line[4] + ", ");
}
}
public float[] getVboLine(int xDivision, int yDivision, float radius, float height, int xDivisionCount, int yDivisionCount){
float xDegrees = 360.0f/xDivisionCount * xDivision;
float xRadian = (float) Math.toRadians(xDegrees);
float x = (float) Math.sin(xRadian) * radius;
float z = (float) Math.cos(xRadian) * radius;
float y = (float) yDivision * (height/(yDivisionCount - 1));
float s = xDegrees * (1.0f/360.0f);
float t = yDivision * (1.0f/(yDivisionCount - 1));
return new float[]{
x, y, z, s, t
};
}
Результат является фактически цилиндром, (я создал IBO в эти моменты), но иногда, с разными входами для x и yDivisions, в нем есть странный пробел. Я не мог найти правило, но значения, которые я нашел, это ошибка, равная 200, 100. Для отладки я отобразил только точки. Результат был:
Как это возможно? Одно очко просто отсутствует (где я добавил кружок с краской). Где проблема с моим алгоритмом?
Является ли этот пункт отсутствует в вашей визуализации только, или это тоже не в вашем входе? – usr2564301
Кажется, что пропустить во входной тоже. Проблема в том, что я не могу это проверить, потому что с небольшими значениями для делений не появляется ... Но я постараюсь обеспечить –
, это не может быть ошибкой в рендеринге на самом деле.Im render с: "GL11.glDrawArrays (GL11.GL_POINTS, 0, vertices.length/5);" Это должны быть все точки из массива ... –