Download presentation
Presentation is loading. Please wait.
Published byArabella Lester Modified over 9 years ago
1
دوران شكل، رسم اشكال 3D مركز تحصيلات تكميلي در علوم پايه زنجان بخش فنآوري اطلاعات گرافيك كامپيوتري قسمت پنجم سري آموزش هاي OpenGL
2
تعريف دو متغير جديد براي دوران يك شكل بايد در هر لحظه موقعيت چرخش شكل در صفحه را در جايي ذخيره كنيم. در اينجا ما يك مثل و مربع داريم و مي خواهيم آنها را حول دو محور دوران دهيم. GLfloat rtri; GLfloat rquad;
3
تابع دوران glRotatef(Angle,Xvector,Yvector,Zvecto r) اين تابع با گرفتن 4 آرگمان دوران به شكل اعمال مي نمايد. Angle: ميزان زاويه گردش شكل Xvector: ميزان دوران در راستاي محور X Yvector: ميزان دوران در راستاي محور Y Zvector: ميزان دوران در راستاي محور Z
4
محل قرار گيري تابع دوران int DrawGLScene(GLvoid){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslatef(-1.5f,0.0f,-6.0f); glRotatef(rtri,0.0f,1.0f,0.0f); glBegin(GL_TRIANGLES); glEnd(); rtri+=0.2f; rquad-=0.15f; return TRUE; }
5
تغيير متغيرها در هر بار تازه سازي صفحه ميزان متغيرزاويه اگر تغيير كند شكل مي گردد. براي نمونه در قطعه كد قبل دو مقدار متغير در هر بار تازه سازي صفحه اضافه مي شود. rtri+=0.2f; rquad-=0.15f;
6
خروجي
7
رسم اشكال 3D براي رسم اشكال سه بعدي تنها كافي است كه چند نتقطه جديد را براي بعد هاي ديگر شكل خود را اضافه نماييد. در اينجا يك نمونه كد آورده مي شود كه به مثلث و مربع مثال قبل يك بعد ديگر اضافه مي كند. هر گوشه آنها را به رنگ خاصي در مي آورد
8
رسم مثلث سه بعدي glBegin(GL_TRIANGLES); glColor3f(1.0f,0.0f,0.0f); // Red glVertex3f( 0.0f, 1.0f, 0.0f); // Top Of Triangle (Front) glColor3f(0.0f,1.0f,0.0f); // Green glVertex3f(-1.0f,-1.0f, 1.0f); // Left Of Triangle (Front) glColor3f(0.0f,0.0f,1.0f); // Blue glVertex3f( 1.0f,-1.0f, 1.0f); // Right Of Triangle (Front) glColor3f(1.0f,0.0f,0.0f); // Red glVertex3f( 0.0f, 1.0f, 0.0f); // Top Of Triangle (Right) glColor3f(0.0f,0.0f,1.0f); // Blue glVertex3f( 1.0f,-1.0f, 1.0f); // Left Of Triangle (Right) glColor3f(0.0f,1.0f,0.0f); // Green glVertex3f( 1.0f,-1.0f, -1.0f); // Right Of Triangle (Right)
9
رسم مثلث سه بعدي - 2 glColor3f(1.0f,0.0f,0.0f); // Red glVertex3f( 0.0f, 1.0f, 0.0f); // Top Of Triangle (Back) glColor3f(0.0f,1.0f,0.0f); // Green glVertex3f( 1.0f,-1.0f, -1.0f); // Left Of Triangle (Back) glColor3f(0.0f,0.0f,1.0f); // Blue glVertex3f(-1.0f,-1.0f, -1.0f); // Right Of Triangle (Back) glColor3f(1.0f,0.0f,0.0f); // Red glVertex3f( 0.0f, 1.0f, 0.0f); // Top Of Triangle (Left) glColor3f(0.0f,0.0f,1.0f); // Blue glVertex3f(-1.0f,-1.0f,-1.0f); // Left Of Triangle (Left) glColor3f(0.0f,1.0f,0.0f); // Green glVertex3f(-1.0f,-1.0f, 1.0f); // Right Of Triangle (Left) glEnd();
10
رسم مربع سه بعدي glBegin(GL_QUADS); glColor3f(0.0f,1.0f,0.0f); // Set The Color To Green glVertex3f( 1.0f, 1.0f,-1.0f); // Top Right Of The Quad (Top) glVertex3f(-1.0f, 1.0f,-1.0f); // Top Left Of The Quad (Top) glVertex3f(-1.0f, 1.0f, 1.0f); // Bottom Left Of The Quad (Top) glVertex3f( 1.0f, 1.0f, 1.0f); // Bottom Right Of The Quad (Top) glColor3f(1.0f,0.5f,0.0f); // Set The Color To Orange glVertex3f( 1.0f,-1.0f, 1.0f); // Top Right Of The Quad (Bottom) glVertex3f(-1.0f,-1.0f, 1.0f); // Top Left Of The Quad (Bottom) glVertex3f(-1.0f,-1.0f,-1.0f); // Bottom Left Of The Quad (Bottom) glVertex3f( 1.0f,-1.0f,-1.0f); // Bottom Right Of The Quad (Bottom)
11
رسم مربع سه بعدي - 2 glColor3f(1.0f,0.0f,0.0f); // Set The Color To Red glVertex3f( 1.0f, 1.0f, 1.0f); // Top Right Of The Quad (Front) glVertex3f(-1.0f, 1.0f, 1.0f); // Top Left Of The Quad (Front) glVertex3f(-1.0f,-1.0f, 1.0f); // Bottom Left Of The Quad (Front) glVertex3f( 1.0f,-1.0f, 1.0f); // Bottom Right Of The Quad (Front) glColor3f(1.0f,1.0f,0.0f); // Set The Color To Yellow glVertex3f( 1.0f,-1.0f,-1.0f); // Bottom Left Of The Quad (Back) glVertex3f(-1.0f,-1.0f,-1.0f); // Bottom Right Of The Quad (Back) glVertex3f(-1.0f, 1.0f,-1.0f); // Top Right Of The Quad (Back) glVertex3f( 1.0f, 1.0f,-1.0f); // Top Left Of The Quad (Back)
12
رسم مربع سه بعدي - 3 glColor3f(0.0f,0.0f,1.0f); // Set The Color To Blue glVertex3f(-1.0f, 1.0f, 1.0f); // Top Right Of The Quad (Left) glVertex3f(-1.0f, 1.0f,-1.0f); // Top Left Of The Quad (Left) glVertex3f(-1.0f,-1.0f,-1.0f); // Bottom Left Of The Quad (Left) glVertex3f(-1.0f,-1.0f, 1.0f); // Bottom Right Of The Quad (Left) glColor3f(1.0f,0.0f,1.0f); // Set The Color To Violet glVertex3f( 1.0f, 1.0f,-1.0f); // Top Right Of The Quad (Right) glVertex3f( 1.0f, 1.0f, 1.0f); // Top Left Of The Quad (Right) glVertex3f( 1.0f,-1.0f, 1.0f); // Bottom Left Of The Quad (Right) glVertex3f( 1.0f,-1.0f,-1.0f); // Bottom Right Of The Quad (Right) glEnd();
13
خروجي
14
پايان قسمت پنجم فايل هاي آماده اين قسمت: opengl_rotat.cpp opengl_3d.cpp باتشكر پدارم حياتي – pedram@iasbs.ac.irpedram@iasbs.ac.ir محمد رضا خلقتي – m_khelghati@iasbs.ac.ir m_khelghati@iasbs.ac.ir خرداد 1385
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.