Add resolution aware version of CameraIntrinsic helper class

This commit is contained in:
2021-05-31 16:47:22 +02:00
parent ec18bcdb98
commit 8d80e744fa

View File

@@ -113,4 +113,45 @@ namespace openVulkanoCpp::Math
return Scale(scale);
}
};
class CameraIntrinsicWithResolution : public CameraIntrinsic
{
Math::Vector2i resolution;
public:
CameraIntrinsicWithResolution(const CameraIntrinsic& intrinsic, const Math::Vector2i resolution)
: CameraIntrinsic(intrinsic), resolution(resolution)
{}
CameraIntrinsicWithResolution(const Math::Matrix3f& camMat, const Math::Vector2i resolution)
: CameraIntrinsic(camMat), resolution(resolution)
{}
CameraIntrinsicWithResolution(const Math::Matrix3f_SIMD& camMat, const Math::Vector2i resolution)
: CameraIntrinsic(camMat), resolution(resolution)
{}
CameraIntrinsicWithResolution(Math::Vector2i resolution, float fx, float fy, float cx, float cy, float skew = 0)
: CameraIntrinsic(fx, fy, cx, cy, skew), resolution(resolution)
{}
[[nodiscard]] float GetFovX() const
{
return CameraIntrinsic::GetFovX(static_cast<float>(resolution.x));
}
[[nodiscard]] float GetFovY() const
{
return CameraIntrinsic::GetFovY(static_cast<float>(resolution.y));
}
[[nodiscard]] Math::Vector2i GetResolution() const
{
return resolution;
}
[[nodiscard]] CameraIntrinsicWithResolution GetForResolution(const Math::Vector2i newResolution) const
{
return { Scale(Math::Vector2f(newResolution) / Math::Vector2f(resolution)), resolution };
}
};
}