示例#1
0
void mouse(int button, int state, int x, int y)
{
	double vertex[3];

	//获取矩阵信息
	glGetIntegerv(GL_VIEWPORT, g_Viewport);
	glGetDoublev(GL_MODELVIEW_MATRIX, g_ModelMatrix);
	glGetDoublev(GL_PROJECTION_MATRIX, g_ProjMatrix);

	y = g_Viewport[3] - y;
	gluUnProject( x, y, 0,
		g_ModelMatrix, g_ProjMatrix, g_Viewport,
		&vertex[0], &vertex[1], &vertex[2] );

	if (button==GLUT_LEFT && state==GLUT_DOWN)
	{
		myBezier.mouseSynchro( BezierCurve::LButtonDown, vertex );
		glutSetCursor( GLUT_CURSOR_RIGHT_ARROW );
	}
	else if (button == GLUT_LEFT && state == GLUT_UP)
	{
		myBezier.mouseSynchro( BezierCurve::LButtonUp, vertex );
	}

	glutPostRedisplay();
}
示例#2
0
//////////////////////////////////////////////////////////////////////////
// 计算控制节点
void motion(int x, int y)
{
	double vertex[3];

	glutSetCursor( GLUT_CURSOR_CROSSHAIR );
	y = g_Viewport[3] - y;

	gluUnProject( x, y, 0,
		g_ModelMatrix, g_ProjMatrix, g_Viewport,
		&vertex[0], &vertex[1], &vertex[2] );

	myBezier.mouseSynchro( BezierCurve::MouseMove, vertex );
	glutPostRedisplay();
}