Contacts
صفحه اصلی پورتال | صفحه اصلی تالار | ثبت نام | اعضاء | گروه ها | جستجو | پرسش و پاسخ | فروشگاه الکترونیکی | خرید پستی بازی های کامپیوتری





صفحه اول انجمنها -> بررسی سوالات و اشکالات کاربران -> یه مشکل ریاضی
 

ارسال يك موضوع جديد   پاسخ به يك موضوع ديدن موضوع قبلي :: ديدن موضوع بعدي
برو به صفحه قبلي  1, 2, 3  بعدي

نويسنده
پيغام
razielsina
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: 5 شنبه 8 تير 1385
تعداد ارسالها: 326
محل سكونت: ايران


جمعه 25 آذر 1390 - 18:05
پاسخ بصورت نقل قول
درود بر اهورامزدا
چيزي كه تو اون سايت هست در واقع از تابع sqrt استفاده نکرده و به همین خاطر بوده که ضرب rd*rd رو نوشته ولی اگه از تابع sqrt (جذر)استفاده کنی یعنی اینکه طول پاره خط یا فاصله بین دو دایره رو بدست آوردی این فاصله هر چی باشه نسبت به جمع شعاع دو دایره رابط مستقیم داره یعنی اگر مساوی بود هر دو دایره به هم چسبیدن و اگه کمتر بود یعنی به هم برخورد کردن خیلی سادست فکر کنم رو کد همون سایت دقت نکردی چون نوشته(که درست هم هست):
int dx = x2 - x1;
int dy = y2 - y1;
int radii = radius1 + radius2;
if ( ( dx * dx ) + ( dy * dy ) < radii * radii )
{
return true;
}

حالا اگه از sqrt استفاده کنی باید radii+radii باشه.
بحث تشخصی برخورد با کره هم میتونه به طور پیشرفته هم عمل کنه برای مثال استفاده از درخت دودویی میشه مجموعه ای از کره ها رو برای محاسبه حجم یک شئ در نظر گرفت/.

_________________
اهورا مزدا اين سرزمين مقدس را از هر گونه دشمن و خشكسالي به دور نگه دارد.
همانا از اسب افتاده ايم نه از اصل(مهدي اخوان ثالث)
www.sina-kian.com
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
MahanGM
پیر بازی سازی
پیر بازی سازی


تاريخ عضويت: 3 شنبه 20 شهريور 1386
تعداد ارسالها: 1846
محل سكونت: USS Terra Nova


جمعه 25 آذر 1390 - 21:33
پاسخ بصورت نقل قول
آره دادا Physics Engine هم مینویسیم! Very Happy

razielsina, ممنون. میدونم چی میگی اونموقع که اینجا پست دادم رفته بودم stack اونجا سریع جواب دادن و مشکل برطرق شد. اون کدی که من اول نوشتم هم اشتباه بود خودم حواسم نبود. من کلا اول هردوتاشون رو sqrt میکردم که عدد هام کوچیکتر بشن Rolling Eyes ولی بعد ورداشتمشون یه متغیر گنده گذاشتم براشون.

دست چپ معادله کلا فاصله بین دوتا مرکز دایره ها رو بر گیردونه. اگه من اونا رو sqrt کنم عددی که بدست میاد به مراتب کوچیکتر از sqrt نشده radius هست پس باید یا جفتشون رو sqrt کنم یا هیچکدوم. والا من فرمول کلیش رو اینطوری دیدم:

dx^2 + dy^2 <= radius^2

البت radius جمع شده جفت شعاع ها.

_________________
I have a dream that little children will one day live in a nation where they will not be judged by the color of their skin but by the content of their character. I have a dream today
هیچ راه فراری نیست!
http://www.dreamfactory.ir
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
razielsina
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: 5 شنبه 8 تير 1385
تعداد ارسالها: 326
محل سكونت: ايران


شنبه 26 آذر 1390 - 02:30
پاسخ بصورت نقل قول
MahanGM نوشته:
آره دادا Physics Engine هم مینویسیم! Very Happy

razielsina, ممنون. میدونم چی میگی اونموقع که اینجا پست دادم رفته بودم stack اونجا سریع جواب دادن و مشکل برطرق شد. اون کدی که من اول نوشتم هم اشتباه بود خودم حواسم نبود. من کلا اول هردوتاشون رو sqrt میکردم که عدد هام کوچیکتر بشن Rolling Eyes ولی بعد ورداشتمشون یه متغیر گنده گذاشتم براشون.

دست چپ معادله کلا فاصله بین دوتا مرکز دایره ها رو بر گیردونه. اگه من اونا رو sqrt کنم عددی که بدست میاد به مراتب کوچیکتر از sqrt نشده radius هست پس باید یا جفتشون رو sqrt کنم یا هیچکدوم. والا من فرمول کلیش رو اینطوری دیدم:

