المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : Newton Game Dynamics WRAPPER v1.53 - شرح + روابط



Evil Joker
27-02-2012, 01:03 AM
السلام عليكم

سأعطي مقدمة أولاً قبل أن أبدأ بالشرح
محرك الفيزياء: هو محرك يحاكي قوانين الفيزياء ،ويعطي واقعيه للمجسمات عند تأثيرها بالقوى أو الجاذبية ..الخ
في هذا الموضوع سأتكلم عن محرك النيوتن في لغة الدارك بيسيك Dark Basic

Newton Game Dynamics Wrapper
http://bakura.developpez.com/tutoriel/physique/newton/images/newtonlogo.png

يمكنك تحميله من هنا
(http://forum.thegamecreators.com/?m=forum_view&t=154086&b=5)

أحد محركات الفيزياء يوجد الكثير منها مثل Havok ,ODE

الرابر Wrapper : برنامج أو سكربت يمهد الطريق ويجعل من الممكن تشغيله في برنامج آخر.

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

أولاً :طريقة التركيب:
عند فك الضغط افتح ملف
1) Wrapper انسخ "NDB.dll" الى ملف الدارك بيسيك "compiler\plugins-user"
2) انسخ "keywords_ndb.ini" داخل "Editor\Keywords"
3) انسخ Newton.dll في نفس مكان التطبيق أو داخل ملف المشروع يعني بجانب تطبيق الـ exe


ثانيا: دليل المبتدئين

سأقوم بعون الله بترجمة مستند الورد beginner's guide
مع الملاحظة توجد بعض التعديلات لان الشرح كان يخص النسخة السابقة

