+ Cevap Yaz
5 sonuçtan 1 ile 5 arası gösteriliyor

Konu: Opengl Koordinat Problemi

  1. #1
    Üye webmaster Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    12/2006
    Mesaj
    105

    Opengl Koordinat Problemi

    Herkese iyi akşamlar dilerim, yaşadığım bir problem hakkında sizlerden fikir almak durumundayım şimdi opengl kütüphanesi üzerinde çalışıyorum ekrana bir nesne çizdirdim ve bu nesnenin ekranda farenin tıklandığı noktaya ötelenmesi gerekiyor, bunun için şu kodlamayı kullandım,
    Kod:
    void mouse(int button, int state, int x, int y)
    {
         if(button == GLUT_LEFT_BUTTON and state == GLUT_DOWN)
         {
                   glTranslated(x,y,0);
                   glutPostRedisplay();
         } 
    }
    
    Kod:
    void display(void)
    {
         glClear(GL_COLOR_BUFFER_BIT);
         glBegin(GL_POLYGON);
         glColor3f(1,0,0);
         glVertex2f(0.0,0.0);
         glVertex2f(0.1,0);
         glVertex2f(0.1,0.1);
         glVertex2f(0.0,0.1);
         glEnd();
         glFlush();       
    }
    
    bu kodlamaya göre mantıkta hata yok fakat çok ters bir olay var, şimdi nesneyi çizdirirken belirttiğim vertex koordinatlarına göre koordinat düzlemi ekranın ortasında, yani ekranın ortasını orijin kabul ediyor fakat farenin tıklandığı koordinatlara bakıyorum ekranın orta noktasının koordinatlarına 300,300 gibi bir değer vermiş. Yani fareye tıklandığında şekil kayboluyor ki sebebide koordinatların uyuşmaması yani tıkladığım anda atıyorum 400,500 gibi bir noktaya öteliyor nesneyi ve doğal olarak buda ekranın dışına denk geliyor. Olayın anlaşılması için şeklide vereyim buraya;

    adsız.JPG

    Bu durumu nasıl çözerim bu konuda fikir verirseniz çok sevinirim...

  2. #2
    Üye
    Üyelik Tarihi
    10/2008
    Mesaj
    31

    Merhaba
    Aldığınız kordinatlar pencereye ait kordinatlar, gerçek kordinatları bulmak için
    gluUnProject(..) fonsiyonunu kullanmız gerekiyor.Kullanımı ek bilgi gerektiriyor bu yüzden aşağıda bir örnek yazdım.Umarım işinize yarar.

    PHP Kodu:
    void OpenglMouse(int x,int y ,double s_x,double s_y ,double s_z)
    {
      
    GLdouble m[16];
      
    GLdouble p[16];
      
    int ekran_kordinati[4];
      
    y=(ekran_kordinati[3]-y-1);
      
    glGetIntegerv(GL_VIEWPORTekran_kordinati);
      
    glGetDoublev(GL_MODELVIEW_MATRIXm);
      
    glGetDoublev(GL_PROJECTION_MATRIXp);
     
     
    gluUnProject((GLdouble)x,
                        (
    GLdouble)y
                                     
    0.0,
                                       
    m,
                                        
    p,
                    
    ekran_kordinati,
                                     
    s_x,                
                                     
    s_y,                 
                                     
    s_z);               
     return ; 
    }
     
    void mouse(int buttonint stateint xint y)
    {
    double sx=0;
    double sy=0;
    double sz=0;
    OpenglMouse(x,y,&sx,&sy,&sz);
         if(
    button == GLUT_LEFT_BUTTON and state == GLUT_DOWN)
         {
                   
    glTranslated(sx,sy,0);
                   
    glutPostRedisplay();
         } 

    Çetin

  3. #3
    Üye webmaster Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    12/2006
    Mesaj
    105

    evet bu fonksiyonu inceledim behsettiğiniz gibi olay ve bayağıda karmaşık benim açımdan, keşke daha kolay bir yolu olsaydı bu işin... Sana çok çok teşekkür ederim şimdi ben bu fonksiyonu birazcık anlamaya çalışayım.

  4. #4
    Üye webmaster Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    12/2006
    Mesaj
    105

    birde bir sorum daha olacak, şimdi çizdirdiğim bir resim var ve o resmin ortasında bir çubuk var benim o çubuğu döndürmem gerekiyor, yani resmin diğer kısımları sabit kalacak sadece o çubuk dönecek bunuda bir türlü beceremedim, glRotatef fonksiyonuyla bayağı bir uğraştım ama hep resmin tamamı dönüyor, bu konudada bir fikir verirseniz sevinirim.

  5. #5
    Üye
    Üyelik Tarihi
    02/2008
    Mesaj
    234

    glPushMatrix and glPopMatrix fonksiyonlarını incelemende yarar var.

+ Cevap Yaz

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

     

Bookmarks

Mesaj Yazma Hakları

  • Yeni mesajgöndermezsiniz
  • Cevap yazamazsınız
  • Dosya ekleyemezsiniz
  • Mesajınızı düzenleyemezsiniz