2. Стойка
Стойка вентилятора составлена из трех основных частей
- Верхняя часть корпуса (полусфера)
| |
где rFan – наибольший радиус в фигуре, iM, M – разбиения полусферы |
Фрагмент кода программы верхней части корпуса (полусферы)
M=30;
int iM=30;
double phi, psi;
q=0;
int i=0;
while (q<M)
{
while (i<iM)
{
glBindTexture(GL_TEXTURE_2D, texture2);
glBegin(GL_QUADS);
phi=(-(M_PI*(i))/iM); psi=((M_PI*(q))/M);
glNormal3f(-3*rFan*sin(phi),rFan*cos(phi)*sin(psi),rFan*cos(phi)*cos(psi));
glTexCoord2d((sin(phi)+1)/2,(cos(psi)+1)/2);
glVertex3d(*rFan*sin(phi)+bFan,rFan*cos(phi)*sin(psi), rFan*cos(phi)*cos(psi));
phi=(-(M_PI*(i+1))/iM); psi=((M_PI*(q))/M);
glNormal3f(-3*rFan*sin(phi),rFan*cos(phi)*sin(psi),rFan*cos(phi)*cos(psi));
glTexCoord2d((sin(phi)+1)/2,(cos(psi)+1)/2);
glVertex3d(*rFan*sin(phi)+bFan,rFan*cos(phi)*sin(psi), rFan*cos(phi)*cos(psi));
phi=(-(M_PI*(i+1))/iM); psi=((M_PI*(q+1))/M);
glNormal3f(-3*rFan*sin(phi),rFan*cos(phi)*sin(psi),rFan*cos(phi)*cos(psi));
glTexCoord2d((sin(phi)+1)/2,(cos(psi)+1)/2);
glVertex3d(*rFan*sin(phi)+bFan,rFan*cos(phi)*sin(psi), rFan*cos(phi)*cos(psi));
phi=(-(M_PI*(i))/iM); psi=((M_PI*(q+1))/M);
glNormal3f(-3*rFan*sin(phi),rFan*cos(phi)*sin(psi),rFan*cos(phi)*cos(psi));
glTexCoord2d((sin(phi)+1)/2,(cos(psi)+1)/2);
glVertex3d(*rFan*sin(phi)+bFan,rFan*cos(phi)*sin(psi), rFan*cos(phi)*cos(psi));
glEnd();
i++;
}
i=0;
q++;
}
- Цилиндрический элемент стойки
Этот элемент стойки вентилятора состоит из цилиндров и кругов (крышки для цилиндров). Все они вызываются с помощью функции OpenGL – glCallList. Большая часть кода элементов вентилятора считывается программой лишь однажды, в СallLists, а вызов уже происходит неоднократно, по мере необходимости, в функции RenderGLScene(). Этот способ наиболее эффективен как для скорости работы программы, так и для редактирования готового кода программы, благодаря чему одинаковые примитивы (цилиндр, круг, квадрат, линии и т.д.) было легко использовать вызовом CallList и, применяя элементарные преобразования – поворот, перемещение, масштабирование объектов, видоизменять необходимым образом для получения данных элементов тела. Элементы цилиндр и круг были описаны выше, поэтому не будем повторяться. |
- Ножка стойки
Этот элемент тела строится через функцию CallList, в которой задан квадрат, вызываемый 4 раза и масштабированный по разным координатам по разному. |
Фрагмент кода программы ножек стойки вентилятора
//--- Квадрат
square=basis_leg+1;
glNewList(square,GL_COMPILE);
glBindTexture(GL_TEXTURE_2D,texture1);
glBegin(GL_QUADS);
glNormal3f(1,0,0);
glTexCoord2d(0,0);
glVertex3f(1,-1,-1);
glTexCoord2d(1,0);
glVertex3f(1,1,-1);
glTexCoord2d(1,1);
glVertex3f(1,1,1);
glTexCoord2d(0,1);
glVertex3f(1,-1,1);
glEnd();
glEndList();
//--- Ножка вентилятора
leg=square+1;
glNewList(leg,GL_COMPILE);
glCallList(square);
glRotatef(90,0,0,1);
glCallList(square);
glRotatef(90,0,0,1);
glCallList(square);
glRotatef(90,0,0,1);
glCallList(square);
glEndList();
... . Аналогична поверхность редко бывает окрашена равномерно: чаще на ней бывает какой либо узор. Реалистичность изображения можно повысить путем нанесения узора на поверхность. Само перечисление способов построения реалистичных изображений говорит о том, какой большой объем работы необходимо проделать, чтобы получить что-нибудь, в самом деле, стоящее. И это было бы действительно так если бы не ...
... представляют собой числа с плавающей точкой. Наличие различных форматов позволяет библиотеке OpenGL принимать данные пользователя в его собственном формате данных. Некоторые команды библиотеки OpenGL допускают использование 8 различных типов данных в качестве своих параметров. Буквы, используемые в качестве суффиксов для того, чтобы определить эти типы данных для реализации ISO С библиотеки ...
... , комментарии в формате XML. Переняв многое от своих предшественников — языков С++, Delphi, Модула и Smalltalk — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем: так, C# не поддерживает множественное наследование классов (в отличие от C++) или вывода типов (реализовано в .NET Framework 3.0). C# ...
... на другом или утверждения о реализации идеи человеко-машинного общения. Поэтому исследования в этой области являются весьма актуальными. 3. Разработка программного обеспечения для распознавания команд управления промышленным роботом 3.1 Реализация интерфейса записи и воспроизведения звукового сигнала в операционной системе Microsoft Windows 3.1.1 Основные сведения Звуковые данные хранятся ...
0 комментариев