بسم الله والحمد لله والصلاة والسلام على رسول الله
اليوم إن شاء الله يا شباب بنخلص موضوع الـ Chapter
Transformation مع أنه هنشوف أنه في بعض الشغلات
احنا مارينا عليها سابقًا بشكل سريع احنا كنا تكلمنا
أو نتكلم في الـ Transforms في عندي ثلاث أنواع أو
أربعة أنواع من الـ Transforms في عند الـ Translation
وفي عند الـ Scaling وفي عند الـ Rotation وفي عند الـ
Reflection ولما أجينا هنتكلم على الـ Scaling أو على
الـ Transforms بشكل عام حاولنا نوجد مصفوفات لكن
المصفوفات لما كانت المعادلة العامة تبعتي X prime
بتتساوي A X زائد B Y زائد E Y prime بتتساوي C في X
زائد D في Y زائد F بقولنا الـ E والـ F دول
المعاملات الـ Translation المعاملات الإزاحة
وبالتالي أنا مصفوفة فعليًا تبعت 2 في 2 A B C D هذه
لما أضربها في X و Y بحصل على النقطة الجديدة لكن
قلنا إن هذا الـ Translation كواحدة من الـ
Transforms الأساسية مش موجودة في معادلة أو في
مصفوفة بالحجم هذا فاتكلمنا على الـ homogeneous
coordinate قلنا homogeneous coordinate يعني لأي
نقطة X و Y هلاّ جي X و Y و 1 تمام هذه على الأقل هي
homogeneous coordinate لأنها تخضع للقانون X T Y و
T و T لأن اتفقنا أن أي Point بالشكل هذا هي
homogeneous بحيث أنه لما بأخذ X T يعني تقسيم T X
بتديه المعامل الأول Y T تقسيم T بتديني الـ Y طب وأنا
جيت على هدول X على واحد X و Y على واحد وكانت هذه
الـ homogeneous point تبعتي X و Y و 1 هي الأساس
اللي أنا بنيت عليه المصفوفة تبعتي بحيث صارت
المصفوفة بشكل أكبر A B E C و D و F عفواً صفر وصفر و
واحد هذه المصفوفة بدي اضربها في X و Y و 1
بتعطيني homogeneous coordinate للنقبة الجديدة اللي
هي X prime Y prime و 1 لو أنا سألتك في لحظة من
اللحظات إيش النقطة الجديدة بفليش الواحد منهم X
prime Y prime تمام
و أسقطنا هذا الكلام لما جينا نتكلم في الـ 3D لما
جينا في الـ 3D هتزيد عندي معادلة جديدة إلى معادلة
بالـ Z بحيث أنه أصبحت المعادلات اللي عندي أنا بشكل
عام X prime بتتساوي A X زائد B في Y زائد C في Z زائد E
D مش قوية كتير Y prime بتتساوي E في X زائد F في Y
زائد H في Z زائد
I Z برايم هتساوي J في X زائد I في Y K في Z زائد
L الآن هذه المعادلات هي فعليًا 3 في 3 إذا
أنا بدي أستثني الـ Translation لكن عشان أحولها لـ 4 في 4
وضمن الـ Translation لـ الـ Matrix تبعتي عملت
homogeneous coordinates لنقطة تبعتي X و Y و Z
كانت الـ homogeneous coordinate تبعتها X Y Z و 1 و
بناءً على الـ homogeneous coordinates هاي أصبحت
النقطة الـ homogeneous point أصبحت المصفوفة تبعتي 4
في 4
A B C E D F G H I J K L
كل صفر صفر صفر واحد بقى ضربها في X Y و Z واحد عشان
تعطيهم homogeneous point X prime Y prime Z prime
والواحد هذه المعادلات اللي أنا قبّلتها فيها المصفوفة
اللي موجودة عندي الآن بنمر على بشكل سريع على الـ
3D Transformation بناءً على المصفوفة والمعادلة اللي
موجودة عندي لو أنا بدي .. أو أنا أجيت وقلت لك هاي
المحاور تبعتها اللي هذول الـ LCD الـ X Axis والـ Y
Axis والـ Z Axis بتجاهك وقلت لك هاي الجملة هذه بتمثل
نقطة في الـ 3D Space لما أنا بدي أعمله إزاحة بالشكل
هذا الإزاحة كانت على الـ X وعلى الـ Y وعلى الـ Z لأن
كان هنا طيب قريب من الـ O قريب من الـ X قريب من الـ Y
وقريب من الـ Z الآن أنا أزحته بالشكل هذا وبالتالي
كانت الـ Translation على كل المحاور اللي موجودة
عندي وبالتالي أنا ممكن أشتغل بنفس المنطق السابق
اللي احنا شفناه لما أنا بدي أتكلم على Scaling
كذلك نفس الكلام هي معادلة الـ Translation بنقرأ على
الـ homogeneous coordinate أو ممكن نسميها الـ
homogeneous matrix اللي موجودة عندي هي Translation
لما
بدي أتكلم على Scaling X prime يتساوي SX في X Y
prime يتساوي SY في Y Z' يتساوي SZ في Z وبالتالي إيه
الـ Scaling لما أنا بدي أتكلم على Arbitrary Point
إيش اللي هيختلف عندي لما بدي أثبت نقطة بقولت بكل
دفعة لما أنا بتكلم على Scaling عشان ما تنساش X'
يتساوي SX في X مظبوط؟ والنقطة اللي بدي أثبتها DX
BY
مباشرة بروح بقول هذا تساوي SX مضروبة في X ناقص BX
زائد BX واللي هي كانت محصلتها بدأت تساوي SX في X
زائد BX في 1 ناقص SX وهيك أنا بقول ثبت النقطة
اللي موجودة عندي أو ثبتت الـ Scaling لنقطة BX و
BY زي ما شوفنا المرة الماضية ونفس الكلام
حامله على الـ other coordinates الـ X prime والـ Y
prime بنفس المنطقة وبالتالي هي أصبحت المعادلة اللي
عندي هي الـ Factor الخاص بالـ Scaling وهذا الـ
factor الخاص بالـ Translation بالـ Factor الخاص بالـ
Translation وبالتالي المعادلة تبعتي أو الـ
Homogeneous Matrix تبعتي لحد كل Scaling تبعًا لـ
Arbitrary Point Sx 0 0 Bx 1-Sx 0 Sy 0 By 1-Sy نطبق
نفس الكلام عند الـ Y ونفس الكلام عند الـ Z وبكون
حصلت على الـ Scaling تبعًا لـ Arbitrary Point فيما
يتعلق في موضوع الـ Rotation اتفقنا أن الـ Rotation
لما أنا بأتكلم على Rotation في الـ 2D أنا
بتكلم على X و Y وأنا عندي نقطة هيها PX و PY هي
النقطة تبعتي الآن إذا أنا بدأت أقول اعمل Rotation
للزاوية هاي أو اعمل Rotation للنقطة هذه بمقدار 45
درجة أو بمقدار ثيتا بعمل Rotation للنقطة هذه بمقدار
ثيتا المفروض يا شباب احنا عندنا النقطة هذه عاملة زاوية
أساس نسميها Beta أو عشان ما نخرب بكاش نقول هذه
الزاوية الأساسية Theta وأنا مطلوب أن أعمل Rotation
بمقدار Beta 45 درجة أكدنا على المبدأ أن الـ
Rotation للنقطة هذه لا أبدأش عدد من الصفر أبدأ عدد
من الـ current position يعني Beta بتيجي هنا هذه
الزاوية Beta
45، 30، 20 حسب فبيستقيم إلى قيمة لحالها وقلنا الـ
Rotation دائماً نصف القطر فيه ثابت لأن أنا بتكلم عن
نقطة بدي أعمله Rotation معناته هي عبارة عن جزء من
من دائرة وبالتالي هي النقطة الجديدة اللي هي PBX
prime و PY prime النقطة تبعتي طيب مقدار الـ Rotation
هذا احنا شوفنا المعادلة اللي اشتغلنا فيها ووصفت
معايا أن X prime حسب المعادلة هذه تساوي X في
Cosine Beta ناقص Y في Sine الـ Beta الـ Y prime بدها
تساوي X في Sine Beta زائد Y Cosine الـ Beta مصبور؟
لأن لما أنا بدي أطلع للـ 3D هصير في عندي محور ثالث
الـ Z-axis هاي الجملة لما أنا بدي أعمل Rotation
بطلت الـ Rotation باتجاه واحد صارت الـ Rotation ممكن
تكون بأي اتجاه ما بين المحاور الثلاث اللي موجودة
عندي وبنفس المنطق السابق بدينا نتكلم أن أنا في
هنا فعليًا أنا بتكلم على الـ Rotation بين ثلاث أو بين
ثلاث محاور بوجود الثلاث محاور أنا بدي أسأل نفسي
الزاوية تبعتي لما بدي أعملها Rotation الآن أو عفواً
النقطة تبعتي لما أنا بدي أحركها بين أي محورين أو
بدي أعملها دوران بين أي محورين الآن تخيل إيه؟ لأن
هي 3D object موجود قدامي وأنا بدي أعمله Rotation هو
في احتمال أن أعمل Rotation بين الـ X والـ Y مصبوط أو
بين Y و Z أو X و Z فأنت الآن هذه المحاور الثلاث
بدك تحددها بشكل واضح الآن إذا كان والله أنا بدي
أثبت أو الدوران تبعي حولين الـ Z axis يعني الـ Z مش
هصير عليه تغيير نفس القانون السابق كمان مرة لما
قعدت بدي أجي أقول Rotate about الـ Z axis يعني الـ
X والـ Y .. الدوران ما بين X و Y لما بدي أجي أقول
دوران تبع للـ X axis الدوران بين Y و Z لما بدي أجي
أقول دوران تبع للـ Y axis الدوران بين Z و X فهذا
الكلام بدي أنت تنتبه له بشكل كويس وبالتالي
المعاملات تبعتي اللي هتختلف هيها بالشكل هذا
Rotation تبع للـ X Axis X ثابتة هي صارت فيهم دي
قانون الـ Y قانون نفس القانون بس ترتيبهم الآن
وانتبه من المعادلة كمان لكن
لما أنا بدي أجي أقول دوران تبع للـ Y Axis اختلفت
معايا شغلة واحدة بس يا شباب أنت تتذكر لما قلنا
بنعمل الدوران بين I و J Okay أنا بدي أشغل عكس على
قارب الساعة ولما أنا بدي أجمع X و Y مع بعض
الدوران تبعي حيصير مع قارب الساعة بس هتختلف معاه
الترتيب X' يتساوى Z لاحظ Z في Sine Beta زائد X في
Cosine Beta اللي هو القرار السابق تبقى تلو الأنزد
برايند يتساوي زد في كزايل لاقص يعني بس بتدلني
الإشارة تبع السالب ال X والY ال X والZ بس في ال Z
أما بين ال X والY و بين ال Z والY ماكانش في عندي
أي مشكلة وبما أن هذه القوانين الدوران تباعهم مهمة و
يطبق في كل ال animation حتما إلا شوفت animation
اللاعب الكورة بيجري و وجعك تمام؟ أو والله طيارة و
سقطت لما تيجي تفجع الطيارة بتلاقيها .. تقول ايش
تقول يا .. كابتن ماجد بيلوف أربع خمس لفات في
الهواء بكل الاتجاهات قبل ما يقدروا بالكورة الآن
تبقى أن ال 3D هي .. تخيل الطيارة هي مجسم 3D الآن
هي مجسم 3D الـ Y والـ X والـ Z فيك تتخيل الآن فعليا
الطيارة تبعد لأي محور ممكن تعمل rotation الآن إذا
كنت بتكلم الدوران ما بين X Y بدي أسميه roll والـ X
الـ Z axis هو الثابت اللي عندي يعني هو كأنه أنا
ثبتت الـ Z مسكته مكانه وصار فيه end of rotation بين
ال X و ال Y ال patch لما يكون about ال X axis يعني
أنا ثبت ال X و قلت الدوران بين ال Y و ال Z لما أنا
بده أقول حوالين ال Y axis ال Yار تمام معناته بين
ال X و ال Z وبالتالي بمجرد أنا قاعد أقول اعمل دوران
لنقطة .. لأن في الـ 3D مش هاروح أقولك تبقى على الـ
X axis الآن في الـ 3D يا شباب مش هاروح أقولك اعمل
rotate بزاوية مقدارها كذا هاروح أقولك اعمل roll
rotation أو اعمل roll بمقدار 30 درجة مباشرة لما
أقول roll معرفش تثبت الـ Z والدوران بين X وY لو
قلتلك أروح اعمل Y بتلاتين درجة أو مباشرة
تثبت ال Y والدوران بين X وY عشان أسهل عليك حفظ
المصفوفة هذه تمام احنا عادة بجينا نكتب Cosine بيتا
مظبوط لقينة الزاوية بغض النظر Cos-Sin Beta وهنا صفر
في الـ 2D مظبوط هنا Sin Beta Cos Beta صفر صفر صفر
واحد الآن نفس الترتيب هذا مش هيتغير لا مع ال roll
ولا مع ال pitch هيتغير وين عند الياه فقط
بس إشارتي السالب حقها وين؟ تحت وطبعا ماتنساش
المحور يعني بين جثين لأن أنا بتتكلم على rotation
على الـYaw بتتكلم بصوفة أربعة في أربعة متفقين
احنا الصف الأخير صفر صفر صفر واحد والعمود الأخير
طبعا الان Yaw يعني X و Z كوزاين بيتا صفر صين بيتا
مش سالب الان تمام صفر الان
صفر واحد صفر صفر ليش الواحد لأن بقولنا قيمة ال Y
مش هتتغير ثابتة الان ماقصسين بيتا صفر كزاين بيتا
صفر بس اللي فرجت معاك يعني تخيل عند ال y عند ال y
الترتيب بده يكون عند ايش؟ بشكل عمود يعني بس السالب
المبدأ اللي موجود فوق في الصف بده تكون عند فيه
العمود لأنه شوف هاي هان هان هاي ال sign في نفس
الصف و هذا قلنا لك لأن المحاور فعليا الدوران يكون
عندي دوران عكسي الآن
لو كان عندي 3D object مكعب
زي ما في فيلم transformers و بدهم يلجفون بعض
المكعب ده بنعزج من مكان لمكان كم مرة بدهم يعمل
rotation بأي اتجاه كل اتجاهات ولا لأ؟ الآن يعني
بدون يعملوا rotation ل roll و rotation ل pitch و
rotation ل yaw طب كده أنا بدي أعملهم كلهم مع بعض
ماتنساش هم بدي أعملهم بالتدريج واحد ورا الثاني ورا
التالت هو عبارة عن ضرب المصفوفات الآن يعني الآن لو
أنا أجيب و قلتلك اعمل rotation ل ال 3D object بحيث
أن yaw تلاتين yaw تلاتين وال pitch تلاتين وال
role تلاتين وال role تلاتين شو راح تروح تساوي
مباشرة هاي تلاتينها هاي x y زمت في واحد هذا prime
prime prime equal أول ما تبدأ ابدأ مع ال role
Cosine تلاتين ماؤس
Sin تلاتين صفر صفر Sin التلاتين Cosine تلاتين صفر
صفر صفر صفر واحد صفر صفر صفر صفر صفر صفر صفر صفر
صفر صفر صفر صفر صفر صفر صفر صفر صفر صفر صفر صفر
صفر صفر صفر صفر صفر صفر صفر صفر صفر صمصبور Cos 30
-Sin 30 ليش؟
هذه بيكون صفر لأنه بالواي يزد صفر Cos 30 -Sin 30
صفر الآن
صفر
Sin 30 Cos 30 0 0 0 1 الأخيرة Cos 30 تحتها صفر
ناقص Sin 30 0 0 1 0 0 سين تلاتين صفر كزين تلاتين
صفر صفر صفر صفر واحد ضرب اكس واي زد واحد يحد
يقول هذا المعادلة جداش بدها حسبة هتكون صعبة احنا
لما نتكلم عن حسبة تستخدم ال calculator نعم بتاخد
منك واجهة واجهة طويلة كمان لأنك بتضرب كل مصوفة زي
ما شوف أن هي عبارة عن different أو followed up
translation، transformation لكن لما أنا بتتكلم أن
ال computer هو اللي بنفذها عنك بس كل اللي عليك
تحدد المصوفة اللي هي تمام بتزوده بالزاوية لأن هذا
القانون يُكتب لمرة واحدة بس المتدير عندك قيمة
الزاوية وبالتالي ال execution أو الحساب تبعتك
هتكون أسهل بكثير تمام يا شباب؟ طيب الآن لما أنا
بتتكلم على transformation كل كلامنا السابق كان
transformation ل object وبين جسين كنت بعمل
transformation لل object في ال 3D أو في ال 2D
shapes بما أن أنا على النقطة يعني باخد النقطة و
بعملها transformation مظبوط؟ طيب لما أنا بتكلمك
على ال vector يعني الأقل لو كان فيه position vector
ايش
يعني position vector يا شباب position vector فيه
معناته بدأ من النقطة الأصل لو أنا إجيت قلتلك بدي
أعمل لـ vector هذا translation بمقدار خمسة على ال
X axis و اتنين على ال Y axis في مجال؟ آه في مجال،
ايش اللي بده يتغير أساسا؟ يعني ال vector نفسه بده
ينزح لما أنا بدي أقولك بدي أعمل له rotation لل
vector هذا معناه تهيي ال vector لورا أو لقدام ولو
كان في الـ 3D بنفس المنطقة اللي احنا بنتكلم عليه
لو أنا بدي أعمله reflection انعكاس على ال X axis
ال Y axis أو ال X axis تمام؟ أو حسب نقطة الأصل أو
انعكاس حسب نقطة معينة فالآن ايش اللي هيتغير عندي؟
ايش اللي هيتغير عندي؟ أن أنا كنت بتعامل مع نقطة
الآن بيصير أتعامل معانا قطعين اللي هو بمثل ال
vector طيب أو بين جثين شابه أو تلاتة زي ما أنا
بتكلمها بس في الآخر لما كنت أنا بتكلم على x و y و
z و 1 مش أنا فعليا بتكلم على vector x y z vector
مظبوط كل الفكرة عندي أن أحدد مصفوفة لـ Transforms
ومش هتفرج معايا بعد هي كده أنا بتكلم عليه لأن احنا
اتفقنا في ال vector هذه هي عبارة عن Delta X Delta
Y Delta Z هاي ال vector component مظبوط وبناء
أنا عليه أنا التعامل مش هيتغير ولا حاجة تقولي بدي
اعمل transformation ل vector ولا بدي اعمل
transformation لنقطة بنفس ال concept بدون اي تغيير
طيب بما أنه بتكلم على delta X و delta Y مياته ايه
ال vector تبعي الفرق بين النقطين مياته بحط الفرق
بين النقطين الموجودات اللي عندي هان واحد ناقص واحد
هتصير صفر مظبوط وكأنه ال vector تبعي في الاتجاه
الرابع مش موجود مالوش قيمة مظبوط وبالتالي فعليا
أنا صار ال vector تبعي بشكل صحيح وبالتالي هذه
الصفر كمان هتبطلها لازم عندي عشان ال homogenous
coordinate خلاص لازم ده القيمة القيمة اللي هان هي
نفسها القيمة اللي موجودة عندها واضحة الأمور يا
شباب يعني كمان مرة أنا انتقالي من ال transforms
اللي كنت بعملها لنقطة واحدة أو لل object أو لل
shape في ال 2D هي نفس اللي هتنتقل لما أنا أتكلم على
transformation لل vector مع استبدال الواحد الواحد
في ال homogeneous point بصفر ليش؟ للمنطق اللي
موجود عندي هنا أنا الآن ال vector محصور بين نقطين
من B1 ل B2
طبيعي Delta X بدأ تساوي X2 نقص X1 Delta Y Y2 نقص
Y1 Delta Z Z2 نقص Z1 الآن كل الشغل السابق أن كل
النقطة هذه X1 Y1 و Z1 اللي هم homogeneous
coordinate مظبوط؟ مع الواحد وهذه بتمثلها من ال
homogenous coordinate الثاني X2 Y2 Z2 و 1 فال
magnitude تبعتي ال vector أو تمثيل ال vector عندي
بتطلب مني أقوله واحد ناقص واحد يتساوي الصفر وبناء
عليه أنا صار في عندي ال vector تبعي ما تغيرش عليه
ولا حاجة
بالمثال لأنها بتقول لي بدي
أغير المحاور تبع الكاميرا الـ virtual camera تبعتي
بحيث إنه تعمل roll بمقدار 180 درجة و pitch بـ 90 و
yaw بـ 90 وتعمل كمان إزاحة يعني أنتَ تخيل النقطة
كانت هنا الكاميرا واقفة هنا تمام وبتصور مشهد الآن
الكاميرا بدها تجيب المشهد نفسه لكن من زاوية ثانية
من زاوية ثانية بما إنه أنا بتكلم في الـ 3D معناته
الـ rotation تبع الزاوية أو تبع الكاميرا بيكون
في الـ 3D في الـ 3D لأن هو فعليًا لما احنا بنشوف في
الـ movie المكعب بيتغير أو بتتغير كل التصميم تبقى على
الكمبيوتر أنا ما فيش عندي 3D بس إيش بغير؟ بغير الـ
site بغير الـ position تبعت الكاميرا عشان يعرض لي
الـ object أو الـ object check الـ object من مجزايا
ثانية طيب وبالتالي الآن بناءً أنا على الزوايا
اللي عندي يا شباب إيش اللي بيلزمني؟
بدي أحسب الـ sine والـ cosine لكل زاوية من الزوايا
اللي موجودة عندي هنا ولا لأ؟ طيب، الآن في عندي sin
تسعين وفي عندي cos تسعين وعندي sin الـ 180
وعندي cos الـ 180 انسى للقيم اللي موجودة
هنا القيم اللي موجودة دلوقت تركز عليها tx ty tz
tx2 ty المفروض بالعكس
مش مشكلة كتير طيب الآن المفروض لأن هذا المفروض الـ
translation هنا 2 وهذا صفر طيب الآن خلّيني أعدلها
مش مشكلة في الـ part التاني يا صاحبي المهم
الآن لما بدي أعوض الـ coordinate اللي هنا الشباب
كانت كوزين كوزين مين؟ رول كوزين الـ 180
كوزين الـ 180 كده الشباب سالب واحد
الآن كمان مرة رول رول يعني أنتَ بتتكلم coordination
بين cosine أو بين الـ X والـ Y فالقيم اللي موجودة
عندها وبالتالي المصفوفة تبعتها هذه هي بناءً على
القيم اللي موجودة هنا هنطبقها هنا المفروض الـ roll
هنطبقها
على القيم اللي موجودة عندي لو كانت النقطة ما بين
كده في الآخر في الآخر المصفوفة الواحدة تبعتي أنا
هنا بما إنه ما فيش تعارض بين القيم اللي موجودة طيب
هنقولها سالب واحد بالدرجة الأولى مظبوط طيب pitch
بين X Y و Z والـ X والـ Y الـ X والـ Z الـ cosine تبعتي
التسعين صفر صفر لما بتروح تضربها في سالب واحد لما
تنساش يعني الآن بدك تتذكر المصفوفات كل قيمها أيوة
بدك تتذكر المصفوفات كلهم الثلاث الآن سالب واحد
مظبوط هذه بتاعة الـ roll
وين؟ طيب سالب واحد الـ sign الـ 180 يا شباب صفر
الصفر الـ translation ممكن نحطه في مصفوفة لحاله في
الآخر مظبوط؟ أي صفر؟ الآن الـ sign الـ 180 صفر الـ
cosine الـ 180 نقص
صفر صفر صفر صفر صفر صفر صفر صفر صفر صفر صفر صفر
صفر صفر
صفر صفر صفر
صفر صفر صفر صفر صفر صفر صفر صفر صفر صفر صفر صفر
صفر سالب واحد sign هذه الـ sign لأنّه سالب واحد سالب
الـ sign سالب الـ sign الآن sign وصفر طبعًا في اللي
بعدها في الآخر لما تبدأ تضرب كل العناصر هذه هتصفيها
هذه المسئولة تبع كل الـ transformation اللي احنا
جاب اللحظة رمزناها يا شباب بالـ Q هي مجموعة الـ
Matrix تبعت الـ Transformation للانضرارات في بعضها
وبالتالي
النقطة تبعتي اللي أنا بأتكلم عليها لو بدوا يديني
أي نقطة وين بدها تصير الـ position تبعت الكاميرا
كانت في النقطة الفلانية وصارت للنقطة الفلانية
بالتالي أنا بقدر بتكلم بقول لك هذه الـ point هذه الـ
transform للنقطة هي بيعني أنا بتكلم على الـ vector
هيّما بين النقطتين الموجودات هنا طيب ولا حاجة بس
أنتَ بتكون عرفت اتجاه الكاميرا أو الكاميرا وين الـ
position الجديد تبعتها as a vector لأنّ احنا اتفقنا
بين الكاميرا والـ object عليه بين الكاميرا والـ
object اللي عندي دائمًا vector مظبوط؟ الآن أنا غيرت
الـ position تبعت الكاميرا عملت rotation للكاميرا
بناءً على الـ roll والـ pitch والـ yaw معناته أنا
غيرت اتجاهها وهي عملت rotation للـ vector اللي
موجود بين الكاميرا والـ object فإمّا أكون حصلت على
الـ
object الجديد اللي موجود عندي بعد ما عملت له الـ
transformation بناءً على الـ Q اللي موجودة عالميًا
يعني هو كمان مرة يا شباب هذا السؤال لا يعدو
لا يعدو عن كونه إن هو بيقول لك اعمل rotate أو
اعمل rotation لـ vector طب الـ vector وين هو موجود؟
موجود بين نقطة الكاميرا والـ object اللي والـ
face اللي بيصوره في الـ object زي ما شفنا في الـ
chapter الماضي فحدد لك point two points عشان
تجيب الـ vector اللي بينهم وتقدر تعمله rotation
بدي أعمل له rotation لأنّ الواحد هو أنا ما زلت
بتكلم على على الـ VIX القيمة الأخيرة صفر لأنّ أنا
بتكلم على vector هناك وما كنت بتكلم على كل نقطة
لكن هناك بتتكلم على الـ vector اللي موجود بينهم
وبالتالي أنا بعمل rotation للـ vector حسب الحاجة
وهيك بيقولوا احنا خلصنا الـ transformation في 3D
خلصنا الـ transformation في 3D كمان مرة الأمر ولا
حاجة أفرج عن السابقة هي نفس الكلام بس الـ A نتبينه
لأنّه أنا بتكلم على الـ 3D وأصعبهم كانت كمان مرة في
الـ rotation أصعبهم كانت في الـ rotation لأنّه
بتكلم على الـ 3D معناته أنا بدي أتكلم على ثلاث
زوايا عالية للمحاول للدورانة بجوالك ثلاث زوايا
مختلفة وبالتالي بدك تعمل translation أو عفواً ل
transforms على الثلاث زوايا بالترتيب عشان تحصل على
وين؟ اللي أنا بدي احطه في الآخر بدي احطه كمصفوفة
لحالها لما أجي أقوله هنا واحد صفر صفر 2
صفر واحد صفر 2 صفر صفر واحد صفر صفر صفر صفر
واحد لأن كل matrix مثلت الـ transforms لحالها
translation
yaw
pitch roll بظبط وبالتالي أنا بضرب هاي في الأول
بعدين بضرب الناتج التاني بعدين التالت بعدين بروح
بعمل translation لكل لولا الناتج اللي موجود
عندي لأنّه كمان مرة بقدرش إن أروح أطبق كل
transforms دفعة واحدة ما فيش الحل الآن هو عبارة عن
هاي الـ هاي الـ computation تبعتها تحسب الأولويات
هذه وهذه بنفس الحد وبينفع تضرب، هيك؟ آه، بينفع،
ما في مشكلة لأنّ المصفوفة 4×4 تضربها المصفوفة 4×4
الناتج 4×4 بتبقى لك ماشي لما تتقلص في الآخر
المصفوفة 4×4 تضربها 4×1 بيكون الناتج عندي 4×1 بس،
عشان هيكده أنا قلت لك هنا أو في الحل هذا أنا
بحاجة لنعمل الـ transformations اللي عندي بشكل
مختلف الآن ممكن
السؤال تكون مختلف شويّة الآن أثناء الـ Rotation
الكاميرا بس اللي انتقلت ما تكلمش على any
scaling لو قلنا لك إن الكاميرا قربت من الـ Object
هذا يعني الـ Object بنعمله Scale إيش
الـ Transformation اللي أنا بدي أعملها؟ بدي أبوي
فيه كمان Transformation كمان Matrix اللي هي علاقة
في مين؟ بالـ Scale وبأرجع بأكد عليكم يا شباب هذا
الكلام أنت بس المطلوب منك تحدد الـ factors
والمعادلة هذه تُكتب لمرة واحدة لما أنا ما بكونش فيه
Hand Translation طيب
ماهي هذه هتكون العمود الأخير؟ صفر صفر صفر أو
بينجوسيلة المصفوفة دي عبارة عن identity matrix
اللي هو فيها عناصر القطر الرئيسي تبعتها واحد لما
بتضربها في أي matrix من نفس الحجم بتبدأ الـ matrix
منها تتغير فضل الخدر عشان
الحل عشان
الحل مديك أرقام
عشان تكرمها هلأ أي سؤال أي
سؤال يا سيدي اعتبره زي ما هو بس تعال نحله الآن كمان
مرة يا شباب أقول لك الـ virtual camera تبعتي بدون
عملها rotation الـ virtual camera بدون عملها rotation
بمقدار .. الآن هذه البيانات الخاصة بالـ rotation
rotation يعني في عندي يا خضر دوران بين الـ X و الـ
Y في عنده rotation بين الـ Y و الـ Z وفي عنده
rotation بين الـ Z و الـ X ومش بس هيك بدون أعملها
كمان إزاحة translation بناء على الكلام السابق
القانون السابق احنا قلنا قبل شوية أن الأمر بسيط أن
في عندي بس زاويتين cos 180 يا شباب
cos 180 cos 180 كده؟ سالب واحد صفر الآن cos 90 صفر
cos 90 بواحد هدول هما القوانين اللي أنت هتستفيد
منهم المطلوب منك عشان تقدر تعمل rotation أنا بقول لك
بدي اختصر عليك السؤال وراح أقول لك بس هات لي الـ Q
matrix تبع الـ transformation تحط الأربع جنب بعض و
تضربهم الآن أد في مين؟ في اللي بدك إياه في اللي
بدك إياه مش هتفرج معنا كثير بارد مصفوفة الآن اللي
بدو يصير الآن ابدأ بالـ translation بالـ translation
الـ translation بتقتضي الآن الـ translation يا خضر
تقدر تذكر المصوفة للـ translation كـ transform واحد
صفر صفر قيمة للـ translation عند الـ X
صفر واحد صفر صفر
صفر
واحد صفر
صفر صفر صفر صفر صفر صفر صفر صفر صفر صفر صفر صفر
صفر صفر صفر صفر صفر صفر صفر صفر صفر يعني X و Y
بدينها بـ cos 180 سالب واحد سالب
ثاني 180 صفر صفر صفر الآن ثاني 180 صفر لا مش سالب
تنموجا cos 180 سالب واحد فيش سالب في الثانية في
المعادلة الأولى في الموجة بقول سالب فقط X prime
بنت ساوي X cos بيتا ناقص Y في sin الـ بيتا Y
prime بنت ساوي X في sin بيتا زائد Y cos بيتا
الآن
صفر صفر صفر صفر واحد صفر
Where؟ طب أنت لما تحط .. يعني ده لأن الـ Z .. Z
prime هتساوي Z Z prime هتساوي Z أنت لو حطيت مكانها
صفر مهما جتلتها المعادلة اللي بقى بها الـ pitch
الدوران بين مين ومين Y و Z معناته ..
الآن في عندي ال .. صفر الآن cos التسعين cos
التسعين صفر
sin التسعين صفر
الآن sin التسعين cos
التسعين المصفوفة
الأخيرة اللي هي اليوم
X cos 90 صفر صفر للـ Y الآن sin 90 موجب واحد صفر
صفر
واحد صفر صفر لأن الـ Y ما فيش علاقة تغيير عند الـ Z
الآن سالب sin 90 سالب واحد صفر عند الـ Y و صفر cos
التسعين صفر صفر صفر صفر واحد لأن حاصل ضرب الأربع
مصفوفات هيدور هي الـ Q بتلاحظ ده كان صحيح اتا كده أو
ليه لأ إذا أنا قلت لك قد الـ Q كيف يختاروا المصفوفات
هضرب لك المصفوفتين بس عشان أذكرك بعملية الضرب يا صاحب
يا binary operation يعني أنت بتخلص من أول اثنتين و
تخلص من اثنتين هدول جامعة ما هي أنت بتخلص من هدول
اثنتين وتاخد الناتج وتضرب في الثالثة والناتج
تضرب في الرابعة ولا كيف بتفكر أنت بقى تضرب يعني
اثنتين اثنتين واحدة واحدة برضه صح بس في الآخر binary
operation لازم تضرب كل مصفوفتين مع بعض مع جدران
ساعتين هضرب من غير الضرب خلاص هي الصف الأول في
العمود الأول اضرب لحالك بعد هيك واحد في سالب واحد
صفر في صفر صفر في صفر اثنين في صفر سالب واحد الصف
الأول في العمود الثاني واحد في صفر صفر صفر صفر
ضرب المصفوفات قلنا بتاخد الصف في الأول وبتضربه في
العمود الأول بتديك القيمة اللي موجودة بتبقى نهاية
الصف في الأول بتاخد الصف وبتحطه عمود الجبال
الثاني واحد في واحد صفر زائد صفر في صفر زائد صفر
في صفر زائد اثنين في صفر ما عادش سالب واحد هي الآن
الصف في الأول في العمود الثاني بتديك المدخل الثاني
في الصف الأول واحد في صفر صفر في سالب واحد صفر في
صفر اثنين في صفر صفر
واحد في صفر صفر في صفر صفر في صفر في واحد صفر في
اثنين صفر اثنين وصفتي عليه طيب الـ
determinant بما أن احنا بنتكلم على مصفوفات هي شرحنا
الـ determinant قبل ما نبلش بالـ transforms المرة
الماضية وأنا هو بيقول هي المعادلة بتاعت الـ X prime
الـ Transformation بتاعتي وهي المعادلة تبع الـ Y
prime قلت أنا ممكن استفيد من الـ determinant
وشوفناه لما تكلمنا على الـ areas المساحات وقلنا
الـ determinant أو المحدد هي عبارة عن scalar value
لعناصر المصفوفة بحيث إنه هي عبارة عن عناصر أو حاصل
ضرب عناصر القطر الرئيسي مطروح منهم حاصل ضرب عناصر
القطر الثانوي وقلنا لما بتكون المصفوفة ثلاثة في
ثلاثة أو الـ determinant التابع ثلاثة في ثلاثة
بحدده أو بعمل المجموعة من المحدد ده اثنين في اثنين
بناء على الصف الأول أو أي عمود الأول موجب سالب
موجب ارجع للشرائط السابقة أو تتذكر الكلام هذا إيه
اللي بدي أوصل معك
شو علاقة الـ determinant بالـ transformation
وحكيناها سابقا أن الـ determinant بيمثل مساحة لتو
دي shape الـ determinant بيمثل مساحة لتو دي shape
لو أنا أديت بقلت لك بدي مساحة الـ إيه يا شباب مساحة
الـ إيه آه المعين اللي موجود عنده هان بدي مساحته
أجزئه مثلثين طيب لو أنا فكرت أن أرسم مربع على
النقطة الأخيرة اللي عنده هان مربع يشمل المعين في
داخله وأطرح منه المساحة الخارجية المساحة الخارجية
بالنسبة لي معلومة لأن النقاط المعين هذه كلها معلومة
بالنسبة لي وبالتالي نهائي في عندي هنا A وعندي هنا B
يعني الآن الضلع بتاع المربع هذا أو المستطيل هذا هو
عبارة عن A زائد B والمساحة أو الارتفاع المستقل
اللي عندي C زائد D وبالنسبة لي الـ C هذه قيمتها
معلومة اللي هي B تمام؟ في مين يا شباب؟ في C لأن هذا
المستطيل وهذا المستطيل متساويان والمثلث هذا و
المثلث هذا متساويان والـ B والـ A متساويان فلو أنا
طلبت منك مساحة بكل بساطة الـ
R بروح بجيب العناصر هدول بحسب الثلاث قيم وبضربهم
في اثنين وبحصل على النتائج المطلوبة في الآخر هحصل
على المساحة اللي موجودة عندي فقط A B ناقص C B هذه
مساحة المعين اللي موجود عنده مساحة المعين اللي
موجود عنده اللي هي بين جسين مساحة الـ determinant
أو الـ scalar بتاعت الـ determinant أو الـ value بتاعت
الـ determinant بناء على النقاط اللي موجودة عنده
لأن كل نقطة عملها transformation بمقدار معين طيب
احنا الـ determinant أخذناه وخلصنا منه سابقا
Perspective Projection إيش
الـ Projection يا شباب؟ حد بيعرف مرة عليه كلمة الـ
Projection؟ عرض، عرض، عرض، عرض، عرض، عرض، عرض،
عرض، عرض، عرض، عرض، عرض، عرض، عرض، عرض، عرض، عرض،
عرض، عرض، عرض، عرض، عرض، عرض،
لو جربت منها لوحة العرض، حجم العرض كده إيش؟ بيصغر،
مصبوط، أو مساحة العرض بتصغر، وكل ما بعدت، بتكبر،
طبعاً هذا بيعتمد برضه على شدة الإضاءة اللي طالعة من
الـ Projector اللي موجود عندي، فلما أنا بتكلم على
الـ Perspective والـ Projection، بتكلم على شغل
بالمنطق هذا، لكن تبقى على نقطة معينة، أبدأ أفترض
الشاشة بتاعتي في نقطة معينة، طيب، ليش هذا الكلام
مهم؟ لأنه بيكون أحياناً بتصير .. بتكون مقطع الـ
animation أنا موجود في داخل المبنى وبأنظر عبر
الشباك بأنظر عبر الشباك الآن الشباك هذا أو الجزاز
اللي موجود عندي هنا هيمثل Projection أو حاجز
للرؤية اللي موجودة عندي هنا تمام؟ فجديش هتتمثل
مسافات اللي موجودة عندي هنا طيب الآن .. طبعا هذا
الكلام إذا كنت تتكلم عن إيه الارتباط، إيه الارتباط
مع الـ Trigonometer من البداية؟ إذا بتتذكر، يقول،
لما لو كان في عندي شخص صانع، عمّاله بيطلع،
هاي مساحة الرؤية تبعته، عبارة عن Two Angles،
Elevation و Depression
Elevation Angle و Depression Angle و بالمساحة كلها
و المسافة كلها دي بتمثل مساحة الرؤية الموجودة
للشخص أو للكاميرا اللي موجودة عندي. تخيل لو أنا
جيت قلت لك هاي النقطة تبعتي أو الكاميرا موجودة هنا
و أنا بدي أصور أو هاي المساحة تبعتي مساحة العرض أو
هاي البروجيكتور مساحة العرض اللي عندي هنا و قلت لك
بدي أحرك المسطح هذا على الـ X Axis أو على الـ Z axis
بلا حدود الـ slide اللي عندنا أو العرض اللي عندنا
هنا X و Y و Z باتجاهك. هل هناك ما يمنع أن الشاشة
كلها هاي تتحرك للأمام؟ أه، نثبتها ببراغي، مش هتقدر
أحركها، صح؟ بس فعليًا، لو كانت أنا بتكلم في الـ3D
موجود، معناته أنا بقدر إيش؟ أحركها بأي اتجاه،
وبالتالي، ها نحن فعليًا صرنا نتكلم على Projection،
لأن هذه الشاشة أو هذه اللوحة، تخيليها شفافة،
عشان أبقى بدي أشوف الـ Element اللي بعدها، لأي
مستوى بدي أصير أنا، أشوفه
لما بتكلم على Projection لما أتكلم على Projection
هاي اللي هو احتفظنا الـ X و الـ Y space أو الـ plane
عفوا، المسطح بدي أتحرك باتجاه الـ Z axis بدي أتحرك
بالكامل باتجاه الـ Z axis فالـ Projection تبعي
النقطة اللي فوقها كيف بدي أتبينها؟ بتبين لمين؟ للـ X
والـ Y هي هي هي هي هي هي هي هي هي هي هي هي هي
هي هي هي هي هي هي هي هي هي هي هي هي هي هي هي هي
هيهيهيهيهيهيهيهيهيهيهيهيهيهيهيهيهيهيهيهيهيهيهيهي
أجيب لك مثال أبسط، الآن أنت قاعد عند الشباك و شايف
طيارة بوينج 777 طالعة في الجو هيك، تمام؟ الآن
النقطة اللي مثلت الطيارة على الشباك، هل فعليًا هي
النقطة الحقيقية اللي مثلت ارتفاع الطيارة عن الأرض؟
أكيد لا، ليش؟ لأن في النهاية ما تكلمنا أني قاعد على
نقطة تقاطع أو Projection الآن الخط اللي نازل ما بين
الطيارة الحقيقية و الطيارة الظاهرة ينعكس على المسافة لحد
مستوى عينك عبر النافذة، تمام؟ و مع الخط الأفقي، أي
أندي مثلث، الزاوية ثابتة، ما تغيرت فيها ولا حاجة،
ولا لأ؟ بس اتغيرت، أن أنا فعليًا، ها، بشوف الشاشة،
بشوف الطيارة في المكان هنا، بينما هي طيارة فعليًا في
أعلى نقطة ممكن تكون موجودة عندها. هذا الكلام اللي
احنا بنسميه ناشئ الـ Projection. والفكرة فيه كمان
مرة الـ Projection استخدامه الأساسي لموضوع
الكاميرا. لموضوع الكاميرا. لأن تخيل أن الكاميرا
هيها، بدي أقدمها من الـ Object أو بدي أرجعها، بناء
على تقريبها وتأخيرها على النقطة ثابتة في مكانها.
الآن، لو افترضت إن في شخص بتطلع من أصابعها هذه
الكاميرا، لأن هل هأشوف الـ Mic هذا؟ مش ضروري و كل ما
قربت لقدام مش هأشوفه لكن لو رجعت لورا بحيث إنه
يصير الـ Projection أو ال .. ال .. الـ vectors فقط
من الـ Mic لحد الكاميرا و ضمن حدود الرؤية تبعتي،
هيصيرش إنه موجود عندي هنا. الفكرة فيها إنه أنا بدي
أصير أغير المحاور يعني الآن هذه المفروض الصورة أو
بدي أتخيلها بالـ 3D زي ما قلنا و الشاشة هذه هي الـ
Projection تبعت الكاميرا. كل ما بقدمها أو بخرها
تتغير معي مستوى الرؤية. الآن محمد لو أنا فعليًا
بدي قاعد يشوف من ناحية الـ X و الـ Y وين الكاميرا
تبعتي هيها في النقطة هاي هتكون X Y و D. طيب، لو أنا
كنت موجود على الـ Z، كيف بتشوف الرؤية؟ يعني أنت
هتشوفها بزاوية مختلفة تمامًا. فعليًا، أنا بشوفها في
الـ 2D كل مرة، لأن الـ Design تبعي، الكمبيوتر تبعي
2D. و كل مرة، لما قلت لك، أنا بجيب المكعب و بيعمله
Rotation تمامًا، هو مغير الكاميرا اللي بتغير،
بيروح، بيغير Perspective و Projection، وجهة رؤية
و رؤية، مساحة رؤية مختلفة، بناء على مين؟ على تغيير
الكاميرا اللي موجودة. بالتالي أنا ممكن أصير أسألك
بما أن هو في الـ 3D و الـ Projection تبعه عماله
بتحرك على مستوى الـ Z لو أنا ممكن أسألك مستوى لو
أنا كنت هنا على الـ X و الـ Y وين شكل الـ Projection
تبعتي؟ و لو كنت أنا واقف على الـ Y و الـ Z وين الـ
Projection تبعتي؟ لأن في الآخر الـ Projection هو
عبارة عن جزء من الـ space و أنا بدي أغيره بأي
اتجاه بدي إيّاه و كذلك النقاط اللي موجودة عندها لما أنا
باجي أتكلم على هو
الـ Projection نفسه و النقطة في نفس الارتفاع اللي
موجودة عندها بدي أصير أتكلم على نسبة و تناسب
النسبة هنا الآن X الكاميرا هنا XC YC و ZC ZC اللي
هي الـ position تبعت الكاميرا أو الـ Project النقطة
اللي أنا بدي أشوفها و هي الـ screen تبعتي مدينة
الرؤية اللي عندي و بدي أعرف المسافة أو النقطة اللي
موجودة عندي هنا المفروض هدي نسميها نقطة xp yp
بالإضافة للـ distance اللي تمت اللي موجودة عليها
بالنسبة للـ Z أنا مش كل الـ Z دي الآن. الآن هذا الكلام
بيذكرنا بالـ sign rule بحيث إنه عبارة عن two ratios
متساويات يعني XC على Zبد C تساوي ناقص XB على الـ
distance اللي موجودة عندها هاي الـ XC أو عفواً Zبد C
و هاي الـ X الـ C اللي موجودة عندها. فبتكلم على الأشخاص
و بقدر أجيب النقاط كنسبة و تناسب نوعي من الكامل هو
المثلث الصغير المثلث الكبير؟ هي فعليًا هو الآن
بتكلم على Projection و تخيلوا أنها بتصير فيه
Scaling إذا بكاش تتكلم على مثلث صغير في مثلث أكبر
منه في الآخر شباب هي المثلث اللي موجودة. كل ما
بتغير الشاشة من مجال الرؤية أو من نقطة الرؤية أو من
نقطة الكاميرا للـ Production تبعتي بيجيب لكن فيها
قانون ثابت ما بيتغيرش مطلقًا اللي هي علاقة بين
الارتفاع و الـ distance مصبوب؟ لأن بتكلم على مخروط
قائم الزاوية و الزاوية زي ما ذكرنا كامل تمام؟ هي
زاوية ثابتة و بالتالي كل ما ببقى الـ screen أو الـ
Projection screen تبع الـ space تبعي أو الـ plane تبعي
أنا بقى بشوف القيمة اللي موجودة. طيب
.. طيب إذا أنا بتكلم على Projection ك
Transformation معناته لـ Projection تبعتها إليها
بناء على المعادلات اللي موجودة
سالب واحد صفر صفر صفر. الـ Y ما صار عليها تغيير إذا
أنا كنت بتكلم على Projection بين مين و مين يا شباب
بين X و Y, X و Z يعني فعليًا الـ plane تبعي بيتحرك على
مستوى الـ Z. الـ plane تبعي بيتحرك على مستوى الـ Z لو
أنا وقفت على الـ X Axis إيش بشوف؟ لو وقفت على الـ Y
Axis إيش بشوف؟ أو إيش النقطة اللي بشوفها؟ و بالتالي
هاي الـ Transformation تبعتي تبعت الـ Projection
بناء على الـ ratios اللي موجودة عندي هنا بكل
بساطة. إذا أنا بدي أبدأ على موضوع الـ homogeneous
coordinates معناته XB و YB و ZB القيمة
تحتل الـ Projection هيها للـ X القيمة للـ Projection
تبعت الـ Y هيها. لاحظ مين اللي بتغيّر يا شباب البعد
البعد فقط الآن إشارة البعد. الآن سالم XCYC على ZC
على D و بالتالي هاي الـ Projection اللي موجود عندي
هاي التلات قيم اللي موجودة أنشئتها دي بيحصل هتساوي
عندي هنا ناقص XC في D على ZC هذه بتساوي YC في D
على ZC و هذه تساوي D لحالها لأن هاي و هاي هيروحوا
مع بعض و هي واحد على واحد على الـ D بسط المقام المقام
بيصير بسط وهذا
كل المطلوب في الـ chapter اللي موجود عندنا اه خلصت
الـ chapter معي لأن هدول التلات قوانين تمام
لو أنا أتيت سألتك و قلت لك أن في عندك نقطة عندك
نقطة X,Y,Z قدّامك القيام تبعتها والناكم مثلًا اثنين
اثنين ثلاثة تمام؟ و في عند الـ plane أو في عند ال ..
عند الـ Z مستوى روح تحطتك عند الـ Z equal خمسة
معناته
الكاميرا موجودة هي عندها حدد الـ Projection تبعتها
الـ D equal خمسة. الآن XC التي تبعت ثلاثة و YC ثلاثة
و الـ value الأخير الذي ZC خمسة و مع الـ D خمسة فهي
العناصر و بالتالي بس بتطبق على الموجود هنا عشان
تقول لي الـ Projection تبعت النقطة هذه صارت النقطة
الفلانية على المحور اللي موجود. أعتقد احنا خلصنا ال
chapter و خلصنا المنهج لأحد الجاي .. لأحد الجاي
حاجة هنا اللي فيه الشباب موجودين حاراجة معكم و
هحل معاكم الامتحان النصفي و هحل الامتحان النهائي
تبع العام الماضي يا شباب بالنسبة لل computation موللة
قصيرة مطلوب منك تحلها تعمل حسابك معاك calculator و
معاك قلم رصاص و ممحاة أنا هتبقى لتمسح ولما ألاقيك
أنت كاتب بالجاف ومخربش دي كتير معناته أنا هأتوه
معاك وأنا بصلح لأ لأ مش هأتوه هحاول قدر المستطاع
إني أتبع معاك لكن لما أنت بتستخدم القلم الرصاص أفضل
تمام أفضل إيه لك؟ ورق فاضي؟ ورق فاضي لأ بديك اسبوع
جدر الحل تمام عشان ما فيش مجال ما فيش مجال ورق
زيادة