C++ (Qt)void Scene3D::getVertexArray() // определить массив вершин{ GLfloat R=0.75; // радиус сферы // начальные значения для икосаэдра GLfloat a=4*R/sqrt(10+2*sqrt(5)); // сторона икосаэдра GLfloat alpha=acos((1-a*a/2/R/R)); // первый угол поворота по тэта // cos(alpha)=(1-a*a/2/R/R) // вычисляем точки икосаэдра //0 точка VertexArray[0][0]=0; // x VertexArray[0][1]=0; // y VertexArray[0][2]=R; // z //1 точка VertexArray[1][0]=R*sin(alpha)*sin(0); VertexArray[1][1]=R*sin(alpha)*cos(0); VertexArray[1][2]=R*cos(alpha); // ...}
C++ (Qt)void Scene3D::getIndexArray() // определить массив индексов{ // 0 треугольник IndexArray[0][0]=0; // индекс (номер) 1-ой вершины IndexArray[0][1]=2; // индекс (номер) 2-ой вершины IndexArray[0][2]=1; // индекс (номер) 3-ей вершины // 1 треугольник IndexArray[1][0]=0; IndexArray[1][1]=3; IndexArray[1][2]=2; // ...}
C++ (Qt)void Scene3D::getColorArray() // определить массив цветов вершин{ for (int i=0; i<12; i++) { ColorArray[i][0]=0.1f*(qrand()%11); // R - красная составляющая ColorArray[i][1]=0.1f*(qrand()%11); // G - зелёная составляющая ColorArray[i][2]=0.1f*(qrand()%11); // B - синяя составляющая // qrand()%11 - псевдослучайное число от 0 до 10 }}