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

مساعده في حركه ال Opengl ...(الي عنده اي خلفيه عن الحركه يساااااااااعدني )

بدأه طمـــوح في 14 يناير 2009 · 4 رد · 1,976 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليـكـــم ...

انا عندي مشكله في الــ OpenGL وياليت تساعدوني بحلها ..

عندي مشروع عن animation في الــ OpenGL وسويت برنامج

(( لكن مااقدر احط الكود بالمنتدى لان اعرف ناس معاي بنفس الدفعه موجودين هنا

واظن عندهم نفس المشكله ... علشان كذا مااقدر انزل الكود اخاف احد ياخذه ..:)

الي يقدر يساعدني ارسل له البرنامج على الخاص ..))

انا بس ابغى اسوي Rotate و Translate

يعني ابغى اسوي Rotation لدائره تدور حول نفسه (حول مركزها ) .

وابغى اسوي لنفس الدائره بنفس الوقت Translation طوال الوقت

مثل ... كفارات السياره تدور حول مركزها وتمشي ...(( فاهميني ....؟؟؟!!!!!))

ياااااااااليت تساعدوني ... فكرت اسويها بكل الطرق لكن ماعرفت

بليــــــــــــــــــــــززززز ......

#2

يوجد عدة مواضيع غطت هذا الاشكال .. الدوران حول نفسه , والدوران حول نقطة معينة .. مثال

/index.php?showtopic=182486

/index.php?showtopic=83823

كما تحتاج للقراءة عن matrix في opengl بالبحث عن google والامر سهل ان شاء الله

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#3

السلام عليكم ,,

أخوي الشمري عندي سؤال على مثال أنت سويته في متصفح مغلق وهو مثلث ويتحكم فيه من خلال الأسهم والدوال 1 و 2

بس ماأدري بداية البرنامج مافهمته ومو مثل بداية البرامج الثانية في المتصفح نفسه

قريت البرامج وفهمت كل خطوة بس هنا غير صعب فهمه خاصة البداية

والأخير بالعكس فهمت بعض الشيء

ــــــــــــــــــــــــــ

بالنسبة للجزئية هذي

case VK_F1 :

size+=.1 ;

break;

case VK_F2 :

size-=.1 ;

الحركات اللي قبلها مفهومه بس

f1 >> هنا تزيد حجم المثلث بكل ضغطه

f2 >> تقلب المثلث و بعدها تصير وظيفة >> f1 >> تصغير المثلث

كيف أخلي >> f1 >> ترجع المثلث لوضعه بعد ماتقلبه >> f2

??

وألف شكر ,,

تم تعديل هذه المشاركة بواسطة منال الحاسب في 22 يناير 2009 في 16:23

#4

هي غير مقصودة .. بمعنى .. عندما صار size بالسالب ... انقلب ... وبالتالي .. اذا نقصت قيمة size( ضغطت f2 ) رح يزيد السالب ويزيد الحجم .. واذا ضغطت f1 رح تضيف الى size .. ومن ثم رح يتناقص الحجم حتى يعود الى الصفر .. ثم يبدأ بالزيادة ..

اقتباس
كيف أخلي >> f1 >> ترجع المثلث لوضعه بعد ماتقلبه >> f2

ممكن تكتبي ..

case VK_F1 :
if(size<0)
size=1;
else;
size+=.1;

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#5

اخي هذا برنامج كامل عن الحركه بس مش دائره انت غير فيه الرسم لدائره

#include<iostream.h>

#include"GL/glut.h"

float tx=0,ty=0;

float sx=1,sy=1;

float xp=0,yp=0;

float angle=0;

int type=1;

void polygon()

{

glColor3f(1,0,1);

glRectf(-15,-15,15,15);

glPointSize(5);

glColor3f(1,1,1);

glBegin(GL_POINTS);

glVertex2f(xp,yp);

glEnd();

}

void transformation()

{

glTranslatef(tx,ty,0);//translation on x and y

glTranslatef(xp,yp,0);

glScalef(sx,sy,0);//scaling on x and y

glTranslatef(-xp,-yp,0);

glTranslatef(xp,yp,0);

glRotatef(angle,0,0,1);//rotation on z

glTranslatef(-xp,-yp,0);

}

void draw()

{

transformation();

polygon();

}

void display()

{

glClearColor(0.0,0.0,0.0,0.0);

glClear(GL_COLOR_BUFFER_BIT);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

gluOrtho2D(-100,100,-100,100);

draw();

glutReshapeWindow(400,400);

glutSwapBuffers();

}

void Keyboard(unsigned char key,int x,int y)

{

if(key=='R'||key=='r')

type=3;

else

if(key=='S'||key=='s')

type=2;

else

if(key=='T'||key=='t')

type=1;

}

void Translate(int key)

{

if (key==GLUT_KEY_UP)

ty=ty+1.7;

else

if (key==GLUT_KEY_DOWN)

ty=ty-1.7;

else

if (key==GLUT_KEY_LEFT)

tx=tx-1.7;

else

if (key==GLUT_KEY_RIGHT)

tx=tx+1.7;

}

void Scale(int key)

{

if (key==GLUT_KEY_UP)

sy=sy+0.1;

else

if (key==GLUT_KEY_DOWN)

sy=sy-0.1;

else

if (key==GLUT_KEY_LEFT)

sx=sx-0.1;

else

if (key==GLUT_KEY_RIGHT)

sx=sx+0.1;

}

void Rotate(int key)

{

if (key==GLUT_KEY_LEFT)

angle=angle+5;

else

if (key==GLUT_KEY_RIGHT)

angle=angle-5;

}

/*void animation()

{

if (angle>360)

{

angle=0;

sx=0;

sy=0;

}

angle=angle+0.5;

sx=sx+0.001;

sy=sy+0.001;

glutPostRedisplay();

}*/

void Special(int key,int x,int y)

{

if(type==1)

Translate(key);

else

if(type==2)

Scale(key);

else

if(type==3)

Rotate(key);

if(key==GLUT_KEY_F1)

glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);

else

if(key==GLUT_KEY_F2)

glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);

// if (key=GLUT_KEY_F1)

// glutIdleFunc(animation);

// else

// if (key=GLUT_KEY_F2)

// {

// glutIdleFunc(0);

// sx=sy=1;

// angle=0;

// }

glutPostRedisplay();

}

void main(int argc,char *argv[])

{

glutInit(&argc,argv);

glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE);

glutInitWindowSize(300,300);

glutCreateWindow("Test");

glutDisplayFunc(display);

glutKeyboardFunc(Keyboard);

glutSpecialFunc(Special);

glutMainLoop();

}

سبحانك لا علم لنا إلا ما علمتنا إنك أنت العزيز الحكيم

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…