мовне незалежне рішення:
ДАНО: багатокутник ЗАВЖДИ може складатися з n-2 трикутників, які не перекриваються (n = кількість точок АБО сторін). 1 трикутник = 3-сторонній многокутник = 1 трикутник; 1 квадрат = 4-сторонній многокутник = 2 трикутники; і т.д. оголошення нудота QED
отже, багатокутник можна зменшити шляхом «відрубування» трикутників, і загальна площа буде сумою площ цих трикутників. спробуйте це за допомогою аркуша паперу та ножиць, найкраще, якщо ви зможете наочно уявити процес перед тим, як слідувати.
якщо ви берете будь-які 3 послідовні точки в полігонах шляху і створюєте трикутник з цими точками, у вас буде один і лише один із трьох можливих сценаріїв:
- Отриманий трикутник знаходиться всередині оригінального багатокутника
- Отриманий трикутник повністю знаходиться поза вихідним багатокутником
- Отриманий трикутник частково міститься у вихідному багатокутнику
нас цікавлять лише випадки, які потрапляють у перший варіант (повністю міститься).
кожного разу, коли ми знаходимо одну з них, ми її відрубуємо, обчислюємо її площу (легкий горох, не буду тут пояснювати формулу) і складаємо новий багатокутник з однією стороною менше (еквівалентно багатокутнику з цим відрізаним трикутником). поки у нас не залишиться лише один трикутник.
як реалізувати це програмно:
створити масив (послідовних) точок, що представляють шлях НАВКОЛО багатокутника. почати з точки 0. запустити масив, складаючи трикутники (по одному) з точок x, x + 1 та x + 2. перетворити кожен трикутник із фігури в область і перетинати його з площею, створеною з багатокутника. ЯКЩО отримане перетин ідентичне вихідному трикутнику, тоді згаданий трикутник повністю міститься в багатокутнику і може бути відрубаний. видалити x + 1 з масиву і почати знову з x = 0. в іншому випадку (якщо трикутник знаходиться поза [частково або повністю] багатокутником), перейдіть до наступної точки x + 1 у масиві.
крім того, якщо ви хочете інтегруватись із картографуванням і починаєте з геоточок, ви повинні ПЕРШИМ перейти з геоточок на екранні точки. для цього потрібно прийняти рішення про моделювання та формулу форми землі (хоча ми схильні думати про землю як про кулю, вона насправді є неправильною яйцевидною (яєчна форма), із вм'ятинами). Є багато моделей, для подальшої інформації wiki. важливим питанням є те, чи будете ви вважати область площиною чи криволінійною. загалом, "малі" ділянки, де точки знаходяться на відстані до декількох км, не призведуть до значних помилок, якщо вважати їх площинними та не опуклими.