![]() | |
|
أنماط الحركة
بسم الله الرحمن الرحيم
أنماط الحركة - فيجوال بيسك
هذا الموضوع (وكافة المواضيع) ،، القوانين والإشتقاقات هي نتيجة عمل ذاتي وجميع القوانين تعلمتها في السابق وليس من برمجة الألعاب
وأقول هذا أولاً لأنبهك أنه هذه الطرق التي أعمل بها ليست بالضروره هي المعمول بها في برمجة الألعاب (القياسية)
ولكنها تطبيق لقوانين علمية وإستنتاجات ذاتيه ولكي أؤكد لك أن تستطيع بنفسك إستنتاج هذه القوانين بنفسك
ولذلك سأحرص دائماً أن لا أكتب قانوناً جاهزاً بدون إشتقاقاته من النضريات الأساسية والمسلمات ...
# القفز :

سنقوم بإستخدام معادلات الحركة (وهي أربع (والبعض يتجاهل المعادلة الأخيرة ويكتفي بثلاث)
عموماً ،،، سنستخدم معادلتين من هذه المعادلات في إشتقاق معادلة القفز النهائية
المعادلة الأولى :
V = V0 + a * t
V : السرعة النهائية
V0 : السرعة الإبتدائية
a : التسارع
t : الزمن
المعادلة الثانية :
Y2-Y1 = V0 * t - 0.5 * a * t^2
Y2 : الإرتفاع النهائي
Y1 : الإرتفاع الإبتدائي
V0 : السرعة الإبتدائية
t : الزمن
a : التسارع ولاحظ أنه في حالتنا هذه يجب ان يكون سالباً (في القفز الحر (الطبيعي) يكون a = تسارع الجاذبية الأرضية = 9.8-
حسناً ،،،
مالذي نريده ؟ نحن نريد أن يضهر لنا القفز بشكل متناقص حتى يبدأ الجسم بشكل متزايد في السقوط إلى أن يصل الأرض
مالذي نريد تحديده (المعطيات) ؟ نريد التحكم بشكل القفزة أي تحديد زمن القفزة الكامل وأيظاً أقصى إرتفاع ... وتقوم الدالة بحساب a وكذلك V0
لنبدأ
المعطيات :
MaxY : أقصى إرتفاع
T : زمن القفزة الكامل (الصعود والهبوط (لاحظ أن زمن الصعود وزمن الهبوط متساوين دائماً لأي جسم (إذا تجاهلنا تأثير مقاومة الهواء )))
حسناً سنقوم ببعض التعويضات
عندما يصل الجسم إلى أقصى إرتفاع MaxY فهو في هذه الحالة تكون سرعة النهائية = 0 = V ويكون الزمن هو نصف الزمن الكلي t = T/2
دعنا نقوم بتعويض هذا الكلام النضري في المعادلتين
في المعادلة الأولى
V = V0 + a * t
0 = V0 + a * T/2
V0 = - a * T/2
في المعادلة الثانية
y2-y1 = V0 * t + 0.5 * a * t ^ 2
MaxY = - a * T/2 * T / 2 + 0.5 * a * (T/2) ^ 2
MaxY = - a * T^2 / 2 + 0.5 * a * T^2 / 4
MaxY = a (- T^2 / 2 + 0.5 * T^2 / 4)
MaxY = a(-T^2/4)
a =( -4 * MaxY) / T^2
وبهذا نكون حصلنا على a
V0 = - a * T/2
ولكي نجعلتها دالة لا تحتوي على أي مجاهيل (a)
V0 = (4 * maxY) / T
وبهذا نكون قد حصلنا على a و V0 .... إنتهى الدرس (النضري) .
لا تقلق لقد قمت بكتابة مثال تطبيقي لهذا الموضوع ... حمل المثال من هنا
# التتبع :
التطبيق الثاني من تطبيقات الحركة ،، هو التتبع
إفرض أنك كلفت ببرمجة ذكاء إصطناعي بسيط لنظام قتال بين شخصيتين ،،، أول أمر سيطرأ على ذهنك هو التتبع
كيف ستجعل العدو يسير (بإتجاه) الشخصية وبسرعة (ثابتة)
أولاً سنحتاج إلى أن نراجع درس (الرياضيات) ....
ثانياً فلنبدأ بتمثيل المشكلة Problem :-

في الواقع هذا الموضوع يمكن حله بعدة طرق وسأذكر طريقتين (تؤديان نفس النتيجة) :
الطريقة الأولى من خلال حساب الزاوية theta عن طريق دالة atn وبعدها نعين السرعة عن طريق cos و sin
الطريقة الثانية عن طريق المتجهات
في الحقيقة هذا الموضوع قد طرأ علي في السابق وكنت أعمل من خلال الزوايا ولكن كما نعلم جميعاً
ان هذه الدوال المثلثية تستغرق وقت كثيراً في الحساب لهذا أفضل دائماً تجنبها .... ولهذا سنقوم بحل المشكلة عن طريق المتجهات
حسناً سأقوم بذكر المشكلة مرة أخرى ،،، نريد الجسم الأول أن نجعلة يتجه نحو الجسم الآخر بسرعة ثابته
حتى نحصل على المتجه ببساطة نقول
Vec.X = x2 - x1
Vec.Y = y2 - y1
ومن ثم نعين السرعة من هذا المتجه
ولكن السؤال كيف نتحكم في السرعة ونجعلها مقدار ثابت
يمككنا فعل ذلك بأن نأتي بال Unit Vector (متجه الوحدة) والذي كما نعلم جميعا قيمته = 1
ثم نضرب هذا المتجه الجديد بثابت السرعة ،،، حلت المشكلة :)
## ملخص :
هنالك العديد والعديد من التطبيقات الممكن تمثيلها وبسهولة بإستخدام النضريات العلمية والإستنتاجات الذاتية ،،
فقط بالتجربة والقليل من الثقة بالنفس تمكنك من إدراك ذلك ...
... العلم كالبحر ،، كلما أزددت عمقاً كلما زاد الضغط عليك وزاد إدراكك لأسرار الحياة ...
مع خالص تحياتي / يزيد الدليقان
