تبلیغات
باران الکترونیک - برنامه شبیه سازی تکامل دنیا حاصل از انفجار ذره ای کوچک

امروزه برخی دانشمندان ادعا دارند که دنیا بر اثر یک انفجار بزرگ ناشی از وجود یک ذره بسیار کوچک به وجود آمده است. دنیایی تصور کنید با ابعاد ثابت که یک ذره بسیار بسیار کوچک بنام کُچکُلوییوم در آن مرکز آن وجود داشته باشد. این ذره منفجرمی  شود و واز انفجار این ذره دنیا به تکامل میرسد.

  • ابعاد دنیا 600*800 پیکسل است وکل فضا مشکی رنگ.(از امکانات ایجاد فریم و پنل در swing وawt  می توانیم استفاده کنیم)
  • یک فایل ورودی داریم به نام st.art که در آن دو عدد ذخیره شده است که نشان دهنده موقعیت اولیه ذره کُچکُلوییو در دنیای فرضی ماست.
  • در شروع دنیا کُچکُلوییوم که اندازهاش 5پیکسل است و سفید رنگ است در موقعیت ثبت شده  در فایل ورودی قرار گرفته است.
  • خالق دنیا میخواهد چهار دکمه در اختیار داشته باشد
         1)  دکمه Bang:که موجب رخ داد انفجار خواهد شد
  • انفجار که رخ دهد تمام 25 پیکسل کُچکُلوییوم از یکدیگر جدا میشوند و هر یک خود به اندازه 3پیکسل متصل به یکدیگر تقسیم میشوند
  • این 25 ذره 9 پیکسلی بطور تصادفی در کل فضای دنیا پخش میشوند.(می توان یک آرایه 25 تایی برای ذخیره موقعیت  مرکز هر پیکسل در نظر گرفت، که این آرایه درلحظه انفجار میتواند برای موقعیت (عرض وارتفاع)هر ذره یک عدد تصادفی در بازه گفته شده به خود بگیرد)
  • پس از انفجار هر ذره به یک رنگ مجزا در خواهد آمد که این رنگها نیز مقادیر تصادفی خواهند شد.(رنگ RGBسه مولفه دارد، هر مولفه را میتوان با اعداد تصادفی  بین 0 تا 225 مقدار دهی کرد و بدین طریق یک رنگ تصادفی تولید کرد
            2)دکمه Evolution :با فشار این دکمه تکامل آغاز میگردد
  • این دکمه قبل از فشار دکمه Bang  در وضعیت ناتوان  قرار دارد.پس از فشار دکمه Bang این دکمه توانا خواهد شد.
  • تکامل بدین گونه است که هر ذره بطور تصادفی یک جهت و یک سرعت را برای حرکت خود انتخاب میکند و در هر گام در آن جهت و با همان سرعت مشخص شده به حرکت در میآید.
  • تمام ذرات بطور همزمان حرکت خواهند کرد( یک راه حل این است که برای  حرکت هر ذره یک نخ(Thread) در نظر بگیرید، هر ذره در نخ اختصاصی خود حرکت  خواهد کرد. هر ذره بعد از هر گام حرکت میتواند دنیا را براساس موقعیت جدیدش ترسیم  کند. اینچنین میتوانید حرکت هم زمان ذرات را شبیه سازی کنید)
  • جهت حرکت میتواند یکی از 8 حالت زیر باشد:(s:جنوب ,sw:جنوب غربی و....)
              [direction:[S,SW,N,NW,W,NE,E,SE 
  • سرعت حرکت نیز میتواند بین 1 تا 4 پیکسل در هر گام باشد.
  • منظور از گام این است که مثلا اگر ذرهای جهت حرکت NE  وسرعت 2 را برگزیده باشد،آنگاه در هر گام مرکز این ذره 2 پیکسل به سمت شمال شرقی جابجا خواهد شد، مثل شکل زیر (برای توصیف بهتر این شکل در مقیاس بزرگ ترسیم شده است).
       گامها را میتوانید با به Sleep  بردن نخ ها در یک مدت زمان معقول شبیه سازی کنید.

  • اگر یک ذره به مرزهای دنیا برسد، از دنیا خارج نمیشود، بلکه جهت حرکت آن 135 درجه در جهت حرکت عقربههای ساعت تغییر خواهد کرد. مثلا اگر اکنون در جهت w رو به حرکت باشد و ذره به مرز غربی دنیا برسد، آنگاه جهت حرکت جدید آن NE  خواهد شد.
  • برخورد : در برخی گامها ممکن است حداقل یکی از پیکسلهای دو ذره و حداکثر کل 9 
  • پیکسل با یکدیگر همپوشانی داشته باشند. به این پدیده برخورد گوییم. در صورتی که برخورد رخ دهد این دو ذره با یکدیگر ترکیب میشوند و به یک ذره 25 پیکسلی تبدیل میشوند.
  • اگر یک ذره 25 پیکسلی با یک ذره 9 پیکسلی برخورد کند، یک ذره 49 پیکسلی ایجاد خواهد شد.
  • و بطور کلی با اصابت یک ذره mپیکسلی با یک ذره n2  پیکسلی (n<m) ذره جدید (m+2)*(m+2) پیکسل خواهد داشت.
               
  • همانطور که در شکل بالا توصیف شده است پس از برخورد:
  • رنگ ذره جدید: میانگین مقادیرRGB رنگ دو ذره خواهد شد.
  • سرعت حرکت ذره جدید: میانگین سرعت دو ذره
  • جهت حرکت ذره جدید:
  • اگر جهت دو ذره در آرایه direction کنار هم باشد: آنکه سمت چپ است(مثلا :N,E میشودNE و یا W ,E میشودN)
  • اگر جهت دو ذره در آرایه direction سه واحد از هم فاصله داشته باشند : آنکه میان آنهاست و به سمت چپی نزدیکتر(مثلا:N,SE  میشود NE)
        3)  دکمه STOP: که منجر به توقف تکامل دنیا میشود.
        4) دکمه SAVE:این دکمه این امکان را فراهم میآورد که موقعیت نهایی تمامی گرهها را در یک فایل خروجی ذخیره کنیم.
  • برای ذخیره سازی بایست امکان انتخاب یک دایرکتوری دلخواه در اختیار قرار گیرد
                                                                                                                 

                                                                                                                


:Android -> code parte 1


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