دوباره خوش اومدی.
توی این ویدیو می‌خوایم از structها استفاده کنیم تا یه پروژه کوچیک بسازیم و درواقع struct مربوط به point که قبلاً ساختیم رو بهترش کنیم
با اضافه کردن یه method که بتونه فاصله بین دو نقطه رو حساب کنه.
اما قبل از اینکه این کار رو بکنیم، یه چیز دیگه هست که تو ویدیو قبل نگفتم و می‌خوام الان اضافه‌اش کنم،
اونم اینه که معمولاً توی structها مرسومه که اون‌ها رو immutable بسازیم، یعنی فیلدها رو به صورت read only تعریف کنیم و فقط get accessor داشته باشیم.
و setter نداشته باشیم.
خب، یعنی الان می‌خوام propertyهای اصلی‌م رو اینطوری تنظیم کنم.
و مطمئن شم که setterها حذف شدن.
یعنی فقط getter دارم.
خب.
در نتیجه، مشخصه که این کدی که اینجا دارم دیگه کار نمی‌کنه.
پس باید مطمئن شم که مقادیر رو مستقیماً موقع مقداردهی اولیه تنظیم کنم.
اینجا مثلاً new point دو، می‌تونه بشه 20 و 30. خب.
حالا چطور این دو تا method جالب رو اضافه کنیم؟
اولین کاری که کمک زیادی می‌کنه اینه که همه‌چیز رو double کنیم.
چون وقتی داری تفاوت یا فاصله حساب می‌کنی، معمولاً عددها صحیح درنمیان یا خیلی به ندرت صحیح می‌شن.
پس بهتره double باشن.
پس مطمئن می‌شیم که همه چی double باشه و بقیه قسمت‌ها همون‌طور باقی بمونه.
حالا یه method می‌نویسیم به اسم public double DistanceTo که یه point به عنوان ورودی می‌گیره.
و اسمش رو می‌ذارم other، باشه؟
و این method قراره برگردونه...
خب درواقع بیشتر از فقط x لازمه، IDE حرف خوبی زد ولی کافی نیست.
پس یه متغیر می‌سازم double dx که برابر باشه با other.x منهای x خودش و یه double dy،
که برابر باشه با other.y منهای y خودش.
و نتیجه می‌شه ریشه دومِ حاصل جمع مربع این دوتا. یعنی از math.sqrt استفاده می‌کنیم برای dx*dx به اضافه dy*dy.
خب.
اگه مطمئن نیستی اینجا چی شد، فاصله بین دو نقطه همون طول خطیه که اون دو نقطه رو توی یه صفحه به هم وصل می‌کنه.
فرمولش معمولاً اینطوریه که فاصله بین دو نقطه برابر با...
ریشه دوم مجموع مربع تفاضل مختصات‌های اون‌هاست.
پس داریم توی ریشه دوم جمع دو مقدار.
اون دو مقدار چی‌ان؟
اولی مربّع فاصله محور xهاست.
یعنی x1 منهای x2.
و دومی فاصله محور yهاست، یعنی y2 منهای y1، اونم به توان دو.
و از جمع این دوتا، ریشه دوم می‌گیریم که همون فاصله می‌شه.
این چیزیه که فکر کنم توی ریاضی نهم یا هشتم یا شاید دهم یاد می‌دن.
البته بستگی داره کجای دنیا زندگی می‌کنی و چه نوع مدرسه‌ای میری.
توی آلمان مثلاً سه نوع مدرسه هست.
تو Hauptschule فک کنم می‌رسن بهش توی نهم، اگه اصلاً برسن.
ولی توی Gymnasium احتمالاً زودتر یادش می‌دن، مثلاً هشتم.
شاید حتی زودتر. دقیق نمی‌دونم، یه همچین چیزی.
پس اینطوری فاصله حساب می‌شه. حالا بریم ببینیم چطوری استفاده‌اش کنیم.
فرض کن بخوایم فاصله بین P1 و P2 رو ببینیم.
پس یه متغیر double به اسم distance می‌سازیم و مقدارش رو می‌ذاریم برابر با p1.DistanceTo(p2).
خب.
و حالا فقط می‌نویسیمش روی Console.
می‌گیم "فاصله بین نقاط" و بعد مقدار distance.
و یه چیزی که تا حالا ندیدیم اینه که می‌خوام فقط دو رقم بعد از ممیز نمایش داده بشه.
ببینیم چه شکلی درمیاد.
می‌بینی که فاصله اینجا شده 14.14.
اگه دقت کنی، فاصله روی محور x دهه و روی محور y هم ده.
ده به توان دو می‌شه صد، جمعشون می‌شه دویست.
و ریشه دوم دویست می‌شه همون حدود 14.14.
احتمالاً این عدد رو قبلاً دیدی چون همون ریشه دوم دوئه.
یعنی 1.414.
خب.
حالا می‌تونیم از عددهای پیچیده‌تر هم استفاده کنیم.
بیاین P3 رو حذف کنیم، ولی ایده کلی همونه.
شاید از خودت بپرسی F2 یعنی چی.
درواقع یعنی float با دو رقم بعد از ممیز.
داریم می‌گیم بعد از ممیز دو رقم نشون بده.
می‌تونم بذارمش روی سه تا رقم.
اون‌وقت می‌بینیم مقدار دقیق‌تر می‌شه، مثلاً 14.142.
یعنی داریم نزدیک‌تر می‌شیم به مقدار واقعی ریشه دوم.
می‌تونی بگی خب من جزئیات بیشتری می‌خوام، بذار تا پنج رقم.
اون‌وقت می‌شه 14.14214 بعد از ممیز.
یعنی پنج رقم بعد از ممیز.
خب، اینم از مثال کوچیک ما که بهمون اجازه می‌ده فاصله بین دو نقطه رو حساب کنیم.
دیگه همین بود کل ماجرا.
خب، اینم از این ویدیو.
توی ویدیو بعدی می‌بینمت.