Альтернативный способ получить представление о решениях, предлагаемых сетями, состоит в том, чтобы понять небольшие геометрические последствия.
Пусть pqr = [P, Q, R] - это точки, которые образуют плоскость, которая разделена на 2 стороны линией [P, R] . Мы должны выяснить, находятся ли две точки на плоскости pqr , A, B, на одной стороне.
Любая точка T на плоскости pqr может быть представлена двумя векторами: v = P-Q и u = R-Q, как:
T '= T-Q = i * v + j * u
Теперь значения геометрии:
- i + j = 1: T на линии pr
- i + j <1: T на кв. </li>
- i + j> 1: T на Snq
- i + j = 0: T = Q
- i + j <0: T на кв. И выше Q. </li>
i+j: <0 0 <1 =1 >1
---------Q------[PR]--------- <== this is PQR plane
^
pr line
В общем
- i + j - это мера того, как далеко T находится от Q или линии [P, R] и
- знак i + j-1 подразумевает боковость Т.
Другие значения геометрии i и j (не относящиеся к этому решению):
- i , j - скаляры для T в новой системе координат, где v, u - новые оси и Q это новое происхождение;
- i , j можно рассматривать как тяговое усилие для P, R соответственно. Чем больше i , тем дальше T от R (большее усилие от P ).
Значение i, j можно получить, решив уравнения:
i*vx + j*ux = T'x
i*vy + j*uy = T'y
i*vz + j*uz = T'z
Итак, нам дано 2 балла, A, B на плоскости:
A = a1 * v + a2 * u
B = b1 * v + b2 * u
Если A, B находятся на одной стороне, это будет верно:
sign(a1+a2-1) = sign(b1+b2-1)
Обратите внимание, что это относится и к вопросу: Находятся ли A, B на одной стороне плоскости [P, Q, R] , в которой:
T = i * P + j * Q + k * R
и i + j + k = 1 означает, что T находится на плоскости [P, Q, R], а знак i + j + k-1 означает его sideness. Из этого имеем:
A = a1 * P + a2 * Q + a3 * R
B = b1 * P + b2 * Q + b3 * R
и A, B находятся на одной стороне плоскости [P, Q, R], если
sign(a1+a2+a3-1) = sign(b1+b2+b3-1)