Добрый день
Есть массив векторов (x, y, z). напр QPoint3D. Длина каждого вектора = 1. Необходимо разбить этот массив на подмассивы (группы) так чтобы угол между любыми 2-мя векторами в каждой группе не превышал заданный. Например группы могут выглядеть так
{ 0, 1, 10, 15 ... } // первая группв (индексы элементов в исходном массиве)
{ 2, 5. 9, 24... } // вторая группв
и.т.д
Элемент может принадлежать только 1 группе. Группа может содержать от 1 до N индексов (где N - размер исходного массива). Угол между 2-мя векторами единичной длины считается так
C++ (Qt)
inline float Angle( const Point3D & p0. const Point3D & p1 )
{
return acos(p0.x * p1.x + p0.y * p1.y + p0.z * p1.z);
}
Как разбить на минимальное число групп?
Спасибо