dx^2 + dy^2 <= radius^2

البت radius جمع شده جفت شعاع ها.

بر اساس اون فرمول كه داري درسته و مشكلي نيست.مشكل كارت اونجايي بود كه در عين استفاده از فرمول بالايي از تابع sqrt استفاده کرده بودی که طول بردار رو بر میگردوند که در اون موقع باید با جمع دو شعاع مقایسه میکردی.

_________________
اهورا مزدا اين سرزمين مقدس را از هر گونه دشمن و خشكسالي به دور نگه دارد.
همانا از اسب افتاده ايم نه از اصل(مهدي اخوان ثالث)
www.sina-kian.com
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
behbahan
در حال رشد
در حال رشد


تاريخ عضويت: 4 شنبه 12 ارديبهشت 1386
تعداد ارسالها: 79


شنبه 26 آذر 1390 - 07:31
پاسخ بصورت نقل قول
سلام

این x1 , x2 و y1 , y2 چه هستند ؟؟؟ یه کم میشه توضیح بدید (فردا بدرد کنکورم میخوره Razz )
من که هر چی با شکل صفحه قبل مقایسه کردم نفهمیدم چه طور اینا رو به dx و dy ربط بدم
اینها که نقطه ی مجعول دارن !!!
البته اون فرمول زمانی درسته که x1 , x2,y2,y1مختصات مراکز دایره باشن نه دو سر خطوط dx , dy (البته دوسرشون مراکز دایره هستن ولی سری که مجعوله نقطه یرخورده و تا اون نقطه ی برخورد نباشه نمیشه اندازه ی اون دوخط رو محاسبه کرد البته در یه صورت میتونه درست باشه که مراکز هردودایره روی یه محور باشن که این هم باعکس نمی خونه و در این صورت یه خط به وجود می یاد و اون هم فاصله ی دو مرکزه !!!)
کلا ربط این فرمول رو با اون شکل یکی برام توضیح بده 6 ماه دیگه کنکور دارم Surprised Surprised Surprised
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
MahanGM
پیر بازی سازی
پیر بازی سازی


تاريخ عضويت: 3 شنبه 20 شهريور 1386
تعداد ارسالها: 1846
محل سكونت: USS Terra Nova


شنبه 26 آذر 1390 - 11:49
پاسخ بصورت نقل قول
razielsina, آره میگم که من کد رو اول اشتباه نوشته بودم.
behbahan, نمی دونم فکر نکنم بدرد کنکور بخوره! Shocked

این فرمول برای بدست آوردن فاصله ی شعاع های بین دو تا دایره هست. اگر فاصله اشون کمتر یا مساوی 0 بشه برخورد رخ میده.

حالا برو بچ این که خیلی ساده بود برخورد دایره با مستطیل رو رفتم یجا دیدم و در آوردم. دو برابر این کد داره. راستی یه سوال، توی فیزیک های سه بعدی از کجا اشیاء تشخیص میدن، شیء فعلی که باهاش برخورد کردن چجور شکلی داره؟ مربوط به تنظیمات حجم و اینچیزا میشه؟ من یه ایده کلی که برای درست کردن یه فیزیک معمولی دیدم ماله همین game makerه. تو گیم میکر با هر شیء که می خوای برخورد کنی یک رویداد درست می کنی براش اینطوری دیگه برنامه می تونه بفهمه چه شکلی قراره با چه شکلی برخورد کنه.

_________________
I have a dream that little children will one day live in a nation where they will not be judged by the color of their skin but by the content of their character. I have a dream today
هیچ راه فراری نیست!
http://www.dreamfactory.ir
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
Unity3D
مدیر انجمن
مدیر انجمن


تاريخ عضويت: 2 شنبه 23 آذر 1388
تعداد ارسالها: 1034


شنبه 26 آذر 1390 - 13:13
پاسخ بصورت نقل قول
behbahan,
نمیدونم منظورتون از اینکه اینا ربط به هم ندارن چیه ! توضیحات رو که ماهان عزیز دادن اما این رابطه هم فکر میکنم برا مقطع دوم راهنمایی باشه ، برا کنکور باید بیشتر از اینا خودتون رو آماده کنید !

