((A.x - B.x)*(C.y


((A.x - B.x)*(C.y - B.y)- (C.x - B.x)*(A.y - B.y) <= 0)) return 1; /* Условие не выполнено - возвращаем 0. */ return 0; } /* Функция, которая отвечает на вопрос задачи. * * A - точка; * * polygon - массив вершин многоугольника; * * num - число вершин многоугольника. */ int isInternalPoint (point A, point *polygon, int num) { /* Это счетчик числа пересечений сторон с * * горизонтальной прямой, проходящей через A * * и лежащих левее A. */ int counter = 0; int i; /* Проверяем все стороны многоугольника, * * соединяющие вершины с соседними номерами */ for (i = 0; i < num - 1; i++) { /* Если точка лежит на стороне, сразу * * возвращаем 1 */ if (inBetween (polygon [i], A, polygon [i+1])) return 1; /* иначе проверяем, пересекает ли отрезок * * прямую. */ counter += isCrossed (polygon [i], polygon [i + 1], A); } /* Точно также проверяем сторону многоугольника, * * соединяющую первую и последнюю вершины. */ if (inBetween
Индекс
Элементарные функции    Линейные уравнения    Нелинейные уравнения    Случайные числа


Hosted by uCoz