Yazilim Öğrenmenin Tek Adresi...
Daha İyi Bir Hizmet İçin Lütfen Üye Olunuz...
Yazilim Öğrenmenin Tek Adresi...
Daha İyi Bir Hizmet İçin Lütfen Üye Olunuz...
Yazilim Öğrenmenin Tek Adresi...
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Yazilim Öğrenmenin Tek Adresi...

En Kapsamlı Visual Basic Sitesi
 
AnasayfaAramaLatest imagesKayıt OlGiriş yap
Giriş yap
Kullanıcı Adı:
Şifre:
Beni hatırla: 
:: Şifremi unuttum
Arama
 
 

Sonuç :
 
Rechercher çıkıntı araştırma
En son konular
» C İle Banka Otomasyonu Acill
Programlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Icon_minitimeC.tesi Ocak 09, 2010 4:51 pm tarafından Ebubekir_Kara

» C++'la yapılmış basit ATM programı
Programlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Icon_minitimeÇarş. Ara. 02, 2009 4:43 am tarafından 1221ibrahim

» Bir Oyunda Puan Sistemi Yapma
Programlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Icon_minitimePtsi Kas. 02, 2009 1:49 pm tarafından KonYalıCoder

» Ipconfig Komutu
Programlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Icon_minitimePaz Eyl. 13, 2009 5:33 pm tarafından OguzhanUyanik

» Çalıştır Komutları
Programlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Icon_minitimePaz Eyl. 13, 2009 5:33 pm tarafından OguzhanUyanik

» Domain Adresleri
Programlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Icon_minitimePaz Eyl. 13, 2009 5:32 pm tarafından OguzhanUyanik

» Msconfig Nedir? Ayarları ve Özellikleri
Programlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Icon_minitimePaz Eyl. 13, 2009 5:32 pm tarafından OguzhanUyanik

» Windows Vista & Türkçe Kurulumu Resimli anlatım!
Programlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Icon_minitimePaz Eyl. 13, 2009 5:31 pm tarafından OguzhanUyanik

» Format atmak ve Türkçe windows xp kurulumu (resimli anlatım)
Programlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Icon_minitimePaz Eyl. 13, 2009 5:31 pm tarafından OguzhanUyanik

» Windows Xp Hızlandırma
Programlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Icon_minitimePaz Eyl. 13, 2009 5:30 pm tarafından OguzhanUyanik

En iyi yollayıcılar
OguzhanUyanik (472)
Programlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Vote_lcapProgramlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek I_voting_barProgramlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Vote_rcap 
mehmet bozer (78)
Programlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Vote_lcapProgramlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek I_voting_barProgramlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Vote_rcap 
asi_esra (4)
Programlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Vote_lcapProgramlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek I_voting_barProgramlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Vote_rcap 
mysterious_el (4)
Programlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Vote_lcapProgramlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek I_voting_barProgramlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Vote_rcap 
1221ibrahim (3)
Programlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Vote_lcapProgramlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek I_voting_barProgramlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Vote_rcap 
igny (3)
Programlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Vote_lcapProgramlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek I_voting_barProgramlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Vote_rcap 
tarkantr2000 (2)
Programlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Vote_lcapProgramlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek I_voting_barProgramlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Vote_rcap 
myildiz.16 (2)
Programlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Vote_lcapProgramlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek I_voting_barProgramlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Vote_rcap 
KAPORTACI (2)
Programlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Vote_lcapProgramlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek I_voting_barProgramlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Vote_rcap 
tolgakesan (2)
Programlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Vote_lcapProgramlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek I_voting_barProgramlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Vote_rcap 

 

 Programlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek

Aşağa gitmek 
YazarMesaj
OguzhanUyanik
Mareşal
Mareşal
OguzhanUyanik


Yengeç Mesaj Sayısı : 472
Kayıt tarihi : 31/08/09
Yaş : 32
Nerden : Konya
İş/Hobiler : Bilgisyar-Yazılım
Lakap : Nediz

Programlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Empty
MesajKonu: Programlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek   Programlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek Icon_minitimeSalı Eyl. 08, 2009 1:46 pm

Öncelikle Merhaba Herkese !

Bu örnek programımızda klavyenin yön tuşlarını kullanarak, nesnemizi sağa, sola, yukarı, aşağı, ileri, geri hareket ettirmeyi başardık. ayrıca klavyemizin karakter düğmelerini kullanarak, prizmamızın boyutlarını değiştirip, y ekseni çevresinde döndüre bildik. Şimdi kaynak kodu inceleyerek GLut açıklamasına bir göz atalım.
//-------------------------------------------------------------------
http://OpenUcboyutHareket.cpp

#include <gl/glut.h>


float xgotur = 0, ygotur = 0, zgotur = 0;
float derece = 0;
float xolcu = 1, yolcu = 1, zolcu = 1;
int en = 400,boy = 400;


void GoturSag(void)
{

glLoadIdentity();

xgotur += 0.1;
}


