Точка в полигон

Тук е описан начин за да определим дали една точка е вътре в даден контур.
Предназначен е за програмна технология, така, че някои теоретични формалности може да са пропуснати.

Текста по-долу може да се стори сложен и тудно разбираем за някого, но тъй като целта е програма, не е важно колко трудно я разбираме, нито дори колко е голяма и сложна. Важно е само да свърши работа и по възможност по-бързо. Реално получената програма не голяма, нито сложна. Публикувам този метод, защото за мен той се оказа решение. За цикъла са нужни само координатите на текущата отсечка x1,y1,x2,y2 - тоест тези, с които програмите за обслужване на контура боравят по принцип, както и параметрите Mx,My - координати на изследваната точка, означена по-долу с буква М.

Методът е основан на представата ни за електромагнитна индукция и закона на Фарадей.
В учебниците по електротехника можем да видим следната картинка, илюстрираща действието на трансформатора. Ако по намотката A тече променлив ток, той създава променливо магнитно поле чийто силови линии са затворени криви, както е показано тук:

В намотката B, поставена в съседство, се индуцира електродвижещо напрежение /и ток, ако е натоварена/. Магнитното поле, пронизващо пръстена B, се явява средство за предаване на електричната енергия. За нашите цели е по-добре да разгледаме поле, състоящо се от една-единствена силова линия, вместо многото нарисувани по-горе. Да допуснем също, че това поле се променя с времето по един линеен и равномерен начин. Да означим с М точката, в която тази магнитната силова линия пробожда плоскостта на намотката B. Нека дори разгледаме само малък участък от силовата линия около точката M. Тази една магнитна линия поражда електрични сили - всъщност електростатично поле - което може да се изобрази със силови линии - концентрични окръжности в равнина перпендикулярна на магнитната силова линия.

При въображаемия прост случай приемникът има форма на една от тези окръжности. Но в действителност явлението не изисква определена форма за намотката B, а само условието да е затворен контур и магнитната линия да го пробожда вътре. Във всяка точка от контура действува съставка на това концентрично поле, равна на проекцията на допирателния вектор F по силовата линия върху контура C. Или с други думи силата в един малък участък е равна на скаларното произведение от двата вектора F-силата на полето и C-направлението на контура.
Общата индуцирана електродвижеща сила може да се оцени като интеграл от полето F, пресметнат по дължината на контура C.
Ако точката M е извън контура, този интеграл ще има нулева стойност.
В противен случай той е положителен или отрицателен, в зависимост от посоката на полето.
"Интеграл" може и да изглежда сложна дума понякога, но компютрите смятат интеграли лесно, тъй като за тях това са сборове.
Да означим с I въпросния интеграл и да го запишем:

Като сбор той изглежда по следния начин: Разделяме контура на N къси отсечки; За всяка от тях (с индекс i) пресмятаме векторите F,C и ги умножаваме скаларно. После сборуваме всички в едно число:



Коментар за грешката
Грешката расте с дължината на отсечката, за която допускаме, че полето F е постоянен вектор. Ако намалим дължината, грешката намалява, но се увеличава времето за пресмятане. За оценки, сързани с видмост по екрана, е достатъчна дължина от порядъка на няколко пиксела. Не се полъгвайте да броите дълги праволинейни участъци от контура като една отсечка. Това не е допустимо, тъй като полето F няма една и съща стойност по такава отсечка.

________________________________________________________________________________________
Радостин Желязков 19.10.2008

Други статии