Предполагая, что:
- Вы можете найти трехмерные координаты по центру камеры
- Вы знаете координаты камеры «начала координат» относительно рычага
- Вы знаете, на сколько градусов система координат камеры поворачивается относительно заданной оси в системе координат рычага.
- Вам необходимо получить координаты, ориентированные на руку.
Вам просто нужно применить жесткое преобразование , известное как roto-translation .
Чтобы упростить следующий пример кода, мы также предположим, что оси Z обеих систем координат параллельны друг другу, перпендикулярны «таблице» и имеют одинаковое направление. Таким образом, единственное возможное вращение происходит вокруг оси Z.
x, y, z = get_3d(x, y)
x -= camera_origin_x_in_arm_coord_system
y -= camera_origin_y_in_arm_coord_system
z -= camera_origin_z_in_arm_coord_system
arm_x = x*cos(theta) - y*sin(theta)
arm_y = x*sin(theta) + y*cos(theta)
arm_z = z
Для более сложных поворотов, пожалуйста, обратитесь к ответам на этот вопрос .