주요 소스코드

void koch_line(GLfloat *st, GLfloat *ed){
         glVertex2fv(st);
         glVertex2fv(ed);
}
void divide_koch_line(GLfloat *st, GLfloat *ed, int n){
         GLfloat a[2], b[2], c[2], d[2], e[2];
         if( n>0 ){
                  a[0] = st[0];
                  a[1] = st[1];
                  e[0] = ed[0];
                  e[1] = ed[1];
                  b[0] = st[0] + (ed[0] - st[0])/3.0;
                  b[1] = st[1] + (ed[1] - st[1])/3.0;
                  d[0] = st[0] + (ed[0] - st[0])*2.0/3.0;
                  d[1] = st[1] + (ed[1] - st[1])*2.0/3.0;
                  c[0] = b[0]+(d[0]-b[0])*cos(60.0*3.1415/180.0)-(d[1]-b[1])*sin(60.0*3.1415/180.0);
                  c[1] = b[1]+(d[0]-b[0])*sin(60.0*3.1415/180.0)+(d[1]-b[1])*cos(60.0*3.1415/180.0);

                  divide_koch_line(a,b,n-1);
                  divide_koch_line(b,c,n-1);
                  divide_koch_line(c,d,n-1);
                  divide_koch_line(d,e,n-1);
         }
         else{
                  koch_line(st,ed);
         }
}



 결과

'OpenGL' 카테고리의 다른 글

#3. OpenGL 선 그려보기  (0) 2011.07.12
#2. OpenGL 두번째 예제. 사각형 그려보기  (0) 2011.07.12
#1. OpenGL 설치 및 예제 파일 실행  (0) 2011.07.12
Ubuntu에 OpenGL 설치하기  (0) 2011.07.12
Posted by Нуеоп
,

#3. OpenGL 선 그려보기

OpenGL 2011. 7. 12. 18:56
무작위 선을 50~250개 그려보았다.

소스
 
 1 #include <stdio.h>
 2 #include <GL/glut.h>
 3
 4 void drawRandomLines(int num){
 5     static GLfloat width = 2.0;
 6     static GLfloat height = 2.0;
 7     int i=0;
 8     GLfloat x,y;
 9     inline void drawLine(GLfloat x, GLfloat y){
10         glVertex2f(x,y);
11     }
12    
13     glBegin(GL_LINES);
14     {   
15         for(i=0; i<num; i++){
16             glVertex2f(0.0,0.0);
17             glColor3f(rand()%10/10.0, rand()%10/10.0, rand()%10/10.0);
18             x = (rand()%100)/50.0 - width/2.0;
19             y = (rand()%100)/50.0 - height/2.0;
20             drawLine(x,y);
21         }
22     }
23     glEnd();
24 }
25
26 void DoDisplay()
27 {
28     glClear(GL_COLOR_BUFFER_BIT);
29     drawRandomLines(250);
30     glFlush();
31 }
32
33 int main(int argc, char *argv[])
34 {
35     glutInit( &argc, argv );
36     glutCreateWindow("OpenGL");
37     glutDisplayFunc(DoDisplay);
38     glutMainLoop();
39 }

결과


Posted by Нуеоп
,
소스
/home/hyeon/programming/opengl/sample4.c.html  
1 #include <GL/glut.h>
 2
 3 void drawRectangle(
GLfloat x, GLfloat y, GLfloat r, GLfloat g, GLfloat b)
 4 {
 5     static
GLfloat width = 1.0;
 6     static 
GLfloat height = 1.0;
 7
 8     glBegin(GL_POLYGON);
 9     {
10         glColor3f(r,g,b);
11         glVertex2f(x,y);
12         glColor3f(r,b,g);
13         glVertex2f(x+width,y);
14         glColor3f(g,r,b);
15         glVertex2f(x+width,y+height);
16         glColor3f(b,g,r);
17         glVertex2f(x,y+height);
18     }
19     glEnd();
20 }
21
22 void DoDisplay()
23 {
24     glClear(GL_COLOR_BUFFER_BIT);
25     drawRectangle(-0.5,-0.5, 0.8,0.2,0.1);
26     glFlush();
27 }
28
29 int main(int argc, char *argv[])
30 {
31     glutInit( &argc, argv );
32     glutCreateWindow("OpenGL");
33     glutDisplayFunc(DoDisplay);
34     glutMainLoop();
35 }

컴파일
$ gcc -o sample4 sample4.c -lglut


실행 화면


'OpenGL' 카테고리의 다른 글

#4. OpenGL koch snowflake (코흐 눈송이)  (0) 2011.08.03
#3. OpenGL 선 그려보기  (0) 2011.07.12
#1. OpenGL 설치 및 예제 파일 실행  (0) 2011.07.12
Ubuntu에 OpenGL 설치하기  (0) 2011.07.12
Posted by Нуеоп
,
환경
Ubuntu 10.10 32bit

설치
$ sudo apt-cache search glut
$ sudo apt-get install glutg3
$ sudo apt-get install glutg3-dev

소스

/home/hyeon/programming/opengl/ConsoleOpenGL.c.html
 1 #include <GL/glut.h>
 2
 3 void DoDisplay()
 4 {
 5     glClear(GL_COLOR_BUFFER_BIT);
 6
 7     glBegin(GL_TRIANGLES);
 8  
 9     glVertex2f(0.0, 0.5);
10     glVertex2f(-0.5, -0.5);
11     glVertex2f(0.5, -0.5);
12     glEnd();
13     glFlush();
14 }
15
16 int main(int argc, char *argv[])
17 {
18     glutCreateWindow("OpenGL");
19     glutDisplayFunc(DoDisplay);
20     glutMainLoop();
21 }

컴파일
$ gcc -o sample ConsoleOpenGL.c -lglut

실행
$ ./sample

결과
freeglut  ERROR:  Function <glutCreateWindow> called without first calling 'glutInit'.
-> glutInit()이 필요하다.
glutCreateWindow() 윗줄에 glutInit( &argc, argv ) 를 추가했다.




참고자료
www.winwpi.co.kr -> 라이브러리 -> OpenGL

'OpenGL' 카테고리의 다른 글

#4. OpenGL koch snowflake (코흐 눈송이)  (0) 2011.08.03
#3. OpenGL 선 그려보기  (0) 2011.07.12
#2. OpenGL 두번째 예제. 사각형 그려보기  (0) 2011.07.12
Ubuntu에 OpenGL 설치하기  (0) 2011.07.12
Posted by Нуеоп
,
$ sudo apt-cache search glut
$ sudo apt-get install glutg3
$ sudo apt-get install glutg3-dev


Posted by Нуеоп
,