( أهلاً ومرحباً بك في دليل المبتدئين لنيوتن ،في الاساس هذا شرح مبسط يساعدك في استيعاب كيفية عمل النيوتن للمستخدمين الجدد.
أنا أهدف من خلال هذا العمل في شرح كامل للمبتدئين، لذا من لديهم استخدام مسبق للنيوتن لن يجدوه مفيد لهم بشكل كبير .

حسناً .الاولوية : هل سبق وجربت ملفات الديمو أو الامثلة ؟ إذا لم تجربها الرجاء قم بتجربتها الآن في ملف "Demos" يوجد 15 أمثلة مختلفة
جميعها تم ترجمتها مسبقاً قم بتجربتها حالاً وانظر ماذا يمكن للنيوتن فعله .

حسناً أنت الآن تملك فكرة أو خلفية عن مايمكن للنيوتن فعله. الآن دعنا نتكلم عن كيفية عمل النيوتن. عندما تصنع تطبيق/ لعبة ثلاثية الابعاد فانت عموماً تملك "عالم"
مع الكاميرا وباقة من المجسمات المحملة من الملفات ،وربما القليل من الإضاءة . في الدارك بيسيك كل ذلك يتم من خلال الاوامر مثل Load object او Position camera ..الخ
يمكن التفكير في هذا الامر بإعتباره "عالم مرئي" “visual world” للبرنامجك . كل شيء ( المجسم ،الكاميرا ، الاضاءة) لها موقع ودوران في الفراغ ثلاثي الابعاد
النيوتن نوع يمكن اعتباره العالم الثاني "2nd "world تلك مرآه لعالمنا المرئي الثلاثي الابعاد .عوضاً عن عقد المعلومات البصرية (لون المجسم ،نسيج "تيكستشر" المجسم..الخ)
يمكن ربطها بالمعلومات الفيزيائية

صورة للتوضيح
http://desmond.imageshack.us/Himg209/scaled.php?server=209&filename=pic01e.png&res=medium

يمكن رؤية كلا العالمين لهما مكعب ،نفس الموقع ونفس زاوية الدوران مع أن العالم الفيزيائي يتعامل مع الكتلة والسرعة والعالم المرئي يتعامل مع الالوان والانسجة

ماذا يعني ذلك ؟ في الماضي فانت قد تعاملت مع العالم المرئي لكن مع النيوتن فيجب عليك التعامل مع العالم الثاني
هنا الفكرة الاساسية انت صنعت عالمك المرئي أياً كان سواءاً صحراء، او معبد الموت أو مشهد للفضاء الخارجي ثم تقوم بإنشاء عالم نيوتن، الذي يصف عالمك المرئي
وهذا يعني بالاساس ضبط عالمك المرئي لعالمك الفيزيائي وتجعل التحكم للمجسمات حر ليعطي واقعية مثل اهتزاز الاجسام لبعضها ،والاحتكاك ...الخ

الشيء الجيد في النيوتن أو الرابر انه يجعل عالمك المرئي مع عالمك الفيزيائي في نفس التزامن "in Sync" مع بعضها ، شيء جيد ويعني ان النيوتن سيغير مكان المجسم ودورانه لك

ومع ذلك، فان عملية حساب او معالجة الفيزياء هي عملية معقدة والنيوتن له تقييد معين مما يسمح بتشغيله بسرعة كافية في الوقت الحقيقي للعبة
والنيوتن يتطلب منك مزج الاولويات . على الرغم من أن سفينتك الفضائية مثلا يمكن ان تحمل اي شكل تريده فإن النيوتن يطلب منك ابسط الاشكال بسبب تسهيل عملية المعالجة
النيوتن يدعم الاشكال البسيطة التالية:
المكعب - الكره - الكابسولز - المخروط - الاسطوانة - الاسطوانه مشطوبة الحواف - الكونفيكس هول (تغليف المجسمات المعقدة)

لاتقلق ان لم تفهمها فلهذا السبب توجد الامثلة

http://desmond.imageshack.us/Himg607/scaled.php?server=607&filename=pic02q.png&res=medium
كما ترى فان الشكل المعقد للنجمة هو في الاصل كرة بالنسبة للنيوتن "أي أن النيوتن سيحاكي النجمة على انها مجرد كره" فعند الدوران مثلا ستدور على انها كرة" "

الرابر ياتي معه اداة تسمة Rigid Body Designer مما يسمح لك باستخدام الاشكال البصرية او الاشكال المعقدة سواءاً كانت بامتداد x او dbo ليتعامل الشكل مع النيوتن بشكل صحيح ، ايضا قمت بوضع مثال بع شرح للـ .bod يمكنك وضع الاجسام المعقدة

الان قمنا بشرح دمج العوالم الان ماذا عن الحركة ؟ من المحتمل ان هناك اجسام تريد تحريكها ؟ صحيح ؟؟
حسناً في الماضي كنت تستخدم المتغيرات مثل PlayerX , PlayerY, x#, y# ...etc لتغيير مكان المجسم وكانت على النحو التالي


If upkey() then inc PlayerX, 1

position object PlayerObject, PlayerX, PlayerY, PlayerZ


كود ممتاز لتحريك المجسم في الدارك بيسيك ، لكن في النيوتن أنت لن تستطيع التعامل مع هذه المهارة او هذا التكنيك تذكر النيوتن هو محاكاة فيزيائية يمثل الواقعية
في الحقيقة أنت لاتستطيع تحريك المجسم الى موقع جديد ذلك يسمى تنقل teleportation عوضاً عن ذلك هو تحريك المجسم عن طريق اصبعك ! او قوة دفع او سيارة او بيس بول

نفس الشيء في النيوتن أن تخبر النيوتن بتطبيق القوة ليتحرك الجسم "القوى" اشياء حقيقية في العالم الحقيقي لتحريك الاشياء
مثال انت تضغط باصبعك على الزر في الكيبورد لينزل الى الاسفل.. هذه هي القوى .. او مثل محرك الطائرة فان المراوح تدور لتدفع الطائرة الى الامام
عندما تستخدم النيوتن فانت بحاجة للتفكير في القوة

يكفي ... انظر الى المثال الاول Demo 01 الان هو بسيط وبداية ممتازة لاخذ فكرة عن الاوامر والمهارات التي ستسخدم في النيوتن

حظاً سعيداً)


الكاتب : Walaber

المترجم : Evil Joker

يتبع...

Evil Joker
27-02-2012, 11:33 AM
شرح الكلام السابق بإختصار هو

