29 Kasım 2009 Pazar

OpenGl - 3D Döndürme

void dondurmeayar(){

int i,j,k,secim;
float mtrs[8][4]={0},aci;

printf("\ndondurme acisini giriniz:");
scanf("%f",&aci);

printf("\nhangi eksen etrafinda dondurme\n");
printf("\n1- x ekseni etrafinda dondurme\n");
printf("\n2- y ekseni etrafinda dondurme\n");
printf("\n3- z ekseni etrafinda dondurme\n");
scanf("%d",&secim);


if(secim==1){
float deger[4][4]={{1,0,0,0},
{0,cos(aci*3.14/180),sin(aci*3.14/180),0},
{0,sin(aci*3.14/180)*(-1),cos(aci*3.14/180),0},
{0,0,0,1}};

for(i=0;i<8;i++)
for(j=0;j<4;j++)
for(k=0;k<4;k++)
mtrs[i][j]=mtrs[i][j] + (matris[i][k])*(deger[k][j]);
}

else if(secim==2){
float deger[4][4]={{cos(aci*3.14/180),0,sin(aci*3.14/180)*(-1),0},
{0,1,0,0},
{sin(aci*3.14/180),0,cos(aci*3.14/180),0},
{0,0,0,1}};

for(i=0;i<8;i++)
for(j=0;j<4;j++)
for(k=0;k<4;k++)
mtrs[i][j]=mtrs[i][j] + (matris[i][k])*(deger[k][j]);
}

else if(secim==3){
float deger[4][4]={{cos(aci*3.14/180),sin(aci*3.14/180),0,0},
{sin(aci*3.14/180)*(-1),cos(aci*3.14/180),0,0},
{0,0,1,0},
{0,0,0,1}};

for(i=0;i<8;i++)
for(j=0;j<4;j++)
for(k=0;k<4;k++)
mtrs[i][j]=mtrs[i][j] + (matris[i][k])*(deger[k][j]);
}


for(i=0;i<8;i++)
for(j=0;j<4;j++)
matris[i][j]=mtrs[i][j];

for(i=0;i<8;i++){
printf("\n");
for(j=0;j<4;j++){
printf("%f ",matris[i][j]);}}

}

Hiç yorum yok:

Yorum Gönder