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

سلسلة دروس الرياضيات والذكاء الاصطناعي(الدرس الأول)

مغلق
بدأه hunterxhunter في 22 يونيو 2007 · 5 رد · 6,440 مشاهدة · في قسم برمجة الألعاب و الرسوميات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

هل فكرت في أحد الأيام في عمل محاكاة للعبة GTA أو لعبة RESIDENT EVIL من حيث الذكاء الاصطناعي ؟

وهل حاولة أن تحاكي الذكاء الاصطناعي لبعض الألعاب العالمية ولكنك فشلة ؟

إذا كنت كذلك فقد تفيدك هذه السلسلة

الدرس الأول (الاتجاهات)

ما المقصود بالاتجاهات ؟

الاتجاه هو الموقع الذي ينضر له الكائن .

وهناك نوعين من الاتجاهات معروفة لذا الكل وهي

الاتجاهات الأساسية مثل : الشرق والغرب والشمال والجنوب

الاتجاهات الفرعية مثل : الشمال الشرقي والجنوب الغرب ... إلخ

ولكن ماذا لو أرت أن تستخدم اتجاه بين الاتجاه الأساسي والاتجاه الفرعي فما العمل ؟

حسنا لكي تتضح الصورة أكثر لنأخذ هذا المثال

المثال : كائن يريد النضر لكائن آخر ولنفرض أن الكائن الأول حصان والآخر قط

فما العمل ؟

الحل أتبع الخطوات التالية :

1-حدد موقع كل من الكائنين عن طريق الإحداثيات xy)) .

2-إعمل متجه يصل بين النقطتين (الموقعين).

3-أوجد ميل المتجه وليكن أسمه (م) عن طريق المعادلة (ص1-ص0)/(س1-س0) = م .

4-أوجد زاوية ميل المتجه والتكن (ز) عن طريق العلاقة ظا (ز) = م .

5- تحقق من أن الزاوية بالقياس الرادياني ومن ثم حولها إلى القياس الستيني عن طريق(الزاوية بالقياس الستيني =( الزاوية بالقياس الرادياني /PI ) * 180) )

6-الخطوة الأخيرة : معرفة الاتجاه هل هو للأمام أو للخلف (لأن لكل متجه اتجاهين اتجاه للأمام واتجاه للخلف) .

شرح الخطوة الأخيرة

الاتجاه للأمام تعني الزاوية =(ز سيتيني +صفر درجة)

الاتجاه للخلف تعني الزاوية=(ز سيتيني +180 درجة)

ولكن كيف نعرف الاتجاه هل هو للأمام أم للخلف ؟

الحل

إذا كان س0> س1 وَ ص0>=ص1

أو

س0>=س1 وَ ص0<=ص1

فإن الاتجاه للخلف

فإذا لم يتحقق أحد الشرطين فالاتجاه للأمام

شرح الخطوة الأخيرة بمعنى آخر

لو فرضنا أن الحصان يقع في مركز دائرة ما

فإذا كان القط يقع في الربع الثاني أو الثالث من أرباع هذه الدائرة فالاتجاه للخلف

أما إذا كان يقع في الربع الأول أو الرابع فالاتجاه للأمام

الآن كل الذي عليك هو التعويض بقيمة الاتجاه الأمامي أو الخلفي في

دالة glRotatef

إذا كنت تستخدم OpenGL

*حالة خاصة*

إذا كان فرق السينات = صفر

فإن (م) قيمة غير معرفة

إذاً ز=90

وبالتالي الزاوية (الاتجاه) الأمامية =90

والخلفية =270

ويصبح شرط التحقق

إذا ص0> ص1

فإن الزاوية خلفية

إذا ص0<ص1

فإن الزاوية أمامية

بعض التطبيقات على الدرس

1-هل رأيت في بعض الألعاب تعمل سهم وتضعه في أعلى الشاشة بحيث يشير إلى موقع المهمة .

2-هل رأيت الأموات في لعبة RESIDENT EVIL عندما تقترب منهم فإنهم يتجهون إلى اللاعب مباشرة .

3- وكذلك عندما تضرب أحد الرجال في لعبة GTA فإنه يطاردك وينضرلك مباشرة.

4-جميع ألعاب التصويب عندما يريدون إطلاق النار عليك فإنهم يتجهون لك مباشرة ولكن اتجاه اليد قد يمل في أحدى الاتجاهات (أي على حسب دقت تصويب اللاعب ).

5-عندما تتحدث إلى إحدى الشخصيات في لعبة the SIMS فإنه يتجه إليك مباشرة لكي يحادثك .

6-وكذلك لعبة المصارعة الشهيرة SMACK DOWN فإن المصارع يتجه إليك مباشرة .

7-جميع الألعاب التي تدعم خاصية التركيز على شخصية معينة سواء كان لمهاجمتها أو لغير ذلك فإنك في الحقيقة تتجه لها مباشرة.

كما رأيتوا فإن أغلب الألعاب في العالم تدعم مثل هذا التطبيق ولذلك أحببت أن أستفتح به هذه السلسلة

لكي تستفيد من الدرس حاول تطبق الخطوات السابقة وإذا عجزت سأساعدك

الدرس الثاني راح يكون عن المسار المستقيم

والثالث عن المسار المنحني

أي سؤال؟

المثال في المرفق ولكن بدون الكود

الأسهم : تحريك الشخصية

A : لعمل حركة الهجوم

AI_1.rar

#2

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

ممتاز, أراها من أهم الأساسيات في الذكاء الاصطناعي, بل معظم تطبيقات الذكاء الاصطناعي تعتمد عليها, التتبع, الحوارات,التصويب,احدى طرق تصميم الـ Billboard,,, والكثير الكثير.

رأيت التطبيق وهو وافي وملخص لغرض الدرس.

