25 Kasım 2009 Çarşamba

OpenGl - İzometrik Projeksiyon İşlemi

#include <GL/glut.h>
#include <stdio.h>
#include <math.h>

void izo();
void izoayar();

float matris[10][4]={{0,0,1,1},
{1,0,1,1},
{1,0.5,1,1},
{0.5,1,1,1},
{0,1,1,1},
{0,0,0,1},
{1,0,0,1},
{1,1,0,1},
{0,1,0,1},
{1,1,0.5,1}};//örnek matris



int main(int argc, char **argv)
{
glutInit(&argc, argv);
izoayar();
glutCreateWindow("IZOMETRIK PROJEKSIYON");
glutDisplayFunc(izo);

glutMainLoop();

return(0);
}


void izoayar(){

int i,j,k;
float mtrs[10][4]={0}, y=-45, x=35.26;

float tytxti[4][4]={{cos(y*3.14/180) , sin(y*3.14/180)*sin(x*3.14/180) , 0 , 0} ,
{0 , cos(x*3.14/180) , 0 , 0} ,
{sin(y*3.14/180) , cos(y*3.14/180)*sin(x*3.14/180)*(-1) , 0 , 0} ,
{0 , 0 , 0 , 1}};//transform matrisi


//matris çarpımı
for(i=0;i<10;i++)
for(j=0;j<4;j++)
for(k=0;k<4;k++)
mtrs[i][j]=mtrs[i][j] + matris[i][k]*tytxti[k][j];

for(i=0;i<10;i++){
for(j=0;j<4;j++){
matris[i][j]=mtrs[i][j];
printf("%9f",matris[i][j]);}
printf("\n\n");}//ekrana x' matrisinin değerlerini yazıyor

}

void izo(){//çizim

glClear(GL_COLOR_BUFFER_BIT);
glColor3f (1,1,1);
glBegin(GL_POLYGON);
glVertex2f (matris[0][0], matris[0][1]);
glVertex2f (matris[1][0], matris[1][1]);
glVertex2f (matris[2][0], matris[2][1]);
glVertex2f (matris[3][0], matris[3][1]);
glVertex2f (matris[4][0], matris[4][1]);
glVertex2f (matris[5][0], matris[5][1]);
glVertex2f (matris[6][0], matris[6][1]);
glVertex2f (matris[7][0], matris[7][1]);
glVertex2f (matris[8][0], matris[8][1]);
glVertex2f (matris[9][0], matris[9][1]);

glEnd();

glFlush();
}

Hiç yorum yok:

Yorum Gönder