Вычислить вершины круга - PullRequest
       21

Вычислить вершины круга

4 голосов
/ 03 августа 2010

У меня есть простая программа, она рисует круг: / Это прекрасно работает ...

for (k = 1; k < n+1+1; k++){
 vertices[k].color = GU_COLOR( 0.0f, 0.0f, 1.0f, 0.0f );
 vertices[k].x = cos_d( 360 - ((k-1) * dstep) );
 vertices[k].y = sin_d( 360 - ((k-1) * dstep) );
 vertices[k].z = 0.0f;
}
...
//Now draw it
sceGumDrawArray(GU_TRIANGLE_FAN, GU_COLOR_8888|GU_VERTEX_32BITF|GU_TRANSFORM_3D, n+1+1, 0, vertices);

Но это не так:

for (k = 1; k < n+1+1; k++){
 vertices[k].color = GU_COLOR( 0.0f, 0.0f, 1.0f, 0.0f );
 vertices[k].x = cos_d( ((k-1) * dstep) );
 vertices[k].y = sin_d( ((k-1) * dstep) );
 vertices[k].z = 0.0f;
}

Но не должноэто будет то же самое - только с той разницей, что первый цикл вычисляет вершины по часовой стрелке, а второй против часовой стрелки?Просто неловко, что он не рисует вершины, используя второй пример ...

Или я тупой?

Ответы [ 4 ]

6 голосов
/ 03 августа 2010

Не может быть нарисовано из-за отбраковки на обратной стороне .

"Если пользователь указал, что фронтальные полигоны имеют намотку по часовой стрелке, если полигон, проецируемый на экран, имеет намотку против часовой стрелки, он повернут в сторону от камеры и не будет нарисован."

2 голосов
/ 03 августа 2010

Не совсем уверен, как вы рисуете круг (я вижу, что вы создаете список вершин, но ничего не знаете о рендеринге этих), но:

Обычно, когда вы инвертируете от часовой стрелки допо часовой стрелке вы получаете нормальное перевернутое значение, что означает, что вы смотрите на заднюю часть своего круга.И, как и в случае с большинством API-интерфейсов, при взгляде на заднюю часть чего-либо (у которого нет объема) оно не отображается.

Это называется отбором задней поверхности.

0 голосов
/ 03 августа 2010

Предположительно dstep - это 360 / n?

Как эстетическая точка, с GL_TRIANGLE_FAN вы, вероятно, хотите, чтобы ваша первая точка была центром круга.

0 голосов
/ 03 августа 2010

Я не знаю библиотеку, которую вы используете, но вы уверены, что не смешиваете радианы и градусы в своем коде? Функции sin и cos принимают радианы или градусы?

...