وأخيرا, هنا مثال لأخونا أحمد صالح يتحدث عن تطبيق التتبع, ولكنه مبني اساسا على الإتجاهات.

المثال

تحياتي

تم تعديل هذه المشاركة بواسطة High volt في 22 يونيو 2007 في 14:59

#3

اولا شكرا لك فعلا الموضوع مهم جدا

ورجاء ارجوا ان تكتب بالانجليزة فى معادلات الرياضية اى المحاول x y z

ثانيا هناق نقطة ريد ان اذكرها

تكلمت فى مثال عن المحورين X y وفى حقيقة الامر هما X و Z لان محور y او ص يكون عفى الاتجاه الاعلى والاسفل

حسنا فى حالتنا هذة يجب ان تكون كل المجسمات على مستوى واحد

ماذا اذا عند اخذ المحاول الثلاثة مثلا العاب الطائرات والتى تتحرك بحرية فى الفراغ دون الاعتماد على مستو معين مثل F16

موقع البرنامج

مبارك لشعب تونس photo-thumb-42837.png

#4

السلام عليكم

أسمحوا لي على التأخر لأني إنشغلة

أخي High volt

شرفتنا بردك وأحسنت بوضعك المثال لأنه مثال ممتاز فعلا

أخي حريف

خلاص إنت أبشر راح أكتب المعادلات بالإنجليزي بس أنا قلت يمكن بالعربي تكون أسهل في قرائة وفهم المعادلة

اقتباس
تكلمت فى مثال عن المحورين X y وفى حقيقة الامر هما X و Z لان محور y او ص يكون عفى الاتجاه الاعلى والاسفل

في الحقيقة هي ماتفرق xz أو xy أو zy

لأنها ثلاثة محاور متعامده لها نفس الخصائص

يعني مثال : أفرض أني عطيتك كرة في الفضاء وأطلب منك تحدد محاورها مع ذكر الأسامي

راح تحدد المحاور ولو جعلة شخص ثاني يقع في نفس الفضاء ولكن موقع النضر له يختلف عنك فهو أيضا راح يذكر المحاور ولكن بالمقلوب يعني x عنك راح يخليها y أرجوا أنك فهمة قصدي

اقتباس
حسنا فى حالتنا هذة يجب ان تكون كل المجسمات على مستوى واحد

ماذا اذا عند اخذ المحاول الثلاثة مثلا العاب الطائرات والتى تتحرك بحرية فى الفراغ دون الاعتماد على مستو معين مثل F16

سؤال رائع فعلا

هل تريد عملها في ثلالثة أبعاد

1-خد المحورين xy للكائنين ومن ثم طبق عليهم الدرس

2- خد الحورين xz للكائنين ومن ثم طبق عليهم الدرس

3-خد الحورين zy للكائنين ومن ثم طبق عليهم الدرس

مع مراعات إستخدام ثلاث دوال glRotatef للخطوات الثلاث السابقة وأيضا ضع محور الدوران المناسب لكل خطوة

إذا مافهمة قول لي وراح أشرحها بالتفصيل

ولكن فعلا سؤال رائع

ومشكور

#5
اقتباس
في الحقيقة هي ماتفرق xz أو xy أو zy

لأنها ثلاثة محاور متعامده لها نفس الخصائص

يعني مثال : أفرض أني عطيتك كرة في الفضاء وأطلب منك تحدد محاورها مع ذكر الأسامي

راح تحدد المحاور ولو جعلة شخص ثاني يقع في نفس الفضاء ولكن موقع النضر له يختلف عنك فهو أيضا راح يذكر المحاور ولكن بالمقلوب يعني x عنك راح يخليها y أرجوا أنك فهمة قصدي

فهمت قصدك لكن انا تحدث من منظور الشخص " انا " او الكاميرا لكن لا يهم

اقتباس
هل تريد عملها في ثلالثة أبعاد

1-خد المحورين xy للكائنين ومن ثم طبق عليهم الدرس

2- خد الحورين xz للكائنين ومن ثم طبق عليهم الدرس

3-خد الحورين zy للكائنين ومن ثم طبق عليهم الدرس

نعن نعلم طبعا من اساسيات الهندسة العادية 2d ان اى نقطتين يمكن ان يصل بينهما خط مستقيم

وكذلك فى الفراغ اى مجسمين يقعان على مستو واحد

لكن يمكن للتسهيل اعتبار كل مجسم نقطة فى الفراغ لكن المشكلة تكمن فى تحديد ال vertex لكل منهما حتى نقوم بتقريب المسافة بينهم تدريجيا وكان احدهم يتجه نحو الاخر

اقتباس
مع مراعات إستخدام ثلاث دوال glRotatef للخطوات الثلاث السابقة وأيضا ضع محور الدوران المناسب لكل خطوة

إذا مافهمة قول لي وراح أشرحها بالتفصيل

ولكن فعلا سؤال رائع

ومشكور

فعلا ارجوا ان تكمل اخى فهى دروس جميلة وان شاء الله يستفيد منها الجميع وانا اولهم

لكن بالمناسبة انا استخدم Direct x فارجوا ان تشرح المعادلات رياضيا اولا قبل كتابة الدوال البرمجية وارجوا ان تذكر كل دالة والمقابل لها فى Dx حتى يستطع الاثنان التطبيق معك

وشكرا مرة اخرى على هذا المجهود والسلام عليكم ورحمة الله وبركاته

موقع البرنامج

مبارك لشعب تونس photo-thumb-42837.png

#6

المثال رائع وزاده روعة العالم الثلاثي الابعاد :-) ,,

استمر الله يوفقك بمثل هذه المواضيع ... فأنت من القلائل اللي يشجعون الواحد على البقاء في المنتدى .

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

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

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