يسلموا عمار على التثبيت
و ان شاء الله بتوخذها عند عثمان و بتستمتع مثلي
يسلموا عمار على التثبيت
و ان شاء الله بتوخذها عند عثمان و بتستمتع مثلي
مختبر الرسم بإستخدام الحاسوب 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 و احنا بنستدعيها و اي استفسار انا جاهز
وانا مع انه الي دخل بالموضوع ..
بشكرك كتير كتير كتير وشكرا كتير عالبرامج والله يعطيك العافيه يا رب ..
ويا رب تنزلها A ويعوضك عن تعبك ..
كن كالياسمين واصنع طوقاَ يفوح بــ شذى عطرك ..
واجعل رحيقك يفوح منك ...
ليصل لكل من احتاج اليك ...
فما اجمل ان تكون ,,, كـــ شذى الياسمين ..
مختبر الرسم بإستخدام الحاسوب 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 ستدور الكاميرا حول الرسم الثلاثي الأبعاد (المكعب) لجهة اليسار :
و اي استفسار انا جاهز
إنت مو طبيعي يا زيد .. عنجد يسلمو كتير
أنا آخر مختبر للأسف ما حضرته من كسلي
بس بفضل الله وبفضك كل شي رح يكون تمام
شكرا كتير كتير .. ويعطيك العافيه يا رب ..
كن كالياسمين واصنع طوقاَ يفوح بــ شذى عطرك ..
واجعل رحيقك يفوح منك ...
ليصل لكل من احتاج اليك ...
فما اجمل ان تكون ,,, كـــ شذى الياسمين ..
الذين يشاهدون الموضوع الآن: 8 (0 من الأعضاء و 8 زائر)
مواقع النشر (المفضلة)