في التطبيقات العادية التي لاتحتوي على اي محاكاة فيزيائية مثل الالعاب ثلاثية الابعاد فأنت تملك العديد من المجسمات منها الشخصيات والسيارات والاسلحة حتى الاشجار والصخور وغيرها
كل هذا نسمية العالم المرئي .. أما في العالم الفيزيائي او الساكند ورلد فإنك تحتاج الى محاكاة لنظم الفيزياء في عالمك المرئي
فمثلا لو دلينا مكعب او مجسم لابريق الشاي وتريده أن يسقط ،في الدارك بيسيك ربما ستستخدم انيميشن قد صنعته مسبقا أو حتى ستستخدم المتغيرات او الاوامر مثلا امر move object down
في الحقيقة سينزل الاوبجكت وكأنه مصعد ولن يؤثر عليه اي مجسم خارجي حتى لو لمسه
لكن في نظام الفيزياء فانت لن تستخدم الامر السابق بل ستستخدم اوامر اخرى خاصة بالنيوتن وطبعا ستستخدم القوى والتي سبق شرحها
او ربما تأثير الجاذبية وان كنت تريد دفع مجسم فكلها ستستخدم مهارة مستقله وسيكون الامر جديد بالنسبة لك في اول الامر

سأشرح الاشكال اولا بعون الله

لو كان لديك مجسم لكرة قدم وتحتاج وضعها في الدارك بيسيك وتعريف النظام الفيزيائي لها
طبعا ستقوم بتحميل المجسم في الذاكرة مع النسيج Texture الخاص بكرة القدم هكذا انت عرفت العالم المرئي
الشكل : كرة - النوع:كرة قدم - النسيج: نسيج كرة القدم "المخمسات"

الان انت بحاجة الى تعريف النظام الفيزيائي لهذه الكرة
ستقوم باعطاء امر - سيتم شرحه لاحقاً إن شاء الله - لتعريف او عمل ربط بين الشكل المرئي والشكل الخاص بالتصادم

مثلا لو لديك كره عند انشائك لها في الدارك بيسيك فربما تستخدم الامر
make object sphere

او تقوم بتحميلها من جهازك

وفي النيوتن ستستخدم الامر
Col = NDB_NewtonCreateSphere( s# )

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


وهكذا مع باقي الاشكال والتي تم ذكرها سابقا

يوجد شكل يسمى Convex Hull هذا الكونفكس يتعامل مع الاشكال المعقدة فمثلا لو لديك ابريق شاي او نجمة او كان هذا الشكل فانت لن تستخدم الاشكال السابقة (مكعب - كرة ..الخ)
بل تحتاج الى تركيب معقد ..يتيح لك النيوتن امكانية عمل هذه الاشكال وتسمى convex hull
ببساطة لو قلنا ان لديك ابريق شاي فالكونفكس هول سيقوم بتغليف هذا الابريق وليس حمل نفس الشكل بل كشكل التغليف الورقي او البلاستيكي .

المصطلحات الاساسية

هذه هي المصطلحات الاساسية والتي يجب معرفتها للتعامل مع المحرك

Body
المجسم وهو كتعريف او اي دي مستقل عن المجسم في العالم المرئي
مثلا لو لديك مجسم كرة في العالم المرئي والاي دي الخاص به هو 1 فهذا لايعني بالضرورة ان المجسم في العالم فيزيائي يحمل نفس الرقم قد يكون 2 او ايا يكن
ويسمى عادةً بـ Rigid body الاجسام الجامدة او الصلبة

Object
وهو الشكل المرئي عكس body الشكل الفيزيائي

Vector
المتجه ويحمل 3 قيم للمحاور الثلاثة XYZ

Matrix
المصفوفة : (في العادة تكون 16) وهي ارقام تحمل وصف للموقع والدوران والحجم في الفراغ الثلاثي الابعاد

Mass
كتلة المجسم "الحجم"

MOMENT OF INERTIA
عزم القصور الذاتي : رقم يصف مدى التناوب على محور محدد

الاعدادات الاولية
قبل البدئ في وضع الاوامر الخاصة بالمحرك فلابد من اعطاء الدارك بيسيك امر ببدئ عمل محرك النيوتن


NDB_NewtonCreate

من خلال الامر السابق انت قد بدأت في الخطوة الاولى وسيبدأ المحرك في العمل :)

