PDA

View Full Version : سوال: شبیه سازی برخورد توپ با زمین با ویژگی جاذبه؟



vb8334
جمعه 07 شهریور 1393, 15:52 عصر
سلام

دوستان من یه سوال برام پیش اومده من میخوام بخورد حرکت توپ با زمین رو شبیه سازی کنم (البته با ویزگی جاذبه زمین) نمونه هایی هم در این مورد
هست در سطح اینترنت اما توضیحشون و کداشون گیج کنندست میخوام خودم این کار رو انجام بدم آیا فرمول خاصی داره فرمولش چیه ؟
و اگه کسی این کار رو کرده یه توضیحی بده که یه اطلاعاتی در مورد شبیه سازیش داشته باشم.

توجه : دوستان لطفآ کد قرار ندهید قرار خودم این کار رو کنم فقط در مورد شبیه سازیش یه توضیحی بدید ممنون میشم


با تشکر

elec60
جمعه 07 شهریور 1393, 16:09 عصر
روابط حرکات پرتابی و سقوط آزاد را شبیه سازی کن

plus
جمعه 07 شهریور 1393, 16:14 عصر
هر جسمی با شتاب g به سمت زمین حرکت میکنه.در مورد توپ، وقتی به زمین میخوره بسته به فیزیک توپ، یک مدت کوتاهی در تماس با زمین میمونه (فشرده میشه) و بعد به شتاب کمتر از g (بخاطر اینکه بخشی از نیرو بخاطر اصطکاک و ... هدر رفته) به سمت بالا حرکت میکنه.
فرمول هایی که احتیاج دارین فرمول های مربوط به سرعت، شتاب و انرژی جنبشی و پتانسیل گرانشی هست.توضیحات این موضوع و این فرمول ها رو میتونید توی کتاب های فیزیک دبیرستان پیدا کنید.

Mori Bone
جمعه 07 شهریور 1393, 16:50 عصر
اگه ریاضی تون خوب باشه(مثلثات و این چرت و پرت ها) و البته فیزیک، به راحتی میشه پیاده سازی کرد.

vb8334
جمعه 07 شهریور 1393, 17:06 عصر
من مشکلم دقیقآ با ریاضی و فیزیک هستش

فرمول شتاب متوسط :a = (vf - vi)/t.
فرمول سرعت : پیدا نکردم
انرژي پتانسيل گرانشي:U = mgh
انرژي جنبشي: K=1/2mV^2

فرمول سرعت رو نمیدونم چیه و اینکه آیا فرمول شتاب همون فرمول شتاب متوسط هستش که قرار دادم.

با تشکر

Saman_12
جمعه 07 شهریور 1393, 21:52 عصر
اولین چیزی که نیاز داری فرمولاشونه بعد واحد اندازه گیری (اول فرض کن اصطحکاک نداریم) بعدش هم شبیه سازی قدم به قدم :
اولین چیزی که تو سقوط آزاد داریم اینه که سرعت اول حرکت صفره و کم کم به نسبت جاذبه افزایش پیدا میکنه.بگو خوب! واحد سرعت متر بر ثانیه است پس اول باید متر رو پیدا کنی (به نظر من پیکسل بر ثانیه خوبه دیگه) پس جای متر شد پیکسل,ثانیه هم که مشکل نیست :

V=gt+v
X=1/2gt^2+vt+x

و همین طور الی آخر ...
البته فکر نمیکنم اصولیش این باشه(؟)

vb8334
شنبه 08 شهریور 1393, 15:54 عصر
دوستان من از این فرمول ها دارم استفاده میکنم



:Motion third equation


Y = Y0 + Vy * ty – 0.5 * g * t^2
g: The gravity acceleration.

:The velocity equations

Vy = Vy0 – g*t
Vy: The final Y speed.
Vy0: The initial Y speed.
g: The gravity acceleration.
منبع :http://www.codeproject.com/Articles/22438/Gravity-and-Collision-Simulation-in-C


توجه : دلیل استفاده از همین تکه فرمول این هستش که من فقط حالت ساده رها شدن توپ از ارتفاع رو میخوام شبیه سازی کنم(یعنی همون Y)

یه سری مسائل برام مبهم هستش که ممنون میشم جواب بدید.

1) زمان (متغیر t) رو میتونم از interval تایمر بگیرم؟ و آیا 1000 میلی ثانیه در نظر بگیرم(یعنی همون 1 ثانیه)؟

2) تو اینجا y0 مکان اولیه توپ هستش ؟

3) ty چی هستش ؟

4) vy0 رو میتونم یه مقدار اولیه پیش فرض بدم ؟

