Add resolution aware version of CameraIntrinsic helper class
This commit is contained in:
@@ -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 };
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user