Курсовая работа: Модель трехмерной сцены и библиотека OpenGL
Фрагмент кода программы косого прута сетки
glBegin(GL_LINES);
glVertex3f(bFan+2,15,0);
glVertex3f(bFan,rFan,0);
glEnd();
1. Винт
Винт вентилятора составлен из трех основных частей
- Лопасть вентилятора
где bFan – половина ширины лопасти в основании, lFan – длина лопасти, N – разбиение лопасти |
Фрагмент кода программы лопасти вентилятора
doublebFan=5;
double lFan=15;
glBindTexture(GL_TEXTURE_2D,texture4);
float N=30;
float NNN=100;
int i=0;
while(i<N)
{
glBegin(GL_QUADS);
glTexCoord2d(i/N,0);
glNormal3f(-2*lFan*bFan*i/(N*N)*sin(i*M_PI/(1.5*N)), 2*bFan*bFan/(N*log(NNN))*(log(i+26)*i*sin(i*M_PI/(1.5*N))-log(i+25)*(i+1)*sin((i+1)*M_PI/(1.5*N))), 2*bFan*lFan*log(i+25)/(N*log(NNN)));
glVertex3f(-bFan*log(i+25)/log(NNN),lFan*i/N,-bFan*(i)/N*sin(i*M_PI/(N*1.5)));
glTexCoord2d(i/N,1);
glNormal3f(-2*lFan*bFan*i/(N*N)*sin(i*M_PI/(1.5*N)), 2*bFan*bFan/(N*log(NNN))*(log(i+26)*i*sin(i*M_PI/(1.5*N))-log(i+25)*(i+1)*sin((i+1)*M_PI/(1.5*N))),2*bFan*lFan*log(i+25)/(N*log(NNN)));
glVertex3f(bFan*log(i+25)/log(NNN),lFan*i/N,bFan*(i)/N*sin(i*M_PI/(N*1.5)));
glTexCoord2d((i+1.0)/N,1);
glNormal3f(-2*lFan*bFan*i/(N*N)*sin(i*M_PI/(1.5*N)), 2*bFan*bFan/(N*log(NNN))*(log(i+26)*i*sin(i*M_PI/(1.5*N))-log(i+25)*(i+1)*sin((i+1)*M_PI/(1.5*N))),2*bFan*lFan*log(i+25)/(N*log(NNN)));
glVertex3f(bFan*log((i+26))/log(NNN),lFan*(i+1)/N,bFan*(i+1)/N*sin((i+1)*M_PI/(N*1.5)));