ترسیم طرح مبتنی بر دایره با استفاده مختصات قطبی – Delphi و Javascript

به نام دانای برحق

مقدمه

سلام یاده زمانی که دانشگاه بودم سر کلاس ریاضی کاربردی خیلی حال می کردم چون نکات جدیدی رو درک می کردم یکی از درس های ریاضی کاربردی مختصات قطبی بودش که شاید تا الان بیش از ۲۰ مرتبه استفاده شده ازش برام.

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

ما در این قسمت از دو زبان یکی زبان تحت وب کلاینت استفاده می کنیم javascript و یه زبان تحت ویندوز Delphi

مختصات قطبی و تفاوت آن با دکارتی

به زبان ساده ما با بیان تفاوت بهتر میتونیم این مسائله رو روشن کنیم ما برای آدرس دهی در روش دکارتی به دو نقطه نیاز داریم x و y که معادل طول و ارتفاع هستش خوب حالا متخصات قطبی تفاوت دارد و نحوه آدرسی بر اساس این است که مرکز صفحه مختصات میشود محور کار می برای آدرس دهی ما یک فاصله با یک زاویه میدهیم مثلا فاصله ۲۱۰ پیکسل با زاویه ۴۵ درجه از مبدا مختصات میشه آدرس دهی ما اما به نقل از ویکی پدیا این شکلی میتونیم تعریف کنیم:

دستگاه مختصات قطبی، یک دستگاه مختصات دوبعدی است که در آن مکان هر نقطه، با فاصلهٔ آن تا مرکز مختصات (r) و زاویه بین خط رسم‌شده از مرکز به آن نقطه و محور طول، (θ) مشخص می‌شود. این دستگاه در سه بعد به دستگاه مختصات استوانه‌ای و دستگاه مختصات کروی تبدیل می‌شود.

اولین استفاده‌های مشابه که به ایجاد کنونی این دستگاه انجامیده‌است توسط ابوریحان بیرونی انجام شد.

Polar_Coordinates

خب حالا یه نمونه تغییرات پر مختصات قطبی و درکاتی میبینیم در تصویر زیر با فومولش تا شما با این نوع متخصات آشنا بشید:

251px-Cartesian_to_polar

 

 

و این یک شکل دیگه اس که شکل حلزونی رو تو مخصات قطبی پیاده سازی کرده و با یه فرمول یک خطی این خطوط رو ترسیم کرده اما در دکارتی نمیشه به سادگی این کار رو کرد مثلا فرمول زیر میشه:

r(φ) = φ / 2π for0 < φ < 6π

halazuni

تبدیل مختصات قطبی به دکارتی

 

حال آنکه ما از مزایای این مختصات مطلع شدیم بر این بر می آییم که که چطور مختصات قطبی رو تبدیل به مختصات دکارتی کنیم برای این کار ریاضیدانان یک فرمول ارائه کردن:

خب برای این کار شما فرمول مورد نظر قطبی مختصات ترسیم رو باید مدام بدست بیاورید و سپس در این فرمول به دکارتی تبدیل و رسم نمایید.

 

تابع تبدیل مختصات قطبی به مختصات دکارتی در دلفی و js

در زبان js ما یه سری توابع زیر مجموعه Math داریم که به کارمون میادش بنابراین تابع به شکل زیر میشود:

نحوه استفاده:

پاسخ رو میتونید تو کنسول مرورگر تماشا کنید که معادل: [x: 5.956324671738824, y: 3.677253921724106]   میباشد.

خب میریم حالا به سراغ زبان Primary خودمون یعنی دلفی عزیز 😀 در دلفی از قبل باید یه تایپ تعریف کنیم تا نقطه در تابع قابل بازگشت باشه به و یونت math استفاده شود و تابع به شکل زیر میشود:

و نحوه استفاده به صورت زیر هستش:

امیدوارم مفدی وافع شده باشه در ادامه در مورد موارد گرافیکی بیشتر صحبت می کنیم.

 

 

 

 

 

 

‌A1Gard

اول از همه کوچک ترین عضو مجموعه 4xmen بنده حقیر هستم. در ثانی یک توسعه دهنده هستم زمینه های تخصصی کارم :‌ Delphi, PHP, C++ ,Python, JavaScript, Unity game engine, C#, asm و علاقه مند به لینوکس، RCE ، کریپتوگرافی هستم. تا الان حضرت حق اینا رو به ما داده و هر وقت که بخواد ازمون میگیره دست خودشه. یا حق، با حق، تا حق

More Posts

4 thoughts on “ترسیم طرح مبتنی بر دایره با استفاده مختصات قطبی – Delphi و Javascript”

  1. سلام
    ابتدا از پست مفیدتون تشکر میکنم.
    من نیاز دارم دایره ای رسم کنم به روش در نظر گرفتن اضلاع چند ضلعی ولی با یک تفاوت به زبان سی یا سی شارپ
    اممممااا من باید از همین روش چندضلعی استفاده کنم ولی فاصله نقاطی که بدست میاد یکسان نباشه یعنی طول اضلاعی که بدست میاد یکسان نباشه

    اگه در نوشتن کدش .اینکه چه جور باید مختصات این نقاط را بدست بیارم کمک کنید یک دنیا ممنون میشوم
    البته اگه ایمیلتون را بدید تا سوال را دقیق تر مطرح کنم ممنون میشوم

    1. سلام برای رسم چند ضعلی ها تو تجربه ای که تو Game Engine داشتم بهترین روش استفاده از زوایای داخلی هستش یعنی شما 360 رو به تعداد زوایاتون تقسیم کنیم و بعد نقاط رو رسم کنیم به عنوان مثال
      رسم یه 8 ضلعی منتظم رو باید 360 رو تقسیم بر 8 کنی و برای مثلث های کنار هم بچینی و برای نا منتظم زوایا رو دست کاری کنی ولی مجموع باید 360 شود به شکل زیر دقت کن:

      https://upload.wikimedia.org/wikipedia/commons/thumb/e/e5/Regular_polygon_8_annotated.svg/2000px-Regular_polygon_8_annotated.svg.png

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *