コード例 #1
0
ファイル: main.cpp プロジェクト: lcosteroucm/GCOM
void drawScene(){
	glMatrixMode(GL_MODELVIEW);
	glPushMatrix();

	// Rotating the scene
	glRotatef(angX, 1.0f, 0.0f, 0.0f);
	glRotatef(angY, 0.0f, 1.0f, 0.0f);
	glRotatef(angZ, 0.0f, 0.0f, 1.0f);

	glLineWidth(1.5f);
	// Drawing axes
	glBegin(GL_LINES);
	glColor3f(1.0, 0.0, 0.0);
	glVertex3f(0, 0, 0);
	glVertex3f(20, 0, 0);

	glColor3f(0.0, 1.0, 0.0);
	glVertex3f(0, 0, 0);
	glVertex3f(0, 20, 0);

	glColor3f(0.0, 0.0, 1.0);
	glVertex3f(0, 0, 0);
	glVertex3f(0, 0, 20);
	glEnd();

	// Drawing the scene	 		 
	glColor3f(1.0, 1.0, 1.0);

	//...........................................
	GLfloat xA, xB, xC, xD;
	GLfloat zA, zB, zC, zD;

	PuntoVector3D* EYE = new PuntoVector3D(eyeX, 0.0f, eyeZ, 1.0f);
	//PuntoVector3D* LOOK = new PuntoVector3D(lookX, 0.0f, lookZ, 1.0f);
	PuntoVector3D* dir = new PuntoVector3D(lookX - eyeX, 0.0f, lookZ - eyeZ, 0.0f); dir->normalizar();

	PuntoVector3D* perpen = new PuntoVector3D(-1.0*dir->getZ(), 0.0f, dir->getX(), 0.0f);
	perpen->escalar((xRight - xLeft) / 2.0f);
	
	//aux centro del plano cercano
	PuntoVector3D* aux = dir->clonar();
	aux->escalar(N);
	aux->sumar(EYE);
	
	xA = aux->getX() + perpen->getX();
	zA = aux->getZ() + perpen->getZ();
	xD = aux->getX() - perpen->getX();
	zD = aux->getZ() - perpen->getZ();
	delete aux;
	//aux centro del plano lejano
	aux = dir->clonar();
	aux->escalar(F);
	aux->sumar(EYE);
	xB = aux->getX() + perpen->getX();
	zB = aux->getZ() + perpen->getZ();
	xC = aux->getX() - perpen->getX();
	zC = aux->getZ() - perpen->getZ();

	delete aux;
	delete EYE;
	delete dir;
	delete perpen;

	b->dibuja(min(xA, min(xB, min(xC, xD))),
			  min(zA, min(zB, min(zC, zD))),
			  max(xA, max(xB, max(xC, xD))),
			  max(zA, max(zB, max(zC, zD)))
			  );
	//...........................................

	glPopMatrix();
}