시어핀스키가스켓 opengl
본 자료는 3페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
해당 자료는 3페이지 까지만 미리보기를 제공합니다.
3페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

시어핀스키가스켓 opengl에 대한 보고서 자료입니다.

목차

A.1 시어핀스키 가스켓

A.2 시어핀스키 가스켓의 순환적 생성

A.3 삼차원 시어핀스키 가스켓

A.4 순환적 삼차원 시어핀스키 가스켓

본문내용

0.,0.);
glVertex3f(New.x, New.y,New.z);
glEnd();
/* 이전 점을 새로운 점으로 교체 */
old.x=New.x;
old.y=New.y;
old.z=New.z;
glFlush(); /* 버퍼를 비움*/
}
void mouse(int btn, int state, int x, int y) /* 마우스 답신 */
{
if(btn==GLUT_LEFT_BUTTON&state==GLUT_DOWN) glutIdleFunc(display);
if(btn==GLUT_MIDDLE_BUTTON&state==GLUT_DOWN) glutIdleFunc(NULL);
if(btn==GLUT_RIGHT_BUTTON&state==GLUT_DOWN) exit(0);
}
int main(int argc, char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(0,0);
glutCreateWindow("Sierpinski Gasket");
glutIdleFunc (display);
glutMouseFunc (mouse);
glClearColor(1.0, 1.0, 1.0, 0.0); /* 흰 배경 */
glColor3f(1.0, 0.0, 0.0); /* 적색으로 그리기 */
glMatrixMode(GL_PROJECTION); /* 투영 행렬 모드 */
glLoadIdentity(); /* 단위 행렬 */
glOrtho(0.0, 500.0, 0.0, 500.0, -500.0, 500.0);
glMatrixMode(GL_MODELVIEW);
glutDisplayFunc(clear);
glutMainLoop(); /* 이벤트 루프로 들어감 */
}
- 결과
A.4 순환적 삼차원 시어핀스키 가스켓
- 프로그램 소스
// 삼차원 시어핀스키 가스켓을 구성하기 위한 사면체의 순환적 분할
// 순환 단계는 명령 라인에 주어짐
#include
#include
typedef float point3[3];
// 초기 사면체
point3 v[]={{0.0, 0.0, 1.0}, {0.0, 0.942809, -0.33333},
{-0.816497, -0.471405, -0.333333}, {0.816497, -0.471405, -0.333333}};
static GLfloat theta[] = {0.0,0.0,0.0};
int n;
void triangle( point3 a, point3 b, point3 c)
/* 선구조를 위한 하나의 라인 루프와 균일 음영을 위한 하나의 법선
또는 보간 음영을 위한 세 개의 법선 */
{
glBegin(GL_POLYGON);
glNormal3fv(a);
glVertex3fv(a);
glVertex3fv(b);
glVertex3fv(c);
glEnd();
}
void divide_triangle(point3 a, point3 b, point3 c, int m)
{
/* 정점 번호를 이용한 삼각형 분할 외향면을 생성하기위해서 오른손법칙을적용 */
point3 v1, v2, v3;
int j;
if(m>0)
{
for(j=0; j<3; j++) v1[j]=(a[j]+b[j])/2;
for(j=0; j<3; j++) v2[j]=(a[j]+c[j])/2;
for(j=0; j<3; j++) v3[j]=(b[j]+c[j])/2;
divide_triangle(a, v1, v2, m-1);
divide_triangle(c, v2, v3, m-1);
divide_triangle(b, v3, v1, m-1);
}
else(triangle(a,b,c)); // 순환의 마지막에 삼각형을 그림
}
void tetrahedron( int m)
{
// 사면체의 각 면들에 삼각형 분할을 적용
glColor3f(1.0,0.0,0.0);
divide_triangle(v[0], v[1], v[2], m);
glColor3f(0.0,1.0,0.0);
divide_triangle(v[3], v[2], v[1], m);
glColor3f(0.0,0.0,1.0);
divide_triangle(v[0], v[3], v[1], m);
glColor3f(0.0,0.0,0.0);
divide_triangle(v[0], v[2], v[3], m);
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
tetrahedron(n);
glFlush();
}
void myReshape(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if (w <= h)
glOrtho(-2.0, 2.0, -2.0 * (GLfloat) h / (GLfloat) w,
2.0 * (GLfloat) h / (GLfloat) w, -10.0, 10.0);
else
glOrtho(-2.0 * (GLfloat) w / (GLfloat) h,
2.0 * (GLfloat) w / (GLfloat) h, -2.0, 2.0, -10.0, 10.0);
glMatrixMode(GL_MODELVIEW);
glutPostRedisplay();
}
void
main(int argc, char **argv)
{
n=4;
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(500, 500);
glutCreateWindow("3D Gasket");
glutReshapeFunc(myReshape);
glutDisplayFunc(display);
glEnable(GL_DEPTH_TEST);
glClearColor (1.0, 1.0, 1.0, 1.0);
glutMainLoop();
}
- 결 과
  • 가격2,000
  • 페이지수11페이지
  • 등록일2006.09.08
  • 저작시기2005.10
  • 파일형식한글(hwp)
  • 자료번호#363220
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니