-
دوشنبه 18 مهر 1384, 20:15 عصر
#1
کاربر جدید
یافتن بیرونی ترین نقاط(فوری)
تعدادی نقطه داریم در صفحه.می خواهیم بیرونی ترین نقاط را پیدا کنیم.help plz
-
سه شنبه 19 مهر 1384, 00:30 صبح
#2
VIP
یه تعریف از نقاط بیرونی: (تعریف 1)
از یه مجموعه نقاط دلخواه، نقاطی رو بیرونی میگیم، اگه بشه یه چند ضلعی به رئوس اون نقطه ها رسم کنیم که 2 شرط زیر رو بر آورده کنه:
1. چند ضلعی مذکور محدب باشه؛
2. تمام نقاط دیگه فقط داخل (نه خارج و نه روی اضلاع) اون واقع بشن.
لم 1: برای هر مجموعه متناهی از نقاط با تعداد بیشتر از 3 نقطه، یک مجموعه نقاط بیرونی وجود داره.
لم 2: مجموعه نقاط بیرونی یه مجموعه نقطه، درصورت وجود یکتاست.
تعریف 2: 2 نقطه از مجموعه نقاط بیرونی رو مجاور میگیم اگه در چند ضلعی تعریف 1 روی یک ضلع باشند.
لم 3: همه نقاط هر مجموعه نقطه، در یک طرف خط مار بر 2 نقطه مجاور قرار دارن.
لم 4: مجموعه نقاط بیرونی دارای نقاطی است که دارای طول بیشینه، طول کمینه، عرض بیشینه و عرض کمینه نسبت به همه نقاط دیگر هستند.
لم 5: نقاطی که دارای طول بیشینه، طول کمینه، عرض بیشینه و عرض کمینه نسبت به همه نقاط دیگر هستند، نقاط بیرونی می باشند.
آخرین ویرایش به وسیله Sepidar : سه شنبه 19 مهر 1384 در 00:48 صبح
-
سه شنبه 19 مهر 1384, 22:19 عصر
#3
کاربر جدید
مرسی از راهنماییتون.اگه ممکنه در موردالگوریتمشم یه راهنمایی بکنید.من الگوریتمشو می خواهم.بازم ممنون
-
پنج شنبه 21 مهر 1384, 16:34 عصر
#4
کاربر دائمی
سلام
این یک الگوریتم مشهور در هندسه محاسباتی است. چیزی که شما میخواهید بهش میگن پوسته محدب یا به انگلیسی Convex Hull الگوریتم مشهورش هم اسمش الگوریتم گراهام است، الگوریتم نسبتا ساده ای هم است ولی پیچیدگی زمانیش یادم نیست فکر کنم زمان خطی بود.
ممنون علی
-
پنج شنبه 21 مهر 1384, 21:44 عصر
#5
کاربر جدید
بازم مرسی به خاطر کمکتون.ولی چرا من این الگوریتم گراهام رو جایی پیدا نمی کنم؟هر چی search می کنم جوابی پیدا نمی کنم.
-
جمعه 22 مهر 1384, 00:17 صبح
#6
VIP
فرض کن مجموعه نقاط ورودی S باشه و مجموعه نقاط بیرونی O. خوب در ابتدای الگوریتم، بدیهیه که O={}
اول باید چک کنی که n(S)>3
یه نقطه از S که عرضش بزرگتر مساوی همه نقاط دیگه S هست رو انتخاب کن. اسم این نقطه رو میذاریم a
O=O+{a}
top:
توی S-O دنبال یه نقطه مثل x بگرد که همه نقاط S یه طرف خط ax واقع بشن.
اگه x=nil برو به end
a=x
O=O+{a}
برو به top
end:
-
جمعه 22 مهر 1384, 00:22 صبح
#7
VIP
برای اینکه چک کنی یه نقطه مثل (x0,y0) کدوم طرف یه خط مثل y=ax+d هست کافیه y0-m*x0-d رو تشکیل بدی. اگه حاصل مثبت شد، این نقطه بالای خط مذکوره. اگه منفی شد ثایینشه. اگه صفر شد هم روشه.
البته برای خطوط قائم این روش جواب نمیده و باید مستقیما طول نقاط چک بشن.
در ضمن الگوریتم بالا یه ایراد کوچیک داره. گذاشتم خودت پیداش کنی
-
جمعه 22 مهر 1384, 13:13 عصر
#8
کاربر دائمی
سلام
غیر ممکنه. حتما روی اینترنت هست. Convex Hull Algorithm رو جستجو کنید. اگر هم دنبال سورس کد آماده هستید شرمنده. اینجا فقط برای راهنمایی است.
ممنون علی
-
جمعه 22 مهر 1384, 23:18 عصر
#9
کاربر جدید
مرسی از راهنماییتون خیلی کمکم کردین
-
دوشنبه 25 مهر 1384, 17:24 عصر
#10
کاربر جدید
-
دوشنبه 25 مهر 1384, 17:26 عصر
#11
کاربر جدید
خواهشمندم در نوشتن برنامه حرکت اسب کمکم کنید
قوانین ایجاد تاپیک در تالار
- شما نمی توانید تاپیک جدید ایجاد کنید
- شما نمی توانید به تاپیک ها پاسخ دهید
- شما نمی توانید ضمیمه ارسال کنید
- شما نمی توانید پاسخ هایتان را ویرایش کنید
-
قوانین سایت