углы не проблема. Векторы известны — известно направление и расстояние. т.е. можно определить угол между векторами, ведь они все начинаются в одной условной точке (0,0) относительно наблюдателя.
Может. Можно вычислить множество всех возможных комбинаций и в итоге получить нужное, но цена этого алгоритма даже не O в степени N, а что-то похлеще. Есть подобные алгоритмы в математике, но вспомнить не могу…