Значение PI неверно:
..., PI = 3.14314159; // 3.14159... ?
После исправления этого давайте проверим значения alpha
во внешнем цикле для lVertical = 8
:
int lVertical = 8;
GLfloat radius = 3, alpha, beta, PI = 3.141592654;
for (alpha = 0.0; alpha < PI; alpha += PI / lVertical)
{
printf("%f, %f\n", alpha, alpha + PI / lVertical);
}
Вывод:
0.000000, 0.392699
0.392699, 0.785398
0.785398, 1.178097
1.178097, 1.570796
1.570796, 1.963495
1.963495, 2.356194
2.356194, 2.748893
2.748893, 3.141593
3.141593, 3.534292 <<
3.534292
больше, чем PI
, что означает, что это недопустимое значение для alpha
. Эффект заключается в том, что последнее многоугольное кольцо «складывается» вокруг, создавая часть, которой там быть не должно.
Лучше рассчитать углы напрямую из целочисленного индекса:
for (int i = 0; int i < lVertical; i++)
{
GLfloat alpha1 = (PI / lVertical) * i;
GLfloat alpha2 = (PI / lVertical) * (i + 1);
glBegin(GL_TRIANGLE_STRIP);
for (int j = 0; j < lHorizontal; j++)
{
GLfloat beta1 = (PI / lHorizontal) * j;
GLfloat beta2 = (PI / lHorizontal) * (j + 1);
glColor3f(1, 1, 0);
x = radius * cos(beta1)*sin(alpha1);
y = radius * sin(beta1)*sin(alpha1);
z = radius * cos(alpha1);
glNormal3f(x, y, z);
glVertex3f(x, y, z);
glColor3f(0, 1, 1);
x = radius * cos(beta2)*sin(alpha2);
y = radius * sin(beta2)*sin(alpha2);
z = radius * cos(alpha2);
glNormal3f(x, y, z);
glVertex3f(x, y, z);
}
glEnd();
}
Не означая указывать очевидное и упускать суть, если Вы имеете в виду компьютер Mac, а не Mac OS, Вы могли бы установить bootcamp или использовать параллели, чтобы запустить Windows на Mac и затем использовать Visual Studio (существуют также бесплатные версии Visual Studio),
Ну, Вы могли также попробовать Silverlight...
Pro:
Довод "против":
Для IDE я предлагаю Инструменты Eclipse для Microsoft Silverlight (по-видимому, это только для Windows в данный момент), необходимо использовать MonoDevelop или SharpDevelop или что-то как этот.
Я пошел бы путем виртуализации, или Параллели или VMware Fusion. Оба выполнят Windows XP и Visual Studio очень хорошо на современном Mac. Windows имеет лучшие инструменты для.NET и разработки C#, и это только делает для использования их, особенно когда Вы только начинаете.
Да, моно действительно Ваша единственная опция, если некоторый старшекурсник где-нибудь не разработал некоторую очень экспериментальную вещь, я не знаю о. Что касается IDE, хорошо я верю единственной вещи половина пути, стабильного, который будет работать правильно теперь на Mac OS X, Моноразработайте:
http://tirania.org/blog/archive/2008/Feb-07-2.html
Я имею в виду, Вы могли выполнить Параллели и разработать Ваш код Windows VM с Visual Studio и, пока Вы следуете определенным инструкциям о мобильности, Вы могли использовать VS для разработки моно приложений. Хотя, Вы, вероятно, могли бы также познакомиться с, Моноразрабатывают. Было бы интересно видеть, портируется ли SharpDevelop когда-нибудь.
Моно в значительной степени Ваш единственный маршрут прямо сейчас, хотя существуют непрерывные слухи (я не много думал бы о них, хотя), который Microsoft планирует на порт C# to Mac в будущем. Я был бы очень удивлен, произошло ли это, все же.
Что касается IDE, я не могу помочь там... Если я хочу C#, я придерживаюсь Visual Studio (выполните его через Параллели или BootCamp, если Вы действительно хотите использовать VS).
Править: Как Graham указывает, существует Cocoa#, но я предостерег бы, что просто, потому что проект остановился, и вряд ли будет много будущего для него. :(
Virtual Box - моя новая любимая программа для виртуальных машин с открытым исходным кодом (то есть бесплатная). Не платите за Parallels. Кроме того, с BootCamp вам необходимо перезагрузить компьютер, чтобы переключаться между Windows и OS X, поэтому Virtual Box - это лучший вариант.