Некоторые преобразования в Open Inventor(Coin3D)
Я новичок в Open Inventor(Coin3D) и имею следующую проблему:
У меня есть SoSelection с корневым узлом (также SoSeparator). А корневой узел содержит несколько узлов SoSeparator. Каждый из этих узлов SoSeparator содержит узел SoTransform и узел SoCube.
Когда я выбираю один узел куба, я хочу, чтобы все остальные кубы на определенном расстоянии от выбранного куба расположились вокруг окружности выбранного куба. (Более того, все кубы должны быть на плоскости, чем). Дополнительная информация: Мои кубы всегда ориентированы в направлении камеры с помощью (cubeTransform_-> вращение.connectFrom(&camera_-> ориентация)
Предполагая, что выбранный куб является центром круга, как мне перевести другие кубики в круг на плоскости (перпендикулярно вектору между выбранным кубом и камерой)? Особенно, как мне найти координаты на равнине, на которой должна быть окружность, которая имеет определенное расстояние от Оси (от центрального куба до камеры).
То, что я уже сделал, - это поиск всех кубов на определенном расстоянии, как только выбран один куб. В результате у меня уже есть необходимые разделители (которые содержат соответствующие SoTransforms и SoCubes) в SoPathList. Теперь я хочу расположить кубы, изменив соответствующие значения перевода SoTransform->.
С уважением Марк