//3D cismi öteleme,döndürme,yansıtma ve ölçekleme
#include <GL/glut.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <math.h>
#include <stdio.h>
void menu(void);
void cizim();
void olcekayar();
void otelemeayar();
void yansimaayar();
void dondurmeayar();
float deger1;
float deger2;
float deger3;
float matris[8][4]={{0,0,1,1},
{1,0,1,1},
{1,0,0,1},
{0,0,0,1},
{1,1,1,1},
{0,1,1,1},
{1,1,0,1},
{0,1,0,1}};
int main(int argc, char **argv)
{
int sec;
menu();
scanf("%d",&sec);
glutInit(&argc, argv);
glutInitWindowSize(1000,1000);
if(sec==1){
olcekayar();
glutCreateWindow("OLCEKLENMIS 3D");
glutDisplayFunc(cizim);
}
else if(sec==2){
otelemeayar();
glutCreateWindow("OTELENMIS 3D");
glutDisplayFunc(cizim);
}
else if(sec==3){
yansimaayar();
glutCreateWindow("YANSIMIS 3D");
glutDisplayFunc(cizim);
}
else if(sec==4){
dondurmeayar();
glutCreateWindow("DONDURULMUS 3D");
glutDisplayFunc(cizim);
}
glutMainLoop();
return(0);
}
C'de OpenGl etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
C'de OpenGl etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
29 Kasım 2009 Pazar
OpenGl - 3D
OpenGl - 3D Ölçekleme
void olcekayar(){
int i,j;
printf("\nolcekleme x degerini giriniz(0.x seklinde):");
scanf("%f",°er1);
printf("\nolcekleme y degerini giriniz(0.x seklinde):");
scanf("%f",°er2);
printf("\nolcekleme z degerini giriniz(0.x seklinde):");
scanf("%f",°er3);
for(i=0;i<8;i++)
matris[i][0]=matris[i][0]*deger1;
for(i=0;i<8;i++)
matris[i][1]=matris[i][1]*deger2;
for(i=0;i<8;i++)
matris[i][2]=matris[i][2]*deger3;
for(i=0;i<8;i++){
printf("\n");
for(j=0;j<4;j++){
printf("%f ",matris[i][j]);}}
}
int i,j;
printf("\nolcekleme x degerini giriniz(0.x seklinde):");
scanf("%f",°er1);
printf("\nolcekleme y degerini giriniz(0.x seklinde):");
scanf("%f",°er2);
printf("\nolcekleme z degerini giriniz(0.x seklinde):");
scanf("%f",°er3);
for(i=0;i<8;i++)
matris[i][0]=matris[i][0]*deger1;
for(i=0;i<8;i++)
matris[i][1]=matris[i][1]*deger2;
for(i=0;i<8;i++)
matris[i][2]=matris[i][2]*deger3;
for(i=0;i<8;i++){
printf("\n");
for(j=0;j<4;j++){
printf("%f ",matris[i][j]);}}
}
OpenGl - 3D Yansıma
void yansimaayar(){
int i,secim,j;
printf("\nhangi duzleme gore yansima\n");
printf("\n1- yz duzlemine gore yansima\n");
printf("\n2- xz duzlemine gore yansima\n");
printf("\n3- xy duzlemine gore yansima\n");
scanf("%d",&secim);
if(secim==1){
for(i=0;i<8;i++)
matris[i][0]=matris[i][0]*(-1);
}
else if(secim==2){
for(i=0;i<8;i++)
matris[i][1]=matris[i][1]*(-1);
}
else if(secim==3){
for(i=0;i<8;i++)
matris[i][2]=matris[i][2]*(-1);
}
for(i=0;i<8;i++){
printf("\n");
for(j=0;j<4;j++){
printf("%f ",matris[i][j]);}}
}
int i,secim,j;
printf("\nhangi duzleme gore yansima\n");
printf("\n1- yz duzlemine gore yansima\n");
printf("\n2- xz duzlemine gore yansima\n");
printf("\n3- xy duzlemine gore yansima\n");
scanf("%d",&secim);
if(secim==1){
for(i=0;i<8;i++)
matris[i][0]=matris[i][0]*(-1);
}
else if(secim==2){
for(i=0;i<8;i++)
matris[i][1]=matris[i][1]*(-1);
}
else if(secim==3){
for(i=0;i<8;i++)
matris[i][2]=matris[i][2]*(-1);
}
for(i=0;i<8;i++){
printf("\n");
for(j=0;j<4;j++){
printf("%f ",matris[i][j]);}}
}
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]);}}
}
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]);}}
}
OpenGl - 3D Öteleme
void otelemeayar(){
int i,j;
printf("\noteleme degerini giriniz:(0.x seklinde)");
scanf("%f",°er1);
printf("\noteleme degerini giriniz:(0.x seklinde)");
scanf("%f",°er2);
printf("\noteleme degerini giriniz:(0.x seklinde)");
scanf("%f",°er3);
for(i=0;i<8;i++)
matris[i][0]=matris[i][0]+deger1;
for(i=0;i<8;i++)
matris[i][1]=matris[i][1]+deger2;
for(i=0;i<8;i++)
matris[i][2]=matris[i][2]+deger3;
for(i=0;i<8;i++){
printf("\n");
for(j=0;j<4;j++){
printf("%f ",matris[i][j]);}}
}
int i,j;
printf("\noteleme degerini giriniz:(0.x seklinde)");
scanf("%f",°er1);
printf("\noteleme degerini giriniz:(0.x seklinde)");
scanf("%f",°er2);
printf("\noteleme degerini giriniz:(0.x seklinde)");
scanf("%f",°er3);
for(i=0;i<8;i++)
matris[i][0]=matris[i][0]+deger1;
for(i=0;i<8;i++)
matris[i][1]=matris[i][1]+deger2;
for(i=0;i<8;i++)
matris[i][2]=matris[i][2]+deger3;
for(i=0;i<8;i++){
printf("\n");
for(j=0;j<4;j++){
printf("%f ",matris[i][j]);}}
}
OpenGl - 3D Menü ve Çizim Fonksiyonu
void menu(void){
printf("\n 1- OLCEKLEME\n");
printf("2- OTELEME\n");
printf("3- YANSIMA\n");
printf("4- DONDURME\n");
printf("seciminizi giriniz");
}
void cizim(){//çizim
glClear(GL_COLOR_BUFFER_BIT);
glColor3f (1,1,1);
glBegin(GL_POLYGON);
glVertex3f(matris[0][0], matris[0][1], matris[0][2]);
glVertex3f(matris[1][0], matris[1][1], matris[1][2]);
glVertex3f(matris[2][0], matris[2][1], matris[2][2]);
glVertex3f(matris[3][0], matris[3][1], matris[3][2]);
glVertex3f(matris[4][0], matris[4][1], matris[4][2]);
glVertex3f(matris[5][0], matris[5][1], matris[5][2]);
glVertex3f(matris[6][0], matris[6][1], matris[6][2]);
glVertex3f(matris[7][0], matris[7][1], matris[7][2]);
glEnd();
glFlush();
}
printf("\n 1- OLCEKLEME\n");
printf("2- OTELEME\n");
printf("3- YANSIMA\n");
printf("4- DONDURME\n");
printf("seciminizi giriniz");
}
void cizim(){//çizim
glClear(GL_COLOR_BUFFER_BIT);
glColor3f (1,1,1);
glBegin(GL_POLYGON);
glVertex3f(matris[0][0], matris[0][1], matris[0][2]);
glVertex3f(matris[1][0], matris[1][1], matris[1][2]);
glVertex3f(matris[2][0], matris[2][1], matris[2][2]);
glVertex3f(matris[3][0], matris[3][1], matris[3][2]);
glVertex3f(matris[4][0], matris[4][1], matris[4][2]);
glVertex3f(matris[5][0], matris[5][1], matris[5][2]);
glVertex3f(matris[6][0], matris[6][1], matris[6][2]);
glVertex3f(matris[7][0], matris[7][1], matris[7][2]);
glEnd();
glFlush();
}
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();
}
#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();
}
Kaydol:
Kayıtlar (Atom)