الان يجب عليك تعريف مدى المحيط او مدى الاتساع او الفراغ الذي سيتم فيه محاكاة الفيزياء
عند عدم وضعك للتعريف التالي فان النيوتن تلقائياً سيعرف نفسه بمساحة محددة من -100 الى +100 لكل المحاور


NDB_SetVector 1, -1000.0, -500.0, -1000.0
NDB_SetVector 2, 1000.0, 500.0, 1000.0
NDB_NewtonSetWorldSize

لاحظ انك لن تعطي القيم مباشرة للامر بل تحتاج الى وضع متجه مؤقت temp vector
وكما ذكرت فانه سيحمل 3 قيم مع رقم او اي دي للمتجة المؤقت

الان تعريف الجاذبية

NDB_SetVector 0.0, -50.0, 0.0
NDB_SetStandardGravity

لاحظ ان قيم الجاذبية للثلاثة محاور فيمكنك عمل جاذبية لمحرو x او محور y او محور z
فبلا من الجذب للاسفل يمكن ان يكون للاعلى او اليمين او الامام ...الخ

الان بعد التعريفات الاساسية السابقة يتطلب منك تعريف التوقيت


time# = NDB_GetElapsedTimeInSec()
time# = NDB_GetElapsedTimeInSec()

قمنا بوضع الامر السابق مرتين لنحصل على توقيت صغير مناسب



GO = 1



do

time# = NDB_GetElapsedTimeInSec()

if GO = 1 then NDB_NewtonUpdate time#

الان فكرة الامر السابق هو التثبيت فمثلا لو كانت قيمة GO تساوي واحد فان المحرك سيعمل وان كانت تساوي صفر فان المحرك سيتوقف مؤقتاً مثلا


يجب انهاء البرنامج بالامر التالي ووضعه في اخر سطر

function NeverCalled()

if memblock exist(1) then delete memblock 1
endfunction



عملية البناء

لبناء مجسم في الدارك بيسيك فانت ستعطيه القيم الخاصة بالموقع والدوران والحجم

مثال

object position objID,x,y,z
rotate object objID,x,y,z
scale object objID,x,y,z

اما في النيوتن يسمى Matrix اي مصفوفة

لابد من كتابة الامر كالتالي





NDB_BuildMatrix rx#, ry#, rz#, x#, y#, z#
NDB_NewtonBodySetMatrix Body


اولا تبني مصفوفة وبعدها تقوم بتطبيق قيمها على المجسم

rx#, ry#, rz#
خاصة بزوايا المجسم
اختصار يعني rotationX ...etc

x#, y#, z
خاصة بموقع المجسم

طبعا الاولوية للدوران وبعدها الموقع

انشاء مجسم


