2016-09-09 57 views
0
#include <GL/glut.h> 
#include <stdio.h> 
#include <math.h> 

int x0,y0,xn,yn; 

void bresenham(void) 
{ 
    int dx,dy,m,pk,xk,yk,k; 
    glClear(GL_COLOR_BUFFER_BIT); 
    glColor3f(0,0,0); 
    setPixel(x0,y0); 
    dx=xn-x0; 
    dy=yn-y0; 
    pk=2*dy-dx; 
    m=dy/dx; 
    xk=x0; 
    yk=y0; 
    if(m>0 && m<1) 
    { 
     for(k=0;k<dx-1;k++) 
     { 
      if(pk<0) 
      { 
       xk++; 
       pk=pk+2*dy; 
      } 
      else 
      { 
       xk++; 
       yk++; 
       pk=pk+2*dy-2*dx; 
      } 
      setPixel(xk,yk); 
     } 
    } 
    glFlush(); 
} 

int main (int argc,char **argv) 
{ 
    printf("enter starting points"); 
    scanf("%d",&x0); 
    scanf("%d",&y0); 
    printf("enter endpoints"); 
    scanf("%d",&xn); 
    scanf("%d",&yn); 
    glutInit(&argc,argv); 
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); 
    glutInitWindowPosition(50,25); 
    glutInitWindowSize(500,250); 
    glutCreateWindow("Bresenham Line"); 
    init(); 
    glutDisplayFunc(bresenham); 
    glutMainLoop(); 
    return 0; 
} 

void init(void) 
{ 
    glClearColor(1.0,1.0,1.0,0.0); 
    glMatrixMode(GL_PROJECTION); 
    gluOrtho2D(0.0,400.0,0.0,400.0); 
} 

void setPixel(GLint x,GLint y) 
{ 
    glColor3f(255,255,255); 
    glBegin(GL_POINTS); 
    glVertex2f(x,y); 
    glEnd(); 
} 

錯誤是:用bresenham線算法編譯錯誤?

4 8 C:\用戶\惠普\文件\ bresenham1.c [錯誤] 'Y0' 重新聲明爲 不同種類符號 的,4 14 C:\用戶\ Hewlett \ Documents \ bresenham1.c [錯誤]'yn'重新聲明 作爲不同類型的符號。

誰能告訴爲什麼它顯示Y0 & YN被重新聲明爲不同意義的符號

回答

1

爲什麼它顯示Y0 & YN被重新聲明爲不同意義的符號

因爲you are:

y0(),y1()和yn()函數離子應分別計算第二類0,1和n的x的第一類型的Bessel functions

切換到其他名稱或不要#include <math.h>

+1

'y0()'和'yn()'不是標準庫C函數。編譯爲C99/C11也應該是避免衝突的另一種方法。 – chux

+0

@chux:[POSIX and Microsoft](http://www.johndcook.com/blog/math_h/),顯然。 – genpfault

+0

genpfault thanku非常多我不知道y0和yn實際上是我使用它們作爲標識符的函數什麼是錯誤,但是再次感謝你 – vidhit