⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bez2.c

📁 Visual_C++.NET精彩案例237.rar
💻 C
字号:
#include "defs.h"

BOOL  hitTest(int x, int y)
{
	GLuint selBuf[512];
	GLint hits;
	GLint viewport[4];
	GLdouble fovy = 50.0;
    GLdouble aspect = 1.0;
    GLdouble znear = 10.0, zfar=500.0;
	int i;

	glGetIntegerv(GL_VIEWPORT,viewport);
	glSelectBuffer(512,selBuf);
	(void)glRenderMode(GL_SELECT);

	glInitNames();
	glPushName(0);

	glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
	gluPickMatrix((GLdouble)x,(GLdouble)(viewport[3]-y),5.0,5.0,viewport);

	gluPerspective(fovy, aspect, znear, zfar);

    glMatrixMode(GL_MODELVIEW);
    
	drawScene(GL_SELECT);

	hits = glRenderMode(GL_RENDER);

	// process hits
	if(hits > 0)
	{
		// for each hit, first element in selBuf is 1, 
		// since the hit objects are not hierarchial (they are POINTS)
		// 
		for(i=0;i<hits;i++)
		{
			if(selBuf[4*i+3] != AXES)
			{
				selected = selBuf[4*i+3];
			}
			else
				selected = -1;
		}
	}

	setTransform();

	return hits > 0 ? TRUE : FALSE;
}

GLvoid drawScene(GLenum mode) 
{
	
	int i,j,k;
	

	glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

	glMap2f(GL_MAP2_VERTEX_3,0.0,1.0,3,4,0,1,12,4,&vertices[0].v[0]);

	glLoadIdentity();
	glTranslatef(0.0,0.0,dist);
	glRotatef((GLfloat)theta,0.0,1.0,0.0);
	glRotatef((GLfloat)beta,1.0,0.0,0.0);

	gluLookAt(150.0,150.0,100.0,0.0,0.0,0.0,0.0,0.0,1.0);

	glPushMatrix();

		if(mode == GL_SELECT)
			glLoadName(AXES);

		glTranslatef(0.0,0.0,0.0);
		glCallList(axes);
	
		glColor3f(1.0,0.8,0.8);
		glEvalMesh2(GL_LINE,0,20,0,20);

		glPushMatrix();

		for(i=0;i<N;i++)
		{
			if(mode == GL_SELECT)	
				glLoadName(i);
			glBegin(GL_POINTS);
				if(i == selected)
					glColor3f(1.0,1.0,1.0);
				else
					glColor3f(1.0,0.0,0.0);
				glVertex3fv(vertices[i].v);
			glEnd();
			
			
		}
		glPopMatrix();

	glPopMatrix();

	SwapBuffers(ghDC);

}

void bezInit(void)
{

	int i,j;

	for(i=0;i<4;i++)
		for(j=0;j<4;j++)
		{
			vertices[4*i+j].v[0] = 30.0*(GLfloat)(i);  
			vertices[4*i+j].v[1] = 30.0*(GLfloat)(j);  
			vertices[4*i+j].v[2] = 5.0;  
		}
	glEnable(GL_MAP2_VERTEX_3);
	glMapGrid2f(20,0.0,1.0,20,0.0,1.0);

}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -