# منتديات طلاب الجامعات الأردنية > منتدى علم الحاسوب CS >  مكتبة الرسم بإستخدام الحاسوب OpenGL

## Sc®ipt

مرحبا شباب

في شباب كثير سألو عن مكتبة الـ OpenGL و قالو انها ما نزلت و في ناس ما اخذوها من اللاب
المهم انا جبتها و هي موجودة في المرفقات

و هاد اول كود كتبناه بالمختبر للتجربة


```
/**********************************
        Computer Graphics Lab
             01/03/2010
***********************************/
#include <gl\glut.h>

    void dispaly()
    {
        glClearColor(1.0,1.0,1.0,0.0);
        glClear(GL_COLOR_BUFFER_BIT);
        glViewport(0,0,400,400);
        glColor3f(1.0,0,0);
        
        glBegin(GL_LINES);
            glVertex2f(-1.0f,-1.0f);
            glVertex2f(1.0f,1.0f);
        glEnd();

        glBegin(GL_LINES);
            glVertex2f(-1.0f,1.0f);
            glVertex2f(1.0f,-1.0f);
        glEnd();
        
        glFlush();
    }

void main(int argc,char * argv[])
{
    glutInit(&argc,argv);
    glutInitWindowPosition(400,100);
    glutInitWindowSize(400,400);
    glutCreateWindow("Lab 01/03/2010");
    glutDisplayFunc(dispaly);
    glutMainLoop();
}
```



و بالنسبة لطريقة توزيع ملفات مكتبة الـ OpenGL انا بحثت بالنت و لقيت برنامج بوزع الملفات بمكانها الصحيح بغض النظر عن نوع نظام التشغيل او بيئة التطوير مثل فيجيوال ستيديو 6 او 2005 و جار رفعه على سيرفر خارجي لأن حجمه كبير ولا استطيع تحميله في المرفقات و سيتم ادراج موضوع بهذا البرنامج اليوم او غدا بموضوع مستقل

----------


## شذى الياسمين

يعطيك العافيه عالموضوع و عالمتابعه ..
انا هلأ نزلتها بس لسا ما جربت انه اشغلها ..
اكرر شكري لك ..

----------


## Sc®ipt

العفو
نورتي  :Smile:

----------


## شذى البنفسج

شو كنت احبها هالمادة ..
اعلى علامة باللابات كلها كانت بالرسم جبت 25\25

يعطيك العافية ..

----------


## Sc®ipt

الله يعافيكي
و شكرا لمرورك  :Smile:

----------


## 3beer z3'oul

thanx alot
u know  aanything bout jump over using opngl
can u help me?

----------


## حنوو33

راااائع

----------


## أميرة قوس النصر

رائع

----------


## Sc®ipt

مروركم اروع و شكرا لتواجدكم

و عبير ان شاء الله هاليومين رح انزل موضوع شرح توزيع ملفات المكتبة بالصور او فيديو ع الأغلب يوم الجمعة

و ان شاء الله بنتساعد عشان نتخطى المادة عند عثمان  :SnipeR (7):

----------


## Ammar Qasaimeh

شكرا ابو الزوز , مع انه مش منزل الماده  :44ebcbb04a: 
تم تثبيت الموضوع

----------


## Sc®ipt

يسلموا عمار على التثبيت
و ان شاء الله بتوخذها عند عثمان و بتستمتع مثلي  :04f8b3e14f:

----------


## Sc®ipt

مختبر الرسم بإستخدام الحاسوب 15/3/2010
primitive

طبعا مثل البرنامج الي كتبه الدكتور بالمختبر بس التعديل اني عملت كل اشي بـ Function مستقل مثل رسم الخط و المحاور Function لحالها و رسم المربع Function لحالها طبعا عملت هيك عشان اخفف العجقة لأنه الرسومات و الأشكال كانت تطلع فوق بعض و هسه عشان تشوف الشكل ما عليك إلا انك تستدعي الfunction من داخل ال display وانا حطيتهم كملاحظات (//) عشان تشوف الشكل امحي الكومينت و نفذ

لاحظ الكود بعدين الأمثلة للفهم اكثر



```
 
/**********************************
        Computer Graphics Lab
             15/03/2010
    Zaed Murad
    unijust@unijust.com
***********************************/
#include <gl/glut.h>
#include <math.h>
 void drawPoints()
 {
  float i;
  glBegin(GL_POINTS);
   glColor3f(0,0,1);
   for(i=-25;i<=25;i+=0.1)
   {
    glVertex2i(i,i*i); // or any function from math.h
   }
  glEnd();
 }
 void drawLines()
 {
  glBegin(GL_LINES);
   // X as Green
   glColor3f(0,1,0);
   glVertex2i(-50,0);
   glVertex2i(50,0);
   // Y as Red
   glColor3f(1,0,0);
   glVertex2i(0,-50);
   glVertex2i(0,50);
  glEnd();
 }
 
 void drawLinesStrip()
 {
  glBegin(GL_LINE_STRIP);
   glColor3f(0,0,1);
   glVertex2i(-20,20);
   glVertex2i(20,20);
   glVertex2i(20,-20);
   glVertex2i(-20,-20);
  glEnd();
 }
 
 void drawPolygon()
 {
  glBegin(GL_POLYGON);
   glColor3f(0,0,1);
   glVertex2i(-20,20);
   glVertex2i(-30,10);
   glVertex2i(-10,-10);
   glVertex2i(-20,-10);
   glVertex2i(10,-20);
   glVertex2i(20,-10);
   glVertex2i(15,15);
  glEnd();
 }
 void drawLinesLoop()
 {
  glBegin(GL_LINE_LOOP);
   glColor3f(0,0,1);
   glVertex2i(-20,20);
   glVertex2i(20,20);
   glVertex2i(20,-20);
   glVertex2i(-20,-20);
  glEnd();
 }
 void drawTriangles()
 {
  glBegin(GL_TRIANGLES);
   glColor3f(0,0,1);
   glVertex2i(0,25);
   glVertex2i(-25,1);
   glVertex2i(25,1);
   
   glColor3f(0,0,1);
   glVertex2i(0,-25);
   glVertex2i(25,-1);
   glVertex2i(-25,-1);
  glEnd();
 }
 void display()
 {
  glClearColor(0,0,0,0);
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  gluOrtho2D(-50,50,-50,50);
  
  // Call any function of primitive here
  drawLines();
  //drawPoints();
  //drawLinesStrip();
  //drawLinesLoop();
  //drawPolygon();
  //drawTriangles();
  
  // this function used without glBegin()
  //glRecti(-30,50,10,40);
  glFlush();
 }
void main(int argc,char** argv)
{
 glutInit(&argc,argv);
 glutInitWindowSize(400,400);
 glutInitWindowPosition(200,100);
 glutCreateWindow("15/3/2010");
 glutDisplayFunc(display);
 glutMainLoop();
}
```

 بعض الصور













و لرؤية بقية الأشكال و الرسومات بنفس الطريقة
والكود بسيط جدا لأنه مقسم لـ function و احنا بنستدعيها و اي استفسار انا جاهز

----------


## modey22522

مع اني مالي دخل في الموضوع

لكن حاب اشكرك وقول الله يوفقك اخي

تحياتي

----------


## Sc®ipt

> مع اني مالي دخل في الموضوع
> 
> لكن حاب اشكرك وقول الله يوفقك اخي
> 
> تحياتي


 
تسلمي و شكرا لمرورك  :Smile:

----------


## شذى الياسمين

*وانا مع انه الي دخل بالموضوع ..* 
*بشكرك كتير كتير كتير وشكرا كتير عالبرامج والله يعطيك العافيه يا رب ..*
*ويا رب تنزلها A ويعوضك عن تعبك ..*

----------


## Sc®ipt

> *وانا مع انه الي دخل بالموضوع ..* 
> *بشكرك كتير كتير كتير وشكرا كتير عالبرامج والله يعطيك العافيه يا رب ..*
> *ويا رب تنزلها A ويعوضك عن تعبك ..*


تسلمي يا رب و الله يسمع منك  :Smile: 

شكرا لمرورك

----------


## Sc®ipt

مختبر الرسم بإستخدام الحاسوب 22/03/2010
مبدأ عمل و رسم الـ 3D



```
 
/**********************************
 Computer Graphics Lab
 15/03/2010
    Zaed Murad
    unijust@unijust.com
***********************************/
#include <cmath>
#include <gl\glut.h>
 int pts[8][3] = { {0,0,0},{1,0,0},{1,0,1},{0,0,1},{0,1,0},{1,1,0},{1,1,1},{0,1,1} };
 double r = 4;
 double theta = 0.5;
 double cx = r * cos(theta);
 double cz = r * cos(theta);
 double cy = 2;
 void quad(int v1,int v2,int v3,int v4)
 {
  glBegin(GL_QUADS);
   glVertex3iv(pts[v1]);
   glVertex3iv(pts[v2]);
   glVertex3iv(pts[v3]);
   glVertex3iv(pts[v4]);
  glEnd();
 }
 void drawCube()
 {
  glColor3f(1,0,0);
  quad(7,3,2,6);
  glColor3f(0,1,0);
  quad(0,4,5,1);
  
  glColor3f(0,0,1);
  quad(7,4,0,3);
  glColor3f(1,1,0);
  quad(2,3,0,1);
  glColor3f(0,1,1);
  quad(2,1,5,6);
  glColor3f(0,0.5,1);
  quad(6,5,4,7);
 }
 void init()
 {
  glLoadIdentity();
  gluLookAt(cx,cy,cz,0,0,0,0,1,0); // y is the up vector
  glMatrixMode(GL_PROJECTION);
  glOrtho(-7,7,-7,7,-7,7);
 }
 void drawAxis()
 {
  glBegin(GL_LINES);
   
   /******** X ********/
   glColor3f(0,1,0);
   glVertex3f(0,0,0);
   glVertex3f(5,0,0);
   /******** Y ********/
   glColor3f(1,0,0);
   glVertex3f(0,0,0);
   glVertex3f(0,5,0);
   /******** Z ********/
   glColor3f(0,0,1);
   glVertex3f(0,0,0);
   glVertex3f(0,0,5);
  glEnd();
 }
 
 void display()
 {
  glClearColor(1,1,1,0);
  glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
  drawAxis();
  drawCube();
  glFlush();
 }
 void key(unsigned char c,int x,int y)
 {
  switch(c)
  {
  case 'z':
  case 'Z':
   theta -=0.0174444;
   if(theta < 0)
    theta = 2 * (22/7.0);
   break;
  case 'x':
  case 'X':
   theta +=0.0174444;
   if(theta > 2*(22/7))
    theta = 0;
   break;
  }
  cx = r * cos(theta);
  cz = r * sin(theta);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();
  gluLookAt(cx,cy,cz,0,0,0,0,1,0); // y is the up vector
  
  display();
 }
void main(int c,char** v)
{
 glutInit(&c,v);
 glutInitWindowPosition(100,100);
 glutInitWindowSize(400,400);
 glutCreateWindow("3D Project");
 init();
 glEnable(GL_DEPTH_TEST);
 glutKeyboardFunc(key);
 glutDisplayFunc(display);
 glutMainLoop();
}
```

 نماذج و صور عند تنفيذ البرنامج



و عند الضغط على حرف X ستدور الكاميرا حول الرسم الثلاثي الأبعاد (المكعب) لجهة اليمين :



و عند الضغط على حرف Z ستدور الكاميرا حول الرسم الثلاثي الأبعاد (المكعب) لجهة اليسار :




و اي استفسار انا جاهز  :SnipeR (61): 

 :SnipeR (93):

----------


## جسر الحياة

إنت مو طبيعي يا زيد .. عنجد يسلمو كتير 


أنا آخر مختبر للأسف ما حضرته من كسلي

بس بفضل الله وبفضك كل شي رح يكون تمام 

 :SnipeR (93):

----------


## Sc®ipt

> إنت مو طبيعي يا زيد .. عنجد يسلمو كتير 
> 
> 
> أنا آخر مختبر للأسف ما حضرته من كسلي
> 
> بس بفضل الله وبفضك كل شي رح يكون تمام


العفو حبيبي عمر
وانا كمان ما حضرت اخر محاضرة نظري  :SnipeR (71): 

و ان شاء الله بتكون كل امور المادة معك تمام بالنظري و العملي  :Smile:

----------


## شذى الياسمين

*شكرا كتير كتير .. ويعطيك العافيه يا رب ..*

----------


## Sc®ipt

> *شكرا كتير كتير .. ويعطيك العافيه يا رب ..*



الله يعافيكي وشكر لمرورك  :Smile:

----------


## Sc®ipt

مختبر الرسم بإستخدام الحاسوب 30/3/2010
برنامج الهرم الرباعي الأوجه ثلاثي الأبعاد

و هذا هو الكود و هو شبيه بكود المكعب الثلاثي الأبعاد إلا انه تم استخدام المثلثات TRIANGLES لرسم اوجه الهرم و المربع QUADS لرسم قاعدة الهرم



```
/**********************************
    Computer Graphics Lab
    30/03/2010
    Zaed Murad
    unijust@unijust.com
***********************************/
#include <cmath>
#include <gl\glut.h>

    int pts[5][3] = { {0,0,0},{4,0,0},{4,0,4},{0,0,4},{2,4,2}};
    double r = 3;
    double theta = 0.5;
    int a = 2;
    int b = 2;
    double cx = a + r * cos(theta);
    double cz = b +  r * sin(theta);
    double cy = 3.0;

    void triangle(int v1,int v2,int v3)
    {
        glBegin(GL_TRIANGLES);
            glVertex3iv(pts[v1]);
            glVertex3iv(pts[v2]);
            glVertex3iv(pts[v3]);
        glEnd();
    }

    void quad(int v1,int v2,int v3,int v4)
    {
        glBegin(GL_QUADS);
            glVertex3iv(pts[v1]);
            glVertex3iv(pts[v2]);
            glVertex3iv(pts[v3]);
            glVertex3iv(pts[v4]);
        glEnd();
    }

    void drawCube()
    {
        glColor3f(1,1,1);
        quad(0,1,2,3);
    }

    void drawTriangle()
    {
        glColor3f(0,0,1);
        triangle(0,1,4);

        glColor3f(0,1,1);
        triangle(3,2,4);

        glColor3f(1,0,1);
        triangle(2,1,4);

        glColor3f(0,1,0);
        triangle(0,3,4);
    }


    void init()
    {
        glLoadIdentity();
        gluLookAt(cx,cy,cz,2,0,2,0,1,0); // y is the up vector
        glMatrixMode(GL_PROJECTION);
        glOrtho(-7,7,-7,7,-7,7);
    }

    void drawAxis()
    {
        glBegin(GL_LINES);
            
            /******** X ********/
            glColor3f(0,1,0);
            glVertex3f(0,0,0);
            glVertex3f(5,0,0);

            /******** Y ********/
            glColor3f(1,0,0);
            glVertex3f(0,0,0);
            glVertex3f(0,5,0);

            /******** Z ********/
            glColor3f(0,0,1);
            glVertex3f(0,0,0);
            glVertex3f(0,0,5);

        glEnd();
    }



    void display()
    {
        glClearColor(0.5,0.5,0.5,0);
        glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

        drawAxis();
        drawCube();
        drawTriangle();

        glFlush();
    }

    void key(unsigned char c,int x,int y)
    {
        switch(c)
        {
        case 'y':
        case 'Y':
            theta -=0.0174444;
            if(theta < 0)
                theta = 2 * (22/7.0);
            break;
        case 'x':
        case 'X':
            theta +=0.0174444;
            if(theta > 2*(22/7))
                theta = 0;
            break;
        }
        cx = a + r * cos(theta);
        cz = b + r * sin(theta);
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
        gluLookAt(cx,cy,cz,2,0,2,0,1,0); // y is the up vector
        
        display();
    }

void main(int c,char** v)
{
    glutInit(&c,v);
    glutInitWindowPosition(100,100);
    glutInitWindowSize(400,400);
    glutCreateWindow("3D Project");
    init();
    glEnable(GL_DEPTH_TEST);
    glutKeyboardFunc(key);
    glutDisplayFunc(display);
    glutMainLoop();
}
```


بعض الصور بعد تنفيذ الكود



الهرم يتحرك نحو اليمين عند الضغط على X



الهرم يتحرك نحو اليسار عند الضغط على Y



و اي استفسار انا بالخدمة  :Smile:

----------


## Sc®ipt

مختبر الرسم بإستخدام الحاسوب 5/4/2010
bitmap


```
 
#include <gl\glut.h>
 GLubyte bitShape[20]={
  0x1c,0x00,0x1c,0x00,0x1c,0x00,0x1c,0x00,0x1c,0x00,
  0xff,0x80,0x7f,0x00,0x3e,0x00,0x1c,0x00,0x08,0x00
 };
 char x[]="ZAEDO";
 
 void init()
 {
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  gluOrtho2D(0,400,0,400);   // to invert the cordinate
 }
 void bitm(int x,int y)
 {
  glColor3f(0,1,0);     // shape color
  glRasterPos2i(x,y);     // the position of shape
  glBitmap(10,9,0,0,0,0,bitShape); // drawing shape from array
           // glBitmap(rows,cols,xOrigen,xOrigen,xOffset,yOffset,array);
           // glBitmap(10,9,10,9,0,0,bitShape);
           // glBitmap(10,9,9,10,0,0,bitShape);
           // glBitmap(10,9,5,5,0,0,bitShape);
 }
 void display()
 {
  glClearColor(0,0,0,0);
     /* for 2D  */     /* for 3D */
  glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
  glPixelStorei(GL_UNPACK_ALIGNMENT,1);
  
  /*
  for(int i=10;i<=350;i+=10)
   bitm(i,10);
  */
  bitm(10,10);
  glColor3f(1,1,1);
  glPointSize(5);
  glBegin(GL_POINTS);
   glVertex2i(50,50);
  glEnd();
  // to print an char in openGL
  glRasterPos2i(100,300);
  glutBitmapCharacter(GLUT_BITMAP_9_BY_15,'A');
  for(int i=0;i<5;i++)
  {
   glRasterPos2i(i*13+10,300);
   glutBitmapCharacter(GLUT_BITMAP_9_BY_15,x[i]);
  }
  glFlush();
 }
void main(int argc,char** argv)
{
 glutInit(&argc,argv);
 glutInitWindowPosition(100,100);
 glutInitWindowSize(400,400);
 glutCreateWindow("Bitmap Project");
 glEnable(GL_DEPTH_TEST);
 init();
 glutDisplayFunc(display);
 glutMainLoop();
}
```

 النتيجة :



 :Smile:

----------


## شذى الياسمين

*شكــــــــــــــــــــــــــــــــــــــــــــــرا كتـــــــــــــــــــــــــــــــــــــــيــــــــ  ـر ..*

----------


## فراشة الربيع

الموضوع ممتاز والله يعطيكوا ألف عافية 


فراشة الربيع :Bl (11):

----------


## Alaa23

يعطيك الف عافيه ع مجهودك

----------


## DANA MURAD

:Bl (7):   thnxxxx  :Bl (7):

----------


## 3سو

يعطيك العافيه

----------


## jaja20_01

[align=center]ههههههه
انا واللهِ لسى مو منزله الماده عالفصل الجاي انشاءالله.
بس الكل بيحكي عنها موووت على كتر ماهيه صعبه الله يستر منها انشاءالله خير
اخي ****** دائما مبدعا والكلمات تعجز عن الوصف
يعطيك 1000 عافيه [/align]

----------


## jaja20_01

[align=center]نسيت اسأل سؤال
هلا هادي الماده انا بقدر اعمل من خلااالها لعبة XO الغنيه عن التعريف
لو فيه طرق حد يزودنا بالكودات لالها مع العلم انا لااا أفقه منها شيء لكن بنتعلم عالبكير.
البنت ناازله دراسه بلبرمجه من متى مابعرف  :Bl (7):  لهيك حد يجيبلنا كود اللعبه خلنا نتعرف اكتر عالبرمجيه[/align]

----------


## نور الهدى

شكرا كتير يا جاجا لمحاولتك لحتى تساعديني
الله يستر زالله شكلها مسكره معي 
ادعيلي القى حل سريع  :Kiss 34:

----------

