السلام عليكــم ورحمـة الله وبركاتــة
انا كنت عايزه اعمل تحريك لشكل مربع بس من غير
gltranslatef()
انا عايزه باستخدام ضرب المصفوفات
glmultmatrixf()
بس مش عارفه ازاى اطلع الناتج وارسمه
السلام عليكــم ورحمـة الله وبركاتــة
انا كنت عايزه اعمل تحريك لشكل مربع بس من غير
gltranslatef()
انا عايزه باستخدام ضرب المصفوفات
glmultmatrixf()
بس مش عارفه ازاى اطلع الناتج وارسمه
وعليم السلام ورحمة الله وبركاته .
سأجاوب على السريع .
تحتاج الى انشاء مصفوفة عادية بالسي .. وتعديل بيانات تلك المصفوفة مباشرة ... ( بدلا من الاعتماد على glTranslate التي تعدلها لك)
مثال عام :
ضعي قيم الاحداثيات المطلوبة
float x = 0.1f;
float y = 0.1f;
float z = 0.0f;
float m[ ]={ 1, 0 , 0, x,
0, 1 , 0, y,
0, 0 , 1 , z,
0, 0 , 0 , 1};
glMatrixMode(GL_MODEL_MATRIX);
glLoadIdentity();
glMultMatrixf(m);
glBegin(........);
....
...
glEnd(....);هذه لمحة عامة .. وقد تحتاج لتعديل بعض الأمور هنا وهناك .
تم تعديل هذه المشاركة بواسطة الشمري في 1 نوفمبر 2008 في 16:31
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri
جزاك الله خيرا
ولكن ازاى هرسم المصفوفه m
المفروض انا هعمل
glloadidentity()
glmultmatrix(m); //m is transformation form
glmultmatrix(n); // n is point we want to transform
ولكن المشكله ازاى اخد الناتج و ارسمه ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
لا يمكن أن نضرب متجه Vector ( أو نقطة كما كتبت ذلك ) .. بمصفوفة .. بشكل مباشر في OpenGL .. ولكن يمكن أن نضرب مصفوفة بمصفوفة ..
في المثال الذي وضعته .. أنا عدلت مباشرة على المصفوف m ( في قيم x و y و z ) .. حيث أن x و y و z هي احداثيات النقطة .
لذلك .. اذا أردت أن تظهر للدكتور .. أنك ضربت متجه في مصفوفة ..فيجب أن تكتب ذلك بشكل يدوي أيضا ..
بكتابة شيء شبيه بالتالي :
float x = 0.1f;
float y = 0.1f;
float z = 0.0f;
float m[ ]={ 1, 0 , 0, 0,
0, 1 , 0, 0,
0, 0 , 1 , 0,
0, 0 , 0 , 1};
m[12] = x;
m[13] = y;
m[14] = z;
m[15] = 1.0f;
glMatrixMode(GL_MODEL_MATRIX);
glLoadIdentity();
glMultMatrixf(m);
glBegin(GL_POINTS)
glVertex3f(0,0,0);
glEnd();أو يمكنك حتى أن تضرب مصفوفة بمصفوفة ,
float x = 0.1f;
float y = 0.1f;
float z = 0.0f;
// اعتبر هذه المصفوفة هي transformation
// وعدل على قيمها .. بعد أن تقرأ عن المصفوفات في اوبنجل
float m[ ]={ 1, 0 , 0, 0,
0, 1 , 0, 0,
0, 0 , 1 , 0,
0, 0 , 0 , 1};
float n[ ]={ 1, 0 , 0, x,
0, 1 , 0, y,
0, 0 , 1 , z,
0, 0 , 0 , 1};
glMatrixMode(GL_MODEL_MATRIX);
glLoadIdentity();
glMultMatrixf(m);
glMultMatrixf(n);
glBegin(GL_POINTS)
glVertex3f(0,0,0);
glEnd();مع العلم أني لم أجرب هذه الاكواد على أي مترجم ,, ولكن أظنها صحيحة ,
ابحث عن Matrix ( وتحديدا في OpenGL ) .. وستجد مقالات للأخ أحمد صالح مفهرسة في القسم العام .
وانظر مثلا لهذا المثال الذي يشرح طريقة استخدام Matrix خاصة بك :
http://www.ultimategameprogramming.com/zip...MatrixClass.ZIP
تم تعديل هذه المشاركة بواسطة الشمري في 4 نوفمبر 2008 في 07:22
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…