Col = NDB_NewtonCreateBox(sx#, sy#, sz#)
col اختصار لـ collision تعني تصادم
الان انت انشأت صندوق او شكل تصادمي للصندوق الخاص بالعالم المرئي


Body = NDB_NewtonCreateBody(Col)

قمنا بتعريف body لشكل الصندوق

بناء المصفوفة

NDB_BuildMatrix rx#, ry#, rz#, x#, y#, z#
NDB_NewtonBodySetMatrix Body

بناء الكتلة

NDB_CalculateMIBoxSolid mass#, sx#, sy#, sz#
NDB_NewtonBodySetMassMatrix Body, mass#

الان انت قمت بتعريف حجم المجسم وكتلته

sx,sy,sz هي للمحاور الثلاثة الخاصة بالحجم
والـ mass# هي قيمة الكتلة التي تريدها


NDB_NewtonReleaseCollision Col



هذا الامر يمكن فهمه وكأننا قلنا انتهينا من تعريف التصادم

يأتي الان دور الربط بين الشكل والتصادم




make object box obj,sx#,sy#,sz#


scale object obj, sx#*100.0, sy#*100.0, sz#*100.0
position object obj, x#, y#, z#
rotate object obj, rx#, ry#, rz#


الان قمنا بانشاء مجسم لصندوق


NDB_BodySetDBProData Body, obj

الكود السابق هو احد الخطوات المهمة وهو اخبار بالرابر بربط المجسم المرئي بالمجسم الفيزيائي
وسيقوم النيوتن بتدوير وتدوير المجسم اوتوماتيكياً

والان مع الربط النهائي

NDB_NewtonBodySetDestructorCallback Body

الان مع الجاذبية للمجسم

NDB_BodySetGravity Body, 1

flaq =1 يعني ان معيار الجاذبية الاساسية ستطبق عليه
flaq =0 يعني لا

ويمكن تغييرها في اي وقت

القوى:
كما ذكرنا سابقا عندما تريد تحريك او تدوير مجسم ما او التعامل معه او التحكم به بصفة عامة فانت ستطبق عليه القوى كما في الواقع لتحصل على واقعية فيزيائية
وفي الفيزياء هناك عدة اشياء اطبق على المجسم الكتلة mass - السرعة velocity - الجاذبية Gravity

طبعا سيتغير سلوك المجسم عند تغييرك للقيم السابقة

لتطبيق القوى هناك خطويتين يمكن من خلال تصادم مجسم اخر يحمل قيم ومتجه معين ويصطدم بالمجسم الساكن
او عن طريق الوضع بالاوامر

يمكن استخدام امر السرعة مثلا:


NDB_NewtonBodySetVelocity body

مع الملاحظة يجب وضع متجه مؤقت قبل وضع الامر

وتكتب هكذا


NDB_SetVector 100.0, 0.0, 0.0
NDB_NewtonBodySetVelocity Car

نلاحظ الان ان المتجة المؤقت به ثلاث قيم قيمة تحمل الرقم 100 والقيمتين الاخرى تحمل 0
هذا يعني ان الجسم سيتحرك او ستطبق عليه القوة من خلال المحور x وسيندفع نحوه وهذه القوة قيمتها 100


يمكن استخدام الاوامر التالية ايضا للتحريك



NDB_BodyAddForceLocal
NDB_BodyAddForceGlobal
NDB_BodySetForceLocal
NDB_BodySetForceGlobal


التدوير
في التدوير فان الامر مختلف فمثلا لو اردت تدوير مجسم في الدارك بيسيك حتما ستسخدم الطريقة التقليدية

turn object left, pitch object up, roll object left

او
xrotate object obj,object angle x(obj)+5

لكن في الفيزياء يجب عليك استخدام خاصية مشابهة للعالم الواقعي مثل اللف

وكتابة هذا الامر كالتالي

NDB_NewtonBodySetOmega



اوميغا هي اخر الحروف الابجدية اليونانية ايضا كرمز للتدوير او اللف

الحقوق محفوظة عند نقلك للموضوع الرجاء ذكر المصدر والاسم

مع فائق احترامي وتقديري

اسود الرافدين
02-03-2012, 05:44 PM
والله رووووووووووعه يابطل عاشت ايدك

Amir Imam
30-03-2012, 04:07 PM
الدرس ده جميل ورائع .. والمحرك جميل كمان ومفيدانا طبقت الديمو الاول بنفسي بس مش بيحصل دوران زي الديمو .. وقارنت الاكواد اللي كتبتها باكواد الديمو ولقيتها زيها بالضبط بس مش بيحصل دوران برضوياترى ايه السبب ؟

Evil Joker
30-03-2012, 05:44 PM
ممكن تكتبلي الكود..

Amir Imam
30-03-2012, 06:14 PM
اتفضل يا عزيزي :)

Ndb_Newtoncreate
Ndb_Setvector 1,100.0,100.0,100.0
Ndb_Setvector 2,-100.0,-100.0,-100.0
Ndb_Newtonsetworldsize
Make Object Cube 1,50
col=Ndb_Newtoncreatebox(50.0,50.0,50.0)
bod=Ndb_Newtoncreatebody(col)
Ndb_Newtonbodysetmassmatrix bod,10.0,1.0,1.0,1.0

Ndb_Bodysetdbprodata bod,1
Ndb_Setvector 0.0,100,0.0
Ndb_Newtonbodysetomega bod
Do
t#=Ndb_Getelapsedtimeinsec()
Ndb_Newtonupdate t#
Loop

Evil Joker
30-03-2012, 08:22 PM
المشكلة في تعيين المساحة



Ndb_Setvector 1,-100.0,-100.0,-100.0
Ndb_Setvector 2,100.0,100.0,100.0