void GoturSol(void)
{

glLoadIdentity();

xgotur -= 0.1;
}


void GoturYuk(void)
{

glLoadIdentity();

ygotur += 0.1;
}


void GoturAsa(void)
{

glLoadIdentity();

ygotur-=0.1;
}



void GoturIleri(void)
{

glLoadIdentity();

zgotur -= 0.1;
}


void GoturGeri(void)
{

glLoadIdentity();

zgotur += 0.1;
}


void YanUzat(void)
{

glLoadIdentity();

xolcu += 0.1;
}

void BoyUzat(void)
{

glLoadIdentity();

yolcu += 0.1;
}


void CevirSag(void)
{

glLoadIdentity();

derece += 0.5;
}


void CevirSol(void)
{

glLoadIdentity();

derece -= 0.5;
}



void Basla(void)
{

glClearColor (0.0, 0.0, 0.0, 0.0);

glShadeModel (GL_FLAT);

glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
}



void Klavye(int dugme, int x, int y)
{

switch(dugme)
{
case GLUT_KEY_LEFT:GoturSol(); break;
case GLUT_KEY_RIGHT:GoturSag(); break;
case GLUT_KEY_UP:GoturYuk(); break;
case GLUT_KEY_DOWN:GoturAsa(); break;
case GLUT_KEY_PAGE_UP:GoturIleri(); break;
case GLUT_KEY_PAGE_DOWN:GoturGeri(); break;
}

glutPostRedisplay();
}



void Klavye(unsigned char dugme, int x, int y)
{

switch(dugme)
{
case 'a':YanUzat();break;
case 's':BoyUzat();break;
case 'z':CevirSol();break;
case 'x':CevirSag();break;
}

glutPostRedisplay();
}


void UcdCokgen(void)
{

glPushMatrix();

glColor3f(1.0, 0.0, 0.0);

glTranslatef(xgotur,ygotur,zgotur);

glRotatef(derece, 0.0, 1.0, 0.0);

glScalef(xolcu, yolcu, zolcu);



glBegin(GL_QUADS);

glVertex3f(-0.4, 0.3, 0.1); //önyüz
glVertex3f( 0.4, 0.3, 0.1);
glVertex3f( 0.4, -0.3, 0.1);
glVertex3f(-0.4, -0.3, 0.1);

glEnd();

glBegin(GL_QUADS);

glVertex3f(-0.4, 0.3, -0.1); //solyanyüz
glVertex3f(-0.4, 0.3, 0.1);
glVertex3f(-0.4,-0.3, 0.1);
glVertex3f(-0.4,-0.3, -0.1);

glEnd();

glBegin(GL_QUADS);

glVertex3f(-0.4, 0.3, -0.1); //arkayüz
glVertex3f( 0.4, 0.3, -0.1);
glVertex3f( 0.4, -0.3, -0.1);
glVertex3f(-0.4, -0.3, -0.1);

glEnd();

glBegin(GL_QUADS);

glVertex3f(0.4, 0.3, -0.1); //sağyanyüz
glVertex3f(0.4, 0.3, 0.1);
glVertex3f(0.4, -0.3, 0.1);
glVertex3f(0.4, -0.3, -0.1);

glEnd();

glBegin(GL_QUADS);

glVertex3f(-0.4, 0.3, 0.1); //üstkapak
glVertex3f( 0.4, 0.3, 0.1);
glVertex3f( 0.4, 0.3, -0.1);
glVertex3f(-0.4, 0.3, -0.1);

glEnd();

glBegin(GL_QUADS);

glVertex3f( 0.4, -0.3, 0.1); //altkapak
glVertex3f(-0.4, -0.3, 0.1);
glVertex3f(-0.4, -0.3, -0.1);
glVertex3f( 0.4, -0.3, -0.1);

glEnd();

glPopMatrix();
}


void CizimYeri(void)
{
glClear(GL_COLOR_BUFFER_BIT);

glColor3f(1.0, 1.0, 1.0);

glLoadIdentity();

gluLookAt(0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);

UcdCokgen();

glutSwapBuffers();
}


void TekrarBoyut(int en, int boy)
{

glViewport (0, 0, en, boy);

glMatrixMode (GL_PROJECTION);

glLoadIdentity ();

gluPerspective(90, (float)en / (float)boy, 1.0, 100.0);

glMatrixMode (GL_MODELVIEW);
}


int main(int argc, char **argv)
{

glutInit(&argc, argv);

glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);

glutInitWindowSize (en, boy);

glutInitWindowPosition (0, 0);

glutCreateWindow ("OpenGL- Üç boyutlu model çokgeni hareket ettirmek");

Basla();

glutReshapeFunc(TekrarBoyut);

glutDisplayFunc(CizimYeri);

glutSpecialFunc(Klavye);

glutKeyboardFunc(Klavye);



glutMainLoop();


return 0;
}

//-------------------------------------------------------------------




GLut

Açıklamalar



glutKeyboardFunc()

glutSpecialFunc()

