الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

I Need Help In Opengl

بدأه الفلاش في 12 مايو 2008 · 10 رد · 2,155 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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.

#2

الكود التالي يوضح الإبريق ثلاثي الأبعاد ومن لديه الخبرة يكمل رسم الطاولة والأرضية

#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

#3

عدد القراء وصل أكثر من 35 والردود صفر؟؟؟

وينكم شباب؟؟

تم تعديل هذه المشاركة بواسطة الفلاش في 16 مايو 2008 في 09:29

#4

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

glLoadIdentity();
glTranlsatef(0,0,0);
glScalef(4,0.5,4);
glutSolidCube(1);

وهكذا .. عدل فقط في القيم .. وستجد أنك تستطيع رسم اي شكل شبيه بالمكعب .. بالتغيير فقط من حجمه .. scale .

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#5

شكرا عزيزي الشمري على الرد.

حاولت وضع الكود glLoadIdentity();

glTranlsatef(0,0,0);

glScalef(4,0.5,4);

glutSolidCube(1);

وغيرت القيم ولكن لم أتوصل الى النتيجة المطلوبة.

#6

هل السؤال صعب لهذه الدرجة ؟

أخواني اريد مساعدتكم .. ولكم خالص الشكر

#7

السؤال ليس صعب ..

لا املك فيجوال ستوديو الان ... والا كنت ترجمت برنامجك ..واختصرت عليك الوقت . . احتاج بعض الوقت .

الى أن اثبت الفيجوال ستوديو ... سأنبهك الى وجوب تغيير قيم gluLookat

- يجب ان تنظر الى الطاولة من زاوية مرتفعة قليلا ..... لذلك قم بتغيير بارمترات gluLookat .

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#8

بارك الله فيك ما تقصر يا الشمري ..

#9

توصلت الى الطريقة ولكن تبقى مشكلة الأرقام التي توضح الطاولة والأرضية (الأرقام الموجودة عشوائية) ومشكلة رسم الإبريق حيث أنه يظهر أسفل والمطلوب أن يكون على الطاولة

فمن لدبه الخبرة مطلوب للمساعدة

=============

#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

#10

تأخرت في الرد .. اسف :) .

عموما .. عملت مثالين .. الاول ثنائي الابعاد - والاخر ثلاثي الابعاد .

post-42837-1211622895_thumb.jpg

post-42837-1211622900_thumb.jpg

لا اعرف أيهم المطلوب ..

والمرفقات تحوي الاكواد المطلوبة .

بالتوفيق .

Teapot_On_Table.zip

Teapot_On_Table_3D.zip

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#11

شكرا أخي على ردك الطيب.

الموضوع تم تسليمه الاسبوع الماضي.

على العموم شكرا على تفاعلك مع الموضوع ومساعدتك لإخوانك في هذا المنتدى الذي نتمنى له التقدم والإزدهار.

وعسى أن يستفيد من الحل الموجود بقية الاخوة المقبلين على دراسة Computer Graphics with OpenGl

مواضيع مشابهة