Решение, которое было дано вам в вашем последнем вопросе, в основном добавляет Z = 0 для всех ваших баллов. По таким расширенным векторам вы вычисляете свое перекрестное произведение . Геометрически перекрестное произведение создает вектор, который ортогонален двум векторам, используемым для вычисления, так как оба ваших вектора лежат в плоскости XY, результат будет иметь только компонент Z Знак того компонента z обозначает, что вектор смотрит вверх или вниз на плоскости XY. Этот знак зависит от того, находится ли AB по часовой стрелке или против часовой стрелки друг от друга. Это, в свою очередь, означает, что знак компонента z показывает, находится ли точка, на которую вы смотрите, слева или справа от линии, которая находится на AB.
То есть с перекрестным произведением двух векторов A и B является вектор
AxB = (AyBz − AzBy, AzBx − AxBz, AxBy − AyBx)
с Az и Bz равными нулю, у вас остается третий компонент этого вектора
AxBy - AyBx
Если A - вектор из точки a в b, а B - вектор из точки a в c, то означает
Ax = (b[x]-a[x])
Ay = (b[y]-a[y])
Bx = (c[x]-a[x])
By = (c[y]-a[y])
дает
AxBy - AyBx = (b[x]-a[x])*(c[y]-a[y])-(b[y]-a[y])*(c[x]-a[x])
, который является скаляром, знак этого скаляра скажет вам, находится ли точка c слева или справа от вектора ab
В качестве альтернативы вы можете посмотреть переполнение стека или gamedev