Сфера. как её нарисовать?

пытаюсь нарисовать сферу.

Делал по этой формуле

введите сюда описание изображения

вот код :

for (j = 0; j <= q; j++)
{
    for (i = 0; i <= p; i++)
    {
        vertices[k++] = R * cos((float)j /q * PI) * sin(2.0 * (float)i / p * PI);
        vertices[k++] = R * sin((float)j /q * PI) * sin(2.0 * (float)i / p * PI);
        vertices[k++] = R * cos((float)j /q * PI);
      }
}

вот что я получил:

введите сюда описание изображения


Ответы (1 шт):

Автор решения: EOF

Сравнивая Ваш код с формулой можно заметить, что ошибка кроется в первой или последней строке вычислений. Если в первой строке, то необходимо заменить sin на cos, а cos на sin. Т.е. строка

vertices[k++] = R * cos((float)j /q * PI) * sin(2.0 * (float)i / p * PI);

должна иметь вид

vertices[k++] = R * sin((float)j /q * PI) * cos(2.0 * (float)i / p * PI);

Если же в последней, то заменить

vertices[k++] = R * cos((float)j /q * PI);

на

vertices[k++] = R * cos(2.0 * (float)i / p * PI);
→ Ссылка