C++中 error C2872: “count”: 不明确的符号
lokua 2015-06-14 12:33:26 #include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <GL/glut.h>
#include <GL\GL.h>
#include <GL\GL.h>
#include <iostream>
using namespace std;
int count = 0; //用于保存控制点个数
int Vx, Vy; //用于保存鼠标位置
double X0; double Y0; //第1个控制点
double X1; double Y1; //第2个控制点
double X2; double Y2; //第3个控制点
double X3; double Y3; //第4个控制点
//画线算法
void drawpixel(float X1, float Y1, float X2, float Y2)
{
glBegin(GL_LINES);
glVertex2f(X1, Y1);
glVertex2f(X2, Y2);
glEnd();
glFlush();
}
//Bezier曲线算法
void Bezier(double X0, double Y0,
double X1, double Y1,
double X2, double Y2,
double X3, double Y3)
{
double x, y, X, Y;
x = X0; y = Y0;
for (double t = 0.0; t <= 1.0; t = t + 0.001)
{
X = x; Y = y;
x = (1 - t)*(1 - t)*(1 - t)*X0 + 3 * t*(1 - t)*(1 - t)*X1 + 3 * t*t*(1 - t)*X2 + t*t*t*X3;
y = (1 - t)*(1 - t)*(1 - t)*Y0 + 3 * t*(1 - t)*(1 - t)*Y1 + 3 * t*t*(1 - t)*Y2 + t*t*t*Y3;
drawpixel(X, Y, x, y);
}
}
//绘制曲线
void drawLine(void)
{
glColor3f(0.0f, 0.0f, 0.0f);
glPointSize(1.5);
Bezier(X0, Y0, X1, Y1, X2, Y2, X3, Y3);
}
//绘制控制点
void drawPoints()
{
glPointSize(4.0);
glColor3f(0.0f, 0.0f, 1.0f);
glBegin(GL_POINTS);
glVertex2f(Vx, Vy);
cout << "第" << count << "个控制点" << "(" << Vx << "," << Vy << ")";
glEnd();
glFlush();
}
//绘图
void draw()
{
if (count <= 4 && count > 0)//当输入控制点小于4个时绘制点
{
drawPoints();
}
if (count == 4)//当输入控制点达到4个时绘制曲线
{
drawLine();
}
}
void display()
{
glColor3i(0, 0, 0);
draw();
glutSwapBuffers();
}
//鼠标事件,当鼠标点击时提取鼠标位置作为Bezier曲线控制点
void MouseClick(int button, int action, int xMouse, int yMouse)
{
if (button == GLUT_LEFT_BUTTON && action == GLUT_DOWN)
{
if (count == 4)//当已经存在4个控制点继续点击屏幕则重新画图
{
count = 0;
glClear(GL_COLOR_BUFFER_BIT);
}
if (count < 4)//当控制点不足4个时分别绘制4个控制点
{
switch (count)
{
case 0:
X0 = xMouse;
Y0 = 500 - yMouse;
Vx = X0;
Vy = Y0;
break;
case 1:
X1 = xMouse;
Y1 = 500 - yMouse;
Vx = X1;
Vy = Y1;
break;
case 2:
X2 = xMouse;
Y2 = 500 - yMouse;
Vx = X2;
Vy = Y2;
break;
case 3:
X3 = xMouse;
Y3 = 500 - yMouse;
Vx = X3;
Vy = Y3;
break;
}
count++;
glutPostRedisplay();//刷新画布
}
}
}
//初始化
void init()
{
glClearColor(1.0, 1.0, 1.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(-1.0, 500, 0.0, 500);
}
//主程序入口
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowPosition(100, 100);
glutInitWindowSize(500, 500);
glutCreateWindow(" 交互式Bezier曲线绘制 ");
init();
glutDisplayFunc(display);
glutMouseFunc(MouseClick);
glutMainLoop();
return 0;
}
错误 1 error C2872: “count”: 不明确的符号
错误 2 error C2872: “count”: 不明确的符号