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

مالفائدة من مصفوفة Identity ؟

بدأه time1 في 11 مارس 2008 · 4 رد · 2,049 مشاهدة · في DirectX
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

:S

مرحبا اخواني ,

عندي سؤال عن مصفوفة Identity

مالفائدة العملية من هذه المصفوفة ؟

لماذا اراها تلاحقني في كل درس ؟

	D3DXMATRIX I;
	D3DXMatrixIdentity(&I);
	Device->SetTransform(D3DTS_WORLD, &I);

اعلم انها مصفوفة الوحدة والتي اذا ضربت مع اي مصفوفة اخرى تعطي نفس المصفوفة ولكن مالفائدة منها في برمجة الاللعاب ؟

وشكرا .

تم تعديل هذه المشاركة بواسطة time1 في 11 مارس 2008 في 01:41

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#2

وعليكم السلام ورحمة الله وبركاته ,

عندما نقول مصفوفة الوحدة .. فهذا يعني أن المجسم المرسوم لن يتغير موقعه ولاقيم الدوران ...

فمثلا لو أنك رسمت مثلث في أعلى النافذة ... (من خلال قيم كل Vertex ) فسيبقى المثلث في اعلى الشاشة .. لان النقاط لن تتغير قيمها لان المصفوفة هي مصفوفة الوحدة ,,( كل نقطة في النهاية عبارة عن متجه صفي أو عمودي .. )

ونلاحظ أننا نقوم باعادة المصفوفة في كل loop الى مصفوفة الوحدة .. حتى يبقى المجسم في مكانه ..

فمثلا .. لو اردت ان يكون مجسم في موقع ما فانك ستستخدم ال Transalte .. ولو لم تستخدم ال identity .. فانه في كل loop يتم عمل ازاحة اضافية للمجسم .. حتى يختفي من الشاشة .. لذلك نعيده الى نقطة الاصل في كل مرة عن طريق identity

تم تعديل هذه المشاركة بواسطة الشمري في 12 مارس 2008 في 13:34

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#3

اخي الشمري

الله يعطيك ألف ألف عافية على هالشرح الرائع , وماقصرت

الحين ابي اوصلك الي انا فهمته وابي اتأكد الي انا فاهمه صح ولا خطأ

لنفرض مثلا اننا نريد رسم جدارين واحد على اليمين والثاني على اليسار ونريد تحريك ابريق شاي بالمنتصف

وعلى فرض انني اريد رسم الجدار الاول اولا ثم الابريق ثم الجدار الثاني .

بما ان الجدران ثابته , هذا يعني اننا سنقوم بtransform من نوع WORLD على مصفوفة identity ثم نرسم الجدار الاول

بعدها نجعل التحويل transform من نوع WORLD والمصفوفة هي Translation ونرسم الابريق ومن ثم نجعل التحويل transform من نوع WORLD على مصفوفة identity ثم نرسم الجدار الثاني ,

هذا مافهمته , عن مصفوفة الوحدة , هل كلامي صحيح ؟

ومرة اخرى لك جزيل الشكر والامتنان .

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#4

همم ..ما اريد أن انبه عليه هو أن ال translate , rotate,scale,identity هي عمليات على المصفوفات وليست مصفوفات بحد ذاتها ..

أفضل شيء تقوم بالتالي :

أحب ان انبهك أني لا اتذكر الدوال والبارمترات بالظبط ... ولكن مجرد شرح عام

تنشئ ثلاث مصفوفات ...

D3DXMATRIX teapot , wallLeft , wallRight

D3DXMatrixIdentity(&teapot ); // الابريق سيكون في منتصف النافذة الان ..
D3DXMatrixTranslate(&teapot 0,0,10); //  الابريق لازال في منتصف النافذة ..لكن غيرنا من عمقه ليظهر في عالم الثريدي 
Device->SetTransform(D3DTS_WORLD, &teapot );
DrawTeapot(); 


D3DXMatrixIdentity(&wallLeft ); // الجدار الايسر سيكون في منتصف النافذة الان
D3DXMatrixTranslate(&wallLeft , -10,0,10); //  الجدار الايسر حركناه الى اليسار اعتبارا من منتصف النافذة 
Device->SetTransform(D3DTS_WORLD, &wallLeft );تحميل المصفوفة الجديدة
DrawLeftWall(); 

D3DXMatrixIdentity(&wallRight ); // الجدار الايمن سيكون في منتصف النافذة الان.. 
D3DXMatrixTranslate(&wallRight ,10,0,10); //  الجدار الايمن حركناه الى اليمين اعتبارا من منتصف النافذة 
Device->SetTransform(D3DTS_WORLD, &wallRight );تحميل المصفوفة الجديدة
DrawRight Wall();

لاحظ في الكود السابق "تحويل المصفوفة الى مصفوفة الوحدة" .. عشان في كل Loop يعود كل جسم الى المنتصف ومن المنتصف نبدأ بالتحريك ...

تستطيع الاكتفاء بمصفوفة واحدة .. وفي كل جزء من الكود تعمل identity للمصفوفة .. لكن هذا لاينصح به ... كل جسم له مصفوفته الخاصة . وهذا الاسلوب جيد في الدايركت اكس .. بعكس OpenGL ..

تم تعديل هذه المشاركة بواسطة الشمري في 13 مارس 2008 في 13:46

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#5

اهلين اخوي الشمري

الله يعطيك العافية ومشكور على تعبك معاي , واظن اني خلاص وصلت للفكرة الي تقصدها , وجربتها ..

الله يعطيك العافيه مرة ثانية وتقبل مني خالص الشكر والامتنان

تحياتي

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

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

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

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

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

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