Добрый деньЕсть массив векторов (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);} Как разбить на минимальное число групп?Спасибо
|