يجب ان يكون المتجه الاول بالسالب

Amir Imam
30-03-2012, 09:59 PM
مظبوط
صح
بس مش هتعدي بالساهل يا سيدي الفاضل :)
فهمني ايه اللي حصل .. لاني اساسا مش فاهم ايه هو الفيكتور وايه وظيفته من الاساس
عارف ان الفيكتور هو المتجه .. لكن مش عارف ايه استخدامه وايه علاقته بالاضائة وايه هو الفيكتور في المحرك ده
ياريت شوية شرح .. هتعبك معايا انا اسف :)

Evil Joker
30-03-2012, 10:21 PM
في الدارك بيسيك لماتحب تكتب كود معين وتضع له القيم فانت تكتب القيم مباشرة امام الكود مثل
move object Objnum,value

لكن في النيوتن انت ستكتب القيم في متجه (يسمى متجه مؤقت) قد يحمل الكود متجه او اكثر
فانت ستعتقد ان تكتب الكود كالتالي

NDB_NewtonBodySetVelocity bodynumber,value

هذا خطأ بل يجب عليك تعيين الاتجاه قبل كتابته (بمعنى اين تريد ان يندفع المجسم ؟؟) تضعه عن طريق القيم في المحاور

NDB_SetVector 100.0, 0.0, 0.0
NDB_NewtonBodySetVelocity Car

الان الـ Body هو car
والامر السابق هو امر دفع السيارة .. عن طريق تغيير قيم المحاور ستندفع السيارة مثلا لو وضعت x=100 كما في الكود السابق فان السيارة ستندفع الى اتجاه محور السينات بالقوة 100

مثال آخر للتدوير

في الدارك بيسيك لو كنت تريد تدوير اوبجكت فانت ستستخدم turn object,pitch object...
لكن في النيوتن فانت ستستخدم امر اللف او التدوير اوميغا مع وضع القيم متجه مؤقت للتعيين


NDB_SetVector 100.0,0.0,0.0
NDB_NewtonBodySetOmega car




ارجو ان اكون قد وضحت :)

Amir Imam
30-03-2012, 11:18 PM
الله يفتح عليك واشكرك جدا
انا كده فهمت الصورة تقريبا
لكن لسه في سؤال
ليه لما عملت الفيكتور الاول والتاني وحطيت الاول بقيم موجب والتاني بقيم سالب المجسم لم يدور
في حين انت اعطيتني كود بالعكس المجسم كان بيدور

Evil Joker
31-03-2012, 12:23 AM
لا اعلم حقيقةً.. لكن ربما والله اعلم ان المتجه الاول يبدأ من الاصغر
لكن هناك ملاحظة مهمه اذا خرج المجسم من المحيط المحدد فان القوانين في المجسم ستنهار فلن يدور او يتحرك المجسم ولن يقبل اي امر من النيوتن
ربما في الكود الذي كتبته قد عينت المساحة بشكل خاطئ.. فكأنه أصبح برنامجك بدون محيط فيزيائي وطبعا لن تطبق قوانين النيوتن خارجه (اي المحيط او المساحة المحددة للـ newton size)
كأنك اخرجت شخص من عالمنا الفيزيائي او ادخلته في ثقب اسود :) فلن يستطيع الحركة او الدوران او حتى الرؤية والادراك لانه خارج نطاق قوانين الفيزيكس ..

Amir Imam
31-03-2012, 03:34 PM
اشكرك بشدة يا صديقي :)

Evil Joker
31-03-2012, 07:42 PM
العفو ياعزيزي..هناك توضيح

NDB_SetVector 1,-100.0,-100.0,-100.0
NDB_SetVector 2,100.0,100.0,100.0
NDB_NewtonSetWorldSize

توضيح الامر السابق هو تعيين المساحة
الطول: من النقطة -100 الى النقطة 100
العرض: من النقطة -100 الى النقطة 100
العمق: من النقطة -100 الى النقطة 100

فاصبح المحيط شكله مكعب.. خارج الـ 100 لن تطبق قوانين النيوتن
اي ان الحيز الذي وضعته هو فقط الذي ستطبق فيه القوانين...