MahanGM,
درسته تشخیص برخورد بین دایره با دایره ساده ترین حالت هست ، حالا تشخیص برخورد بین Polygon Shape ها با اشکال دیگه رو هم در نظر بگیر PDT_002 تو سه بعدی هم فرق نداره یه سری اشکال ابتدایی هست مثل sphere و box و capsule و اشکال Custom هم از Mesh استفاده میشه ... در مورد اینکه چطور تشخیص میدن شکل اشکال چیه ... بهتر اینه که شما یه کلاس Shape به صورت Abstract داشته باشید و تمام خواص و رویدادها و متد هایی که مریوط به همه انواع Shape ها هست رو براش صرفا تعریف کنید ... بعدا برا هر نوع Shape خاص که خواستید داشته باشید مثلا Box مییاد و از همین کلاس ارث بری میکنید و متدها و رویدادها و.. رو پر میکنید حالا قبل از تشخیص برخورد کافیه Type اشیایی که قراره اون متد تشخیص رو براشون فراخوانی کنی رو بگیری ...
این فقط مرحله اول هست یعنی تشخیص برخورد ( Collision Detection) مرحله بعدی هم که خودت میدونی پاسخگویی به برخوردها هست ( Collision Response )
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
m_basij
پیر بازی سازی
پیر بازی سازی


تاريخ عضويت: 5 شنبه 19 شهريور 1388
تعداد ارسالها: 523
محل سكونت: داخل کد


شنبه 26 آذر 1390 - 14:25
پاسخ بصورت نقل قول
در مورد سه بعدی نوع محاسبه کاملا متفاوت میشه . اجسام در سه بعدی یا فیزیک دارند یا ندارند حالا اگه دارند بعضی انجین ها مثل unreal از کاربر خواسته میشه که برای جسم فیزیک تعریف کنه و فرد با افزودن اجسامی مثل مکعب مربع ، مستطیل ، دایره و استوانه قسمت ها را مشخص می کنه حالا انجین محاسبات روی این اجسام انجام میده و مثلا کاری نداره که جسم 10 متر فاصله داره با سطح یا نه فقط اجسامی که شما اضافه کردید رو محاسبه می کنه. این بهترین راه برای محاسبه فیزیک هست چون حجم محاسبات را به شدت کم میکنه. در مورد دو بعدی هم میتونید همینکارا بکنید ولی نکردیدم نکردید.
حق الزحمه تالیف یادتون نره(البته اگه نگید کی گفت تو حرف بزنی اصلا که حق الزحمه بخواهی) Idea Arrow Wink

_________________
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
MahanGM
پیر بازی سازی
پیر بازی سازی


تاريخ عضويت: 3 شنبه 20 شهريور 1386
تعداد ارسالها: 1846
محل سكونت: USS Terra Nova


شنبه 26 آذر 1390 - 15:07
پاسخ بصورت نقل قول
Unity3D, شیطون تو هم بلدی ها PDT_002 ، در مورد Ploygon ها فکر کنم از Point Collision استفاده بشه بهتره، ها؟ در مورد سه بعدی من هنوز یه چیزی رو نفهمیدم. خوب همه نوع اشکال رو بهشون دادیم ولی زمان برخورد تا از قبل ندونیم این شیء چه نوع شکلی داره نمی تونیم از نوع های اشیاء فیزیکش هم اطلاع پیدا کنیم. الآن یه چیزی به مغزم اومد. الآن مثلا من یه آبجکت دارم باید بگم که هر وقت آبجکت دیگه فاصله اش با من کمتر از 0 شد پس باید برم دنیال برخورد بعد باید اون آبجکتی که از همه نزدیکتره رو ببینیم شکل فیزیکش چطوریه که اینکار رو با دسترسی به لیست اولیه اشیاء انجام میدم. این پروسه رو باید برا همه آبجکت هایی که توی Viewport هست انجام داد. نمی دونم این هم ایده ی منه Rolling Eyes .

خوب شد گفتی من اصلا به Responseش فکر نمی کنم! همین Detectش رو در بیاریم برامون فعلا کافیه. Surprised

m_basij, خوب تو دو بعدی هم همینطوره یا Static هستن یا Dynamic. همه انجین ها از آدم می خوان که شکل فیزکی رو تعریف کنه منتها آنریل اتومات نمی کنه. این آخرش رو نفهمیدم، Unreal چیکار می کنه؟
خوب شد کتاب ننوشتی وگرنه الآن اینجا رو به آتیش میکشدی پسر! Very Happy

_________________
I have a dream that little children will one day live in a nation where they will not be judged by the color of their skin but by the content of their character. I have a dream today
هیچ راه فراری نیست!
http://www.dreamfactory.ir
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
Unity3D
مدیر انجمن
مدیر انجمن


تاريخ عضويت: 2 شنبه 23 آذر 1388
تعداد ارسالها: 1034


شنبه 26 آذر 1390 - 16:33
پاسخ بصورت نقل قول
MahanGM,