5) باتوجه به اینکه توپ از ارتفاع در حال آمئن به پایین است بعد از تماس با زمین باید برگرده خوب تا اینجا مشکلی نیست. اما زمانی که میخواد برگرده باید نصفه ارتفاع قبلی باشه ؟

یه مثال میزنم توپ رو از ارتفاع 500 پیکسی رها میکنیم زمانی که به زمین میخوره و برمیگرده باید انداز 250 پیکسل برگرده (تقسیم بر 2) و دوباره 250 بشه 125 و.... آیا این ایده

درسته ؟ اگه درسته تا چه مقدار باید تقسیم به 2 کنم ؟



با تشکر

amin1softco
شنبه 08 شهریور 1393, 22:20 عصر
به تاپیک های قبلی نگاه کنید :
barnamenevis.org/showthread.php?353277
barnamenevis.org/showthread.php?354094

Ananas
یک شنبه 09 شهریور 1393, 00:57 صبح
سلام.
با تشکر از راهنمایی دوستان، من هم چند تا نکته اضافه کنم.
برای حرکت پرتابه در دو بعد، برای قسمت X (حرکت افقی) لازم نیست محاسبات خاصی انجام بدید (با زمان تغییر میکنه، همین.) میتونید با صرف نظر از اصطکاک و .... اون رو یک تغییر کاملا خطی در نظر بگیرید.
میمونه حرکت Y (حرکت در راستای عمود) که با تابع y = 1/2 gt2 + v0t قابل محاسبه هست. به تابعی که من با دلفی نوشتم دقت کنید:

function GetPosOfPartabeh(out pOut : TVec2D; const pPart : PPartabeh):PVec2D;
var
time_ : Double;
begin
time_ := GetNow - pPart^.t0;
pOut.x := pPart^.x0 + pPart^.vx0 * time_;
pOut.y := pPart^.y0 - 0.5 * CF_G * Sqr(time_) + pPart^.vy0 * time_;
Result := @pOut;
end;

قسمت X کاملا یک تابع خطی هست. یعنی نقطه شروه به اضافه سرعت در زمان (دلتا ایکس) تغییرات مکان.
پس ما حرکت رو برای دو مولفه ی x و y به شکل جدا و مستقل حساب کردیم. اینطوری مسئله رو ساده تر میکنیم.
------------------------------------------------------
در مورد برخورد بازمین هم من یک روشی به ذهنم رسیده بود که تو اون تاپیک کدش هست. من ابتدا فرض رو بر این میگیرم که اگر زمین نباشه توپ تا کجا پیش میره؟....یعنی مکان مجازی توپ داخل زمین...بعد اون بردار رو آینه کردم به بالا....البته با توجه به مکان برخورد! جکع و تفریق برداری لازم داره.
برای آینه کردن بردار نسبت به زمین، X تغییر نمیکنه فقط باید y جدید رو پیدا کنید. ارتفاع نهایی (داخل زمین) منهای ارتفاع سطح زمین (میتونه صفر در نظر گرفته بشه...بستگی به محل زمین شما در نقطه ی برخورد داره که چقدر در نظر گرفته باشید.) و قرینه کردن این مقدار:
y = earth_y - y1
من تو صحبت هام توپ رو با شعاع صفر فرض کردم (مرکز توپ رو جابجا میکردم) حالا که صحبت خورد به میون میاد لازمه که شعاع توپ هم در نظر گرفته بشه که چیزه خاصی نیست. یک جمع و تفریق ساده هست که نشون میده سطح توپ زودتر از مرکز توپ به زمین میرسه (مجازی) پس در آینه کردن اون رو هم لحاظ میکنیم.
در مورد واحد های اندازه گیری نظر من اینه که با واحد های فیزیکی محاسبات رو انجام بدید و حتما هم اعشاری. بعد برای نمایش اطلاعات رو به مختصات دو بعدی تصویر پیکسلیتون تبدیل کنید. با مختصات پیکسلی محاسبات رو انجام ندید!!! یک ضریب بزرگنمایی و یک Offset (نقطه صفر و یا جابجایی کلی) برای نمایش تصویر در نظر بگیرید که موقع نمایش با یک ضرب و جمع ساده بتونید مختصات اعشاری که متلا بر حسب متر هست رو به مختصات پیکسلی تبدیل کنید.
و یک نکته ی مهم اینکه مختصات Y در صفحه نمایش (پیکسلی) از بالا به پایین در جهت مثبت افزایش پیدا میکنه در حالی که در ریاضیات و مختصات دکارتی از پایین به بالا هست!!! یعنی فکر میکنم لازمه جهت Y رو برای تبدیل به مختصات نمایش در یک منفی ضرب کنید.
اگر باز هم مبهم بود بفرمایید.