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

أسئلة حول المصفوفات ( World Matrix ) في الDX 9 .

مغلق
بدأه Abdullah.Alshammeri في 11 أغسطس 2007 · 3 رد · 3,802 مشاهدة · في DirectX
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

الان أتعلم الدايركت اكس 9 .. ولازلت في البداية .

الان أنا واقف على المصفوفات ..

بالذات مصفوفة الWorld . . عندي عدة أسئلة أتمنى التكرم بالاجاية عنها :

1 - أنا لم أحدد طريقة الاسقاط Porjection Matrix .. ومع ذلك المجسم يظهر .. فماهي مصفوفة الاسقاط الافتراضية التي أنشأها الDX .. هل هي Orthographic .. او Perspective .

قرأت أنه في الدايركت اكس يتوجب ان يكون ترتيب الضرب هو كالاتي :

Result = Scale * Rotate * Translate

لكن في OpenGL العملية بالعكس .. يعني Translate قبل Rotate .. فما هو السبب ؟

هل هو لان نظام OpenGL في الماتركس هو رأسي .. و الدايركت اكس افقي .. او لماذا .

يمكن الاسئلة بدائية ولكن أحتاج للاجابة .. فقد قرأت كتاب dx كامل ولم أجد فيه ما اريد .

D3D_3.zip

تم تعديل هذه المشاركة بواسطة الشمري في 11 أغسطس 2007 في 19:59

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#2

sorry >>

كان هناك خطـأ في الكود وحليت المشكلة ..

قمت بتعديل السؤال السابق من جديد . .. وهو يتضمن الاسئلة التي أبحث عن جواب لها ...

اعتذر .

تم تعديل هذه المشاركة بواسطة الشمري في 11 أغسطس 2007 في 20:01

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#3

السلام عليكم :)

1. من المفترض أن يتم تحديد مصفوفة الإسقاط لأن القيمة الإفتراضية هي Identity Matrix وقد تمثل Identity Matrix شئ ما غير معرّف, perspective أو orthognal أوأي تمثيل آخر بينهما, الله أعلم.

2. السبب الأساسي لتفضيل تسلسل معين لضرب الـ Transformation Matrices هو إن عملية الضرب تكون إتجاهية, أي إذا كان لدينا مصفوفة M1 و M2 فإن:

M1*M2 != M2*M1

بالنسبة للفرق بين OpenGL و Direct3D فهو مرتبط حسب علمي بالطريقة التي يتبعها كل من الواجهتين لتحقيق عملية تتابع المصفوفات Matrix Concatenation, حيث إن DirectX يستخدم إسلوب تتابع يسار إلى يمين Left-to-right Concatenation بعكس OpenGL, أحد الإختلافات الغير مبررة كما يبدو (مثل إن OpenGL هو right handed و Direct3D هو أفتراضاً left handed وهو أيضاً إختلاف غير مبرر, ومثل إن Direct3D يعرف front face كـ clock-wise vertices, بعكس OpenGL ...إلخ).

(ملاحظة: منذ Direct3D8 فإن D3D يدعم right handed إضافة إلى left handed, مع ذلك فإن أغلب الكتب التي تتحدث عنهما تركز لسبب ما على إن D3D هو left handed. وليست لدي معلومات عن OpenGL, ترى هل يدعم النظامين أيضاً؟ )

:)

#4

بارك الله فيك اخي سلوان على الشرح المفصل ,,

اقتباس
وليست لدي معلومات عن OpenGL, ترى هل يدعم النظامين أيضاً

OpenGL يدعم اساسا right handed . . ولكن ممكن تحول الى نظام right handed .. بقلب المحور z .

glScale(1,1,-1);

هذا على ذمة FAQ اوبنجل .. ونقلا عنه ...

اقتباس
منذ Direct3D8 فإن D3D يدعم right handed إضافة إلى left handed,

معلومة جديدة ومفيدة ..شكرا ,

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

هذا الموضوع مغلق.

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