يسلموا عمار على التثبيت
و ان شاء الله بتوخذها عند عثمان و بتستمتع مثلي :04f8b3e14f:
عرض للطباعة
يسلموا عمار على التثبيت
و ان شاء الله بتوخذها عند عثمان و بتستمتع مثلي :04f8b3e14f:
مختبر الرسم بإستخدام الحاسوب 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();
}
بعض الصور
http://img101.imageshack.us/img101/8295/71032128.jpg
http://img695.imageshack.us/img695/1298/19325191.jpg
http://img691.imageshack.us/img691/7144/39830007.jpg
و لرؤية بقية الأشكال و الرسومات بنفس الطريقة
والكود بسيط جدا لأنه مقسم لـ 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();
}
نماذج و صور عند تنفيذ البرنامج
http://img714.imageshack.us/img714/2230/49341955.jpg
و عند الضغط على حرف X ستدور الكاميرا حول الرسم الثلاثي الأبعاد (المكعب) لجهة اليمين :
http://img132.imageshack.us/img132/276/57708484.jpg
و عند الضغط على حرف Z ستدور الكاميرا حول الرسم الثلاثي الأبعاد (المكعب) لجهة اليسار :
http://img406.imageshack.us/img406/3486/40290098.jpg
و اي استفسار انا جاهز :SnipeR (61):
:SnipeR (93):
إنت مو طبيعي يا زيد .. عنجد يسلمو كتير
أنا آخر مختبر للأسف ما حضرته من كسلي
بس بفضل الله وبفضك كل شي رح يكون تمام
:SnipeR (93):
شكرا كتير كتير .. ويعطيك العافيه يا رب ..