سؤال

حسنا، أنا أعمل على بطاقة SIM وكأنها معظم سيمز الفضاء أحتاج إلى العمل حيث ستكون سفينة المعارضين (الوضع ثلاثي الأبعاد) عندما تصل رصاصي. كيف يمكنني حساب هذا من السرعة التي تنقلها الرصاص وسرعة سفينة المعارضين؟

هل كانت مفيدة؟

المحلول

احسب ناقلات السرعة النسبية بينه ونفسك: يمكن اعتبار ذلك حركته إذا كنت تقف لا يزال. احسب ناقلات المسافة النسبي. أنت تعرف الآن أنه كان بالفعل بعيدا وهو يتحرك V في كل وحدة زمنية. لديك V 'للحساب، وأنت تعرف أن طولها ولكن ليس من الاتجاه.

الآن تقوم بإنشاء مثلث مع هذين القيودان، V و V الخاص بك V '. في أبعادين يبدو:

Dx+Vx*t = V'x*t

Dy+Vy*t = V'y*t

V'x^2 + V'y^2 = C^2

الذي يبسط:

(Dx/t+Vx)^2 + (Dy/t+Vx)^2 = C^2

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

نصائح أخرى

كشف الاصطدام من قبل كورت ميلر
http://www.gamespp.com/algorithms/colleisionDetection.html.

أضف السرعة السلبية للسفينة إلى الرصاصة، بحيث تتحرك فقط الرصاصة. ثم احسب تقاطع شكل السفينة والخط الذي يسافر رصاصة (* POS -> POS + VEL * DT *).

ربما لا ينبغي أن يكون السؤال "حيث ستكون السفينة عندما تضرب الرصاصة،" ولكن إذا كانت الرصاصة تضربها. على افتراض المسار الخطي والسرعة المستمرة، احسب تقاطع متجهين، واحد يمثل مسار القذيفة وآخر يمثل السفينة. يمكنك بعد ذلك تحديد الوقت الذي يصل فيه كل كائن (سفينة ورصاص) إلى هذه النقطة عن طريق تقسيم المسافة من الموضع الأصلي إلى موضع تقاطع من خلال سرعة كل منهما. إذا تطابقت الأوقات، لديك تصادم وموقع يحدث عندها.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top