Вы решаете на минимальные расстояния? В networkx есть направленные ребра.
Или вы можете просто изучить два узла ребра, используя их координаты (x, y), и определить оттуда ориентацию.
1.) Arctan2
Вы можете создать относительную систему координат, где первая точка - это начало координат
P0(x,y)
P1(x,y)
relative (subtract P0)
P0_rel: (0, 0)
P1_rel: P1 - P0
Теперь есть несколько методов определения ориентации. Например, вы можете посмотреть на сектор P1_rel
, используя угол функции arctan2
2.) Угол между векторами со знаком
Вы рассматриваете P0
и P1
как векторы и вычисляете подписанный угол между ними. Результат, например, положительный = по часовой стрелке, отрицательный = против часовой стрелки или наоборот.
Угол между двумя 3D-векторами с одинаковым началом в одной плоскости
https://math.stackexchange.com/questions/2140504/how-to-calculate-signed-angle-between-two-vectors-in-3d
В Интернете есть много фрагментов кода, и не все они верны и хорошо справляются со специальными случаями.