لا يمكن أن نضرب متجه 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