A.y)- (C.x-A.x)*(B.y-A.y)
A.y)-
(C.x-A.x)*(B.y-A.y) == 0) &&
/* и между двумя другими */
(((B.y <= A.y) && (B.y >= C.y)) ||
((B.y >= A.y) && (B.y <= C.y)))
return 1;
return 0;
}
/* Функция, которая проверяет, пересекается ли *
* отрезок AB с горизонтальной прямой, проходящей *
* через C, причем точка пересечения должна *
* находиться левее C. Считается, что если один *
* конец отрезка лежит на прямой, то отрезок *
* пересекается с прямой только если второй конец *
* отрезка лежит под прямой. */
int isCrossed (point A, point B, point C)
{
/* Если точка A -- под прямой, а точка *
* B -- над (на), то условие, что пересечение *
* левее C эквивалентно тому, что обход *
* A -> B -> C -- по часовой стрелке. */
if ((A.y < C.y) && (B.y >= C.y) &&
((B.x - A.x)*(C.y-A.y)
-(C.x - A.x)*(B.y - A.y) <= 0))
return 1;
/* Теперь A и B поменялись местами. */
if ((B.y < C.y) && (A.y >= C.y) &&
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа