تشخیص نقطه داخل مثلث

بررسی دقیق موقعیت مکانی یک نقطه نسبت به رئوس مثلث با استفاده از الگوریتم باری‌سنتری.

مختصات رئوس مثلث (ABC)

رأس A
رأس B
رأس C

مختصات نقطه تست (P)

Px
Py
در انتظار ورودی معتبر...

منطق مسئله "نقطه در مثلث" چیست؟

مسئله تشخیص اینکه آیا یک نقطه خاص (P) درون محوطه یک مثلث (ABC) قرار دارد یا خیر، یکی از بنیادی‌ترین مسائل در هندسه محاسباتی است. این مسئله در ظاهر ساده به نظر می‌رسد اما مبنای بسیاری از سیستم‌های پیچیده امروزی است.

ریاضیدانان برای حل این مسئله از سیستم مختصات باری‌سنتری (Barycentric) استفاده می‌کنند. در این سیستم، موقعیت نقطه P بر اساس وزن‌دهی به سه رأس مثلث تعریف می‌شود. اگر تصور کنید در هر رأس مثلث یک وزنه قرار دارد، نقطه P جایی است که این سیستم به تعادل می‌رسد.

فرمول باری‌سنتری (روش دقیق)

هر نقطه P در صفحه مثلث ABC را می‌توان با معادله زیر نوشت:
P = αA + βB + γC
به شرطی که α + β + γ = 1 باشد.

شرط داخل بودن

  • اگر 0 < α, β, γ < 1 باشد، نقطه داخل مثلث است.
  • اگر یکی از ضرایب صفر باشد، نقطه روی لبه (ضلع) است.
  • اگر هر یک از ضرایب منفی باشد، نقطه خارج است.

فرمول محاسبه α

α = area(P, B, C) / area(A, B, C)

نسبت مساحت مثلث ساخته شده با نقطه P به مساحت کل.

کاربردهای واقعی در دنیای دیجیتال

محدوده سرویس‌دهی (اسنپ/تپسی)

در اپلیکیشن‌های تاکسی اینترنتی، شهر به نواحی مثلثی کوچک تقسیم می‌شود (مش‌بندی). وقتی شما درخواست می‌دهید، سیستم با استفاده از همین الگوریتم بررسی می‌کند که مختصات GPS شما داخل کدام مثلث (ناحیه قیمت‌گذاری) قرار دارد.

گرافیک کامپیوتری (Rasterization)

کارت گرافیک برای رنگ‌آمیزی یک مثلث سه‌بعدی روی مانیتور دوبعدی، برای تک‌تک پیکسل‌ها چک می‌کند که آیا مرکز پیکسل "داخل" مثلث است یا خیر. این عملیات میلیون‌ها بار در ثانیه انجام می‌شود.

بازی‌سازی (Hit Detection)

وقتی در بازی شوتر تیراندازی می‌کنید، بازی باید بفهمد آیا تیر به کاراکتر برخورد کرده یا نه. مدل‌های سه‌بعدی از هزاران مثلث ساخته شده‌اند و سیستم این تست را برای مثلث‌های هدف انجام می‌دهد.

اشتباهات رایج محاسباتی

  • خطای اعشاری (Floating Point): در کامپیوتر اعداد دقیق نیستند. ممکن است حاصل محاسبه 0.00000001- شود و برنامه به اشتباه نقطه را خارج فرض کند. استفاده از یک مقدار اپسیلون (Epsilon) ضروری است.

  • ترتیب رئوس: در روش‌های ضرب برداری (Cross Product)، اگر ترتیب رئوس ساعت‌گرد یا پادساعت‌گرد باشد، علامت‌ها تغییر می‌کند. اما روش باری‌سنتری نسبت به ترتیب رئوس مقاوم‌تر است.

سوالات متداول

آیا این روش برای مثلث‌های بسیار باریک هم کار می‌کند؟

بله، روش باری‌سنتری از نظر ریاضی برای همه انواع مثلث معتبر است. اما در مثلث‌های بسیار باریک (که رئوس تقریبا هم‌خط هستند)، مخرج کسرها به صفر نزدیک می‌شود و احتمال خطای محاسباتی افزایش می‌یابد.

اگر رئوس مثلث هم‌خط باشند چه می‌شود؟

در این حالت مساحت مثلث صفر می‌شود و عملاً مثلثی وجود ندارد. سیستم ما این حالت را تشخیص داده و خطای "رئوس هم‌خط" را نمایش می‌دهد چون مخرج فرمول باری‌سنتری صفر می‌شود.