added for source

This commit is contained in:
2026-02-08 02:43:10 +03:00
parent 9c4e2a3319
commit d231139b83
2 changed files with 173 additions and 0 deletions

View File

@@ -22,4 +22,54 @@ namespace omath::source_engine
[[nodiscard]]
Mat4X4 calc_perspective_projection_matrix(float field_of_view, float aspect_ratio, float near, float far) noexcept;
template<class FloatingType>
requires std::is_floating_point_v<FloatingType>
[[nodiscard]]
constexpr FloatingType hammer_units_to_centimeters(const FloatingType& hammer_units)
{
constexpr auto centimeter_in_hammer_unit = static_cast<FloatingType>(2.54);
return hammer_units * centimeter_in_hammer_unit;
}
template<class FloatingType>
requires std::is_floating_point_v<FloatingType>
[[nodiscard]]
constexpr FloatingType hammer_units_to_meters(const FloatingType& hammer_units)
{
return hammer_units_to_centimeters(hammer_units) / static_cast<FloatingType>(100);
}
template<class FloatingType>
requires std::is_floating_point_v<FloatingType>
[[nodiscard]]
constexpr FloatingType hammer_units_to_kilometers(const FloatingType& hammer_units)
{
return hammer_units_to_meters(hammer_units) / static_cast<FloatingType>(1000);
}
template<class FloatingType>
requires std::is_floating_point_v<FloatingType>
[[nodiscard]]
constexpr FloatingType centimeters_to_hammer_units(const FloatingType& centimeters)
{
constexpr auto centimeter_in_hammer_unit = static_cast<FloatingType>(2.54);
return centimeters / centimeter_in_hammer_unit;
}
template<class FloatingType>
requires std::is_floating_point_v<FloatingType>
[[nodiscard]]
constexpr FloatingType meters_to_hammer_units(const FloatingType& meters)
{
return centimeters_to_hammer_units(meters * static_cast<FloatingType>(100));
}
template<class FloatingType>
requires std::is_floating_point_v<FloatingType>
[[nodiscard]]
constexpr FloatingType kilometers_to_hammer_units(const FloatingType& kilometers)
{
return meters_to_hammer_units(kilometers * static_cast<FloatingType>(1000));
}
} // namespace omath::source_engine