Хрест продукт вимірює ступінь перпендикулярної-ність двох векторів. Уявіть, що кожен край вашого многокутника є вектором у площині xy тривимірного (3-D) ксилового простору. Тоді поперечний добуток двох послідовних ребер є вектором у напрямку z, (позитивний z-напрямок, якщо другий відрізок за годинниковою стрілкою, мінус z-напрямок, якщо він проти годинникової стрілки). Величина цього вектора пропорційна синусу кута між двома вихідними ребрами, тому він досягає максимуму, коли вони перпендикулярні, і звужується, щоб зникнути, коли ребра колінеарні (паралельні).
Отже, для кожної вершини (точки) багатокутника обчисліть величину поперечного добутку двох сусідніх ребер:
Using your data:
point[0] = (5, 0)
point[1] = (6, 4)
point[2] = (4, 5)
point[3] = (1, 5)
point[4] = (1, 0)
Так Позначте краю послідовно , як
edgeA
це відрізок від point0
до point1
і
edgeB
між point1
до point2
...
edgeE
між point4
і point0
.
Тоді вершина A ( point0
) знаходиться між
edgeE
[Від point4
до point0
]
edgeA
[Від point0
до `точки1 '
Ці два ребра самі є векторами, координати x і y можна визначити, віднімаючи координати їх початкової та кінцевої точок:
edgeE
= point0
- point4
= (1, 0) - (5, 0)
= (-4, 0)
і
edgeA
= point1
- point0
= (6, 4) - (1, 0)
= (5, 4)
і
І хрест твір цих двох суміжних ребер обчислюється з використанням визначник наступної матриці, яка будується шляхом введення координат двох векторів нижче символів , що представляють три осі координат ( i
, j
, & k
). Третя (нульова) оцінена координата є, тому що концепція перехресного продукту - це 3-D конструкція, і тому ми розширюємо ці 2-D вектори на 3-D для того, щоб застосувати крос-продукт:
i j k
-4 0 0
1 4 0
Зважаючи на те, що всі поперечні продукти дають вектор, перпендикулярний множині площини двох векторів, детермінант матриці вище має лише k
компонент (або вісь z).
Формула для обчислення величини k
компонента осі або z є
a1*b2 - a2*b1 = -4* 4 - 0* 1
= -16
Величина цього значення ( -16
) - це міра синуса кута між двома вихідними векторами, помноженими на добуток величин двох векторів.
Власне, ще одна формула його значення
A X B (Cross Product) = |A| * |B| * sin(AB)
.
Отже, щоб повернутися до міри кута, вам потрібно розділити це значення ( -16
) на добуток величин двох векторів.
|A| * |B|
= 4 * Sqrt(17)
=16.4924...
Отже міра гріха (AB) = -16 / 16.4924
=-.97014...
Це міра того, чи наступний відрізок після вершини зігнувся вліво або вправо, і на скільки. Не потрібно приймати дугу-синус. Все, про що ми будемо дбати, - це його масштабність, і звичайно її знак (позитивний чи негативний)!
Зробіть це для кожної з інших 4 точок навколо закритого шляху та додайте значення з цього обчислення в кожній вершині.
Якщо остаточна сума позитивна, ви пішли за годинниковою, негативною, проти годинникової стрілки.