در مورد Pixel Collision خوب بستگی به کارت داره ، معمولا برا کاراکتر چیزه خوبی هست اما نسبت به Vector Shape ها ( یا همون Polygon Shape ها ) ضعف هایی داره , بزرگترینش اینه که هرچقدر سایز Sprite بره بالا به همون اندازه هم تعداد pixel ها و بعدش هم محاسبات میره بالا ... برا بعضی جاها هم اصلا کاربرد نداره مثلا زمینی که بخوای کارکترها روش باشن ، چون تو این حالت همیشه آبجکتها داخل Bounding Box اون شی هستن و محاسبات باید دائما و به ازای هر آبجکت انجام بشه !! که خیلی کنده ... ولی Vector ها همونطور که میدونی دیگه کار به سایز ندارن ...

در مورد تشخیص Shape آبجکت ها هم بگذار با یه مثال ساده بگم
فرض کن شما 10 تا آبجکت دارید و میخواید اینها با هم interaction داشته باشن ... شما باید اول یه کلاس پایه براShape ها داشته باشی ... یه کلاس برا نگه داری Shape های صحته که اگه توجه کرده باشید موتورهای فیزیک یه کلاس به نام World یا PhysicWorld دارن ... کلاس World هم معمولا یه متد داره به نام Advance یا Step یا یه همچین چیزی ... هر موقع که این متد فراخوانی میشه معنیش اینه که موتور فیزیک باید محاسبات خودش رو به اندازه مقدار t که بهش داده میشه جلو ببره ( برخورد ها و پاسخ ها رو ...)
بنابراین وقتی متد Step فراخوانی میشه ( تو حالتی که هیچ بهینه سازی در کار نیست ) باید وضعیت برخورد Shape ها تو یه جدول ذخیره بشه ( بعدا برای پاسخگویی به برخوردها و یه سری موارد دیگه مثلا Collision Islands ) ... مثل عکس زیر :



حالا چیزی که میخواستی بدونی این بود که از کجا بفهمیم شکل اصلی Shapeها چیه ... کافیه که Type اصلی اون شی رو بدست بیاری مثلا تو C# از متد GetType استفاده میکنی :

كد:

Shape myShape = new BoxShape();
            myShape.GetType(); // <========= Returns BoxShape Type


در مورد Viewport هم راستش نه محاسبات فیزیک نباید نسبت به Viewport انجام بشه ...
توی Physic Engine ها معمولا کارهای دیگه ای برا بهینه کردن انجام میدن مثلا فضا رو به چند بخش تقسیم میکنند و ...
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
behbahan
در حال رشد
در حال رشد


تاريخ عضويت: 4 شنبه 12 ارديبهشت 1386
تعداد ارسالها: 79


شنبه 26 آذر 1390 - 17:24
پاسخ بصورت نقل قول
هان
بابا من میگم با اون شکل چه ربطی داره
فاصله ی دومرکز :
sqr((x2-x1)^2 +(y2-y1)^2)
خب اینو باید با مجموع دوتا شعاع مقایسه کرد مشکل من فرمول نیست اون dy , dx که دوتا پاره خطن یا دوتا بردارن
من که تو فرمول می بینمم اینا مختصات یه بردارن و بعد اندازه شون رو (فاصله ی دو مرکز) با مجموع دو شعاع مقایسه کردی کلا ربط فرمول با شکل رو توضیح بده
عزیز دلم نپیچون (رفتم هندسه تحلیلی رو ورق زدم نفهمیدم شما بفهمونم )

پیوست :
شاید زیاد به مباحث شما مربوط نباشه ولی ندانسته بمیرم بهتر است یا...
ویرایش :
گرفتم قضیه چیه روی صفحه دو تا نقطه گزاشتم فهمیدم چی کار کردی شرمنده دیشب تا صبح نخوابیده بودم اون پست رو زدم من فکر کردم خط کشیدی بعد که دیدم نقطه چینه فهمیدم برای حل یه مسئله باید دقت کرد اخه من همینجوری تو کتابها کنکوری تا شکل یه سوال رو می دیدم همینجوری شروع می کردم به حل سوال
شرمنده بچه و عجولم
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نمايش نامه هاي ارسال شده قبلي:   
ارسال يك موضوع جديد   پاسخ به يك موضوع    صفحه 2 از 3 تمام ساعات و تاريخها بر حسب 3.5+ ساعت گرينويچ مي باشد
برو به صفحه قبلي  1, 2, 3  بعدي


 
پرش به:  


شما نمي توانيد در اين انجمن نامه ارسال كنيد.
شما نمي توانيد به موضوعات اين انجمن پاسخ دهيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن ويرايش كنيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن حذف كنيد
شما نمي توانيد در نظر سنجي هاي اين انجمن شركت كنيد


unity3d

بازگردانی به فارسی : علی کسایی @ توسعه مجازی کادوس 2004-2011
Powered by phpBB © 2001, 2011 phpBB Group
| Home | عضويت | ليست اعضا | گروه هاي كاربران | جستجو | راهنماي اين انجمن | Log In |