Write an opengl program to draw teapot on a table, where the table has four legs and is supported on planar floor surface. the table consist of five cuboids, one serving as the tabletop and other four as table legs.
I Need Help In Opengl
الكود التالي يوضح الإبريق ثلاثي الأبعاد ومن لديه الخبرة يكمل رسم الطاولة والأرضية
#include <GL/glut.h>
void init(void)
{
glClearColor(0.0, 0.0, 0.0, 0.0);
glShadeModel(GL_FLAT);
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 1.0, 1.0);
glLoadIdentity(); /*clear the matrix */
/*viewing transformation*/
gluLookAt(0.0,0.0,5.0,0.0,0.0,0.0,0.0,1.0,0.0);
glBegin(GL_LINES);
glColor3f(1.0f,0.0f,0.0f); //y is red
glVertex3i(0,2,0);
glVertex3i(0,-2,0);
glColor3f(0.0f,1.0f,0.0f); //x is green
glVertex3i(2,0,0);
glVertex3i(-2,0,0);
glColor3f(0.0f,0.0f,1.0f); //z is blue
glVertex3i(0,0,2);
glVertex3i(0,0,-2);
glEnd();
glutWireCube (2.0);
//glutSolidCube (3.0);
glutWireTeapot (2.0);
glFlush();
}
void reshape(int w, int h)
{
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-1.0, 1.0, -1.0, 1.0, 1.5, 20.0);
glMatrixMode(GL_MODELVIEW);
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(100,100);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return 0;
}
تم تعديل هذه المشاركة بواسطة الفلاش في 13 مايو 2008 في 11:50
عدد القراء وصل أكثر من 35 والردود صفر؟؟؟
وينكم شباب؟؟
تم تعديل هذه المشاركة بواسطة الفلاش في 16 مايو 2008 في 09:29
الطاولة عبارة عن متوازي مستطيلات .. وكذلك ارجل الطاولة ..
glLoadIdentity(); glTranlsatef(0,0,0); glScalef(4,0.5,4); glutSolidCube(1);
وهكذا .. عدل فقط في القيم .. وستجد أنك تستطيع رسم اي شكل شبيه بالمكعب .. بالتغيير فقط من حجمه .. scale .
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri
شكرا عزيزي الشمري على الرد.
حاولت وضع الكود glLoadIdentity();
glTranlsatef(0,0,0);
glScalef(4,0.5,4);
glutSolidCube(1);
وغيرت القيم ولكن لم أتوصل الى النتيجة المطلوبة.
هل السؤال صعب لهذه الدرجة ؟
أخواني اريد مساعدتكم .. ولكم خالص الشكر
السؤال ليس صعب ..
لا املك فيجوال ستوديو الان ... والا كنت ترجمت برنامجك ..واختصرت عليك الوقت . . احتاج بعض الوقت .
الى أن اثبت الفيجوال ستوديو ... سأنبهك الى وجوب تغيير قيم gluLookat
- يجب ان تنظر الى الطاولة من زاوية مرتفعة قليلا ..... لذلك قم بتغيير بارمترات gluLookat .
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri
بارك الله فيك ما تقصر يا الشمري ..
توصلت الى الطريقة ولكن تبقى مشكلة الأرقام التي توضح الطاولة والأرضية (الأرقام الموجودة عشوائية) ومشكلة رسم الإبريق حيث أنه يظهر أسفل والمطلوب أن يكون على الطاولة
فمن لدبه الخبرة مطلوب للمساعدة
=============
#include <GL/glut.h>
void init(void)
{
glClearColor(1.0, 1.0, 1.0, 0.0);
//glShadeModel(GL_FLAT);
glShadeModel(GL_SMOOTH);
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 1.0, 1.0);
glLoadIdentity(); /*clear the matrix */
gluLookAt(0.0,0.0,8.0,0.0,0.0,0.0,0.0,1.0,0.0); //////Look\\\\\\
//gluPerspective(1,1,1,0);
glColor3f(0.0f,0.0f,1.0f); ////Teapot/////
glutWireTeapot(0.8);
glColor3f(1.0f,0.0f,0.0f); //// Table ////
glBegin(GL_POLYGON);
glVertex3d(-2.4,2.2,2);
glVertex3d(-2.4,2.6,-2);
glVertex3d(4,2,1);
glVertex3d(4,2.6,-1);
glEnd();
glColor3f(1.0f,1.0f,0.0f); //// Table leg////
glBegin(GL_POLYGON);
glVertex3d(-1,4.2,1);
glVertex3d(-1,4.6,-1);
glVertex3d(1,4,1);
glVertex3d(1,4,-1);
glEnd();
glColor3f(1.0f,0.0f,1.0f); //// Table leg ////
glBegin(GL_POLYGON);
glVertex3d(-0.5,.9,1);
glVertex3d(-0.4,.9,-1);
glVertex3d(1,9,1);
glVertex3d(1,9,-1);
glEnd();
glColor3f(1.0f,0.0f,1.0f); //// Table leg ////
glBegin(GL_POLYGON);
glVertex3d(-.3,2,1);
glVertex3d(-2.4,2.6,-1);
glVertex3d(4,.2,1);
glVertex3d(4,2.6,-1);
glEnd();
glColor3f(1.0f,1.0f,0.0f); //// Table leg ////
glBegin(GL_POLYGON);
glVertex3d(-3,2,1);
glVertex3d(-2.4,2.6,-1);
glVertex3d(1,1.22,1);
glVertex3d(1,.6,-1);
glEnd();
glColor3f(0.0f,1.0f,0.0f); //// Floor ////
glBegin(GL_POLYGON);
glVertex3d(-3,2,1);
glVertex3d(-2.4,0.1,-1);
glVertex3d(4,2,1);
glVertex3d(4,2.0,-1);
glEnd();
glFlush();
}
////////////////////////////////Reshape///////////
void reshape(int w, int h)
{
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-1.0, 1.0, -1.0, 1.0, 1.5, 20.0);
glMatrixMode(GL_MODELVIEW);
}
///////////////////////////Main/////////////////////
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(600,600);
glutInitWindowPosition(100,100);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return 0;
}تم تعديل هذه المشاركة بواسطة الفلاش في 20 مايو 2008 في 21:10
تأخرت في الرد .. اسف :) .
عموما .. عملت مثالين .. الاول ثنائي الابعاد - والاخر ثلاثي الابعاد .
لا اعرف أيهم المطلوب ..
والمرفقات تحوي الاكواد المطلوبة .
بالتوفيق .
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri
شكرا أخي على ردك الطيب.
الموضوع تم تسليمه الاسبوع الماضي.
على العموم شكرا على تفاعلك مع الموضوع ومساعدتك لإخوانك في هذا المنتدى الذي نتمنى له التقدم والإزدهار.
وعسى أن يستفيد من الحل الموجود بقية الاخوة المقبلين على دراسة Computer Graphics with OpenGl