محاسبه مسافت بین دو نقطه در جاوا – از صفر تا صد
در این راهنما به بررسی شیوه محاسبه مسافت بین دو نقطه در جاوا میپردازیم.


فرمول ریاضی محاسبه مسافت
تصور کنید دو نقطه روی یک صفحه وجود دارد: نقطه اول A دارای مختصات (x1, y1) است و نقطه دوم B مختصات (x2, y2) را دارد و میخواهیم AB یعنی مسافت بین دو نقطه را محاسبه کنیم.
ابتدا یک مثلث قائمالزاویه با وتر AB میسازیم:

بر اساس قضیه فیثاغورث، مجموع مجذورهای طول اضلاع غیر وتر مثلث برابر با مربع طول وتر مثلث است یعنی:
AB2 = AC2 + CB2
در وهله دوم به محاسبه AC و CB میپردازیم. بدیهی است که:
AC = y2 - y1
به طور مشابه:
BC = x2 - x1
بخشهایی از معادله را جایگزین میکنیم:
distance * distance = (y2 - y1) * (y2 - y1) + (x2 - x1) * (x2 - x1)
در نهایت از معادله فوق میتوانیم مسافت بین دو نقطه را محاسبه کنیم:
distance = sqrt((y2 - y1) * (y2 - y1) + (x2 - x1) * (x2 - x1))
پیادهسازی جاوا
اینک به بررسی پیادهسازی جاوای این محاسبه میپردازیم.
استفاده از فرمول ساده
با این که پکیجهای java.lang.Math و java.awt.geom.Point2D راهحلهای آمادهای ارائه میکنند. اما ابتدا فرمولهای فوق را به صورت زیر پیادهسازی میکنیم:
برای تست این راهحل باید مثلثی با اضلاع 3 و 4 (که در تصویر فوق نمایش یافته است) بسازیم. بدیهی است که اندازه قطر نیز 5 خواهد بود، زیرا:
3 * 3 + 4 * 4 = 5 * 5
راهحل را بررسی میکنیم:
استفاده از پکیج java.lang.Math
اگر نتیجه ضرب متد ()calculateDistanceBetweenPoints بسیار بزرگ باشد، ممکن است سرریز رخ دهد. برخلاف آن متد ()Math.hypot از overflow یا underflow بیدرنگ جلوگیری میکند.
همین نقاط را مانند قبل میگیریم و بررسی میکنیم که مسافت همان باشد:
استفاده از پکیج java.awt.geom.Point2D
در نهایت مسافت را با استفاده از متد ()Point2D.distance محاسبه میکنیم:
اینک متد را به همان روش تست میکنیم:
سخن پایانی
در این راهنما چند روش را برای محاسبه مسافت بین دو نقطه در جاوا بررسی کردیم. همانند همیشه کدهای این مقاله را میتوانید در صفحه گیتهاب (+) ملاحظه کنید.
اگر این نوشته برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای جاوا (Java)
- گنجینه آموزش های جاوا (Java)
- مجموعه آموزشهای برنامهنویسی
- ۱۰ مفهوم اصلی زبان جاوا که هر فرد مبتدی باید بداند
- زبان برنامه نویسی جاوا (Java) — از صفر تا صد
==