Bu iki işlevde geri çağırmalı komuttur. Ayraçlarının içine kendimizin belirleyeceği işlevin adını yazıp, kaydettiririz. Program içinde, OpenGL bu işlevi çağırıp işler. glutKeyboardFunc() işlevine kaydettirdiğimiz işlevin ayracı içinde, klavyede kullanılacak karakterlerin unsigned char türünde (x, y) bilgilerini gösteren bilgiler bulunur. örnekte kaydettirmek istediğimiz işlevin adı (Klavye) idi.



void Klavye(unsigned char dugme, int x, int y)

Bu işlev ile yalnız karakter düğmelerini kullana biliriz (a, b, c, d) gibi.




void Klavye(int dugme, int x, int y)
GLUT_KEY_F1
GLUT_KEY_F2
GLUT_KEY_F3
GLUT_KEY_F4
GLUT_KEY_F5
GLUT_KEY_F6
GLUT_KEY_F7
GLUT_KEY_F8
GLUT_KEY_F9
GLUT_KEY_F10
GLUT_KEY_F11
GLUT_KEY_F12
GLUT_KEY_LEFT
GLUT_KEY_RIGHT
GLUT_KEY_UP
GLUT_KEY_DOWN
GLUT_KEY_PAGE_UP
GLUT_KEY_PAGE_DOWN
GLUT_KEY_HOME
GLUT_KEY_END
GLUT_KEY_INSERT


Bu işlevde klavye üzerinde' ki özel işlev düğmelerini kullana biliriz. bunlar yukarıda sıralanmıştır. Programımızda GLUT_KEY_PAGE_UP özel düğmesi, modelimizi ileriye doğru (pencerenin derinlemesine -z ekseni boyunca) götürmekten sorumludur. Bu özel düğmeye basınca, GoturIleri() işlevi çağrılır, buradan zgotur değişkenine (-0.1) değeri eklenir ve Klavye() işlevinden, glutPostRedisplay() işlevi yardımıyla bu bilgiler CizimYeri(void) işlevine aktarılıp işlenir. Diğer tüm hareketlerin çalışması aynı bu yönde gelişir.



glutLookAt(x0, y0, z0, x1, y1, z1, x2, y2, z2)
Bu işlevin ilk üç parametresi x0, y0, z0 kameranın konumunu ayarlar. Eğer baktığımız modele çok yakınsak ekranımızda hiç birşey göremeyiz. Bunun tersi durum olarakta, modelimizin önündeysek, Bu durumda model kameranın arkasında kalacağı için ekranda yine birşey göremeyiz. Bu yüzden kameramızı modeli tamamen göre bileceğimiz bir uzaklığa çekmeliyiz. Gösterim dönüşümü işlevi olan glFrustum() komutundaki (yakın ve uzak) değerlerinin arasındaki bir değere kameramızı ayarlaya biliriz. Yalnız yukarıdaki programda, Gösterim dönüşümü işlevi olarak gluPerspective() işlevi kullanılmıştır, yakın ve uzak değerlerinin kullanımı iki işlevdede aynı olduğu için bir sorun çıkmaz. Kameramızı bu yakın ve uzak değerlerinin arasında bir değere ayarlayabiliriz. Kameramızın bu mercek ayarı, gluLookAt() işlevindeki ( z0 ) parametresiyle yapılır. Örneğimizde yakın değer (1.0) uzak değeri (2000.0) seçilmiş, demekki biz modelimizi görünür kılmak için, bu iki değer arasında bir değer seçmeliyiz. Biz örnekte 2.0 değerini uygun gördük. Siz farklı değerler vererek deniye bilirsiniz ve sonucu daha iyi gözlersiniz. gluLookAt() işlevinin ( y0 ) parametresi kameramızın tepeden veya aşağıdan bakmasını, ( x0 ) parametresi ise kameramızın modele sağdan veya soldan bakmasını sağlar. Sonraki üç parametre ( x1, y1, z1 ) kameramızın yönlendirilmesini sağlar. ( x2, y2, z2 ) modelimize dikmi yoksa yanmı bakacağımızı ayarlar. Dik bakacaksak kamerayı dik tutmak zorundayız, bu yüzden ( y2 ) parametresini (1) olarak ayarlamalıyız. Eğer kameramızı yana yatıracaksak bukez ( x2 ) parametresiyle oynamalıyız. Ancak genellikle kamera dik konumda tutulduğu için ( y2 ) ekseni (1) diğerleri (0) değerleriyle kullanılır.
Sayfa başına dön Aşağa gitmek
https://yazilimnet.yetkin-forum.com
 
Programlama C/C++ & OpenGL Üç boyutlu modeli hareket ettirmek
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-
» C Programlama Dilinde İlk Programımız
» C Programlama Diline Giriş
» Autocad'de 3D katı modeli dilimleme (slice komutu)
» C++ ile paralel programlama
» C Programlama Dilinde Ek Bilgiler

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
Yazilim Öğrenmenin Tek Adresi... :: Masaüstü Programlama :: C / C++-
Buraya geçin: