我正在编写软件来确定 3D 相机的可视位置。我目前已经实现了一些部件,以根据相机和镜头的内在特性找到最小和最大的视野长度。
我现在需要弄清楚,如果相机放置在 X、Y、Z 并指向一个方向(两个角度,一个围绕水平轴,一个围绕垂直轴)相机可以看到的边界是什么(知道视角)。我想要的输出是 4 个 3D 位置,形成一个矩形,显示最小位置、左上角、右上角、左下角和右下角。最大位置也需要相同。
任何人都可以帮助几何找到这些点吗?
我有一些代码:
QVector3D CameraPerspective::GetUnitVectorOfCameraAngle()
{
QVector3D inital(0, 1, 0);
QMatrix4x4 rotation_matrix;
// rotate around z axis
rotation_matrix.rotate(_angle_around_z, 0, 0, 1);
//rotate around y axis
rotation_matrix.rotate(_angle_around_x, 1, 0, 0);
inital = inital * rotation_matrix;
return inital;
}
Coordinate CameraPerspective::GetFurthestPointInFront()
{
QVector3D camera_angle_vector = GetUnitVectorOfCameraAngle();
camera_angle_vector.normalize();
QVector3D furthest_point_infront = camera_angle_vector * _camera_information._maximum_distance_mm;
return Coordinate(furthest_point_infront + _position_of_this);
}
谢谢