Compare commits
21 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e8f40218dd | |||
| 50054ca937 | |||
| 63220c0be7 | |||
| 3b6d19782c | |||
| 2d58330508 | |||
| abf57a55ea | |||
| 463532ba81 | |||
| d74c66990a | |||
| 7f1bc51905 | |||
| 71127f1f12 | |||
| 89041e20ae | |||
| a54dd4b52a | |||
| d7e497b617 | |||
| 80938cd913 | |||
| 830505dbe5 | |||
| 75565ecf2d | |||
| 9a7a4c7fff | |||
| c0f0bb3c2e | |||
| a097c0a2f4 | |||
| 20ae2b4dd1 | |||
| 115b5a3471 |
BIN
.github/images/logos/omath_logo_macro.png
vendored
Normal file
|
After Width: | Height: | Size: 117 KiB |
BIN
.github/images/logos/omath_logo_mega.png
vendored
Normal file
|
After Width: | Height: | Size: 454 KiB |
BIN
.github/images/logos/omath_logo_micro.png
vendored
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
.github/images/logos/omath_logo_nano.png
vendored
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
.github/images/showcase/apex.png
vendored
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
.github/images/showcase/cod_bo2.png
vendored
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
BIN
.github/images/showcase/cs2.jpeg
vendored
Normal file
|
After Width: | Height: | Size: 644 KiB |
BIN
.github/psd/omath.psd
vendored
Normal file
1
.idea/vcs.xml
generated
@@ -3,5 +3,6 @@
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
<mapping directory="$PROJECT_DIR$/extlibs/googletest" vcs="Git" />
|
||||
<mapping directory="$PROJECT_DIR$/extlibs/vcpkg" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -1,6 +1,6 @@
|
||||
cmake_minimum_required(VERSION 3.26)
|
||||
|
||||
project(omath VERSION 3.3.0 LANGUAGES CXX)
|
||||
project(omath VERSION 3.5.0 LANGUAGES CXX)
|
||||
|
||||
include(CMakePackageConfigHelpers)
|
||||
|
||||
@@ -39,6 +39,8 @@ endif ()
|
||||
|
||||
add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
|
||||
|
||||
target_compile_definitions(${PROJECT_NAME} PUBLIC OMATH_VERSION="${PROJECT_VERSION}")
|
||||
|
||||
if (OMATH_IMGUI_INTEGRATION)
|
||||
target_compile_definitions(${PROJECT_NAME} PUBLIC OMATH_IMGUI_INTEGRATION)
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
Thanks to everyone who made this possible, including:
|
||||
|
||||
- Saikari aka luadebug for VCPKG port.
|
||||
- Saikari aka luadebug for VCPKG port and awesome new initial logo design.
|
||||
|
||||
And a big hand to everyone else who has contributed over the past!
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<div align = center>
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
@@ -83,11 +83,11 @@ for (auto ent: apex_sdk::EntityList::GetAllEntities())
|
||||
|
||||
With `omath/projection` module you can achieve simple ESP hack for powered by Source/Unreal/Unity engine games, like [Apex Legends](https://store.steampowered.com/app/1172470/Apex_Legends/).
|
||||
|
||||

|
||||

|
||||
Or for InfinityWard Engine based games. Like Call of Duty Black Ops 2!
|
||||

|
||||

|
||||
Or create simple trigger bot with embeded traceline from omath::collision::LineTrace
|
||||

|
||||

|
||||
Or even advanced projectile aimbot
|
||||
[Watch Video](https://youtu.be/lM_NJ1yCunw?si=5E87OrQMeypxSJ3E)
|
||||
</details>
|
||||
|
||||
@@ -3,10 +3,9 @@
|
||||
//
|
||||
|
||||
#pragma once
|
||||
#include <array>
|
||||
#include "omath/linear_algebra/vector3.hpp"
|
||||
#include "omath/triangle.hpp"
|
||||
#include "omath/vector3.hpp"
|
||||
|
||||
#include <array>
|
||||
|
||||
namespace omath::primitives
|
||||
{
|
||||
|
||||
16
include/omath/3d_primitives/plane.hpp
Normal file
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// Created by Vlad on 8/28/2025.
|
||||
//
|
||||
|
||||
#pragma once
|
||||
#include "omath/linear_algebra/vector3.hpp"
|
||||
#include "omath/triangle.hpp"
|
||||
#include <array>
|
||||
|
||||
namespace omath::primitives
|
||||
{
|
||||
[[nodiscard]]
|
||||
std::array<Triangle<Vector3<float>>, 2> create_plane(const Vector3<float>& vertex_a,
|
||||
const Vector3<float>& vertex_b,
|
||||
const Vector3<float>& direction, float size) noexcept;
|
||||
}
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "omath/angles.hpp"
|
||||
#include <algorithm>
|
||||
#include <utility>
|
||||
#include <format>
|
||||
|
||||
namespace omath
|
||||
{
|
||||
@@ -149,3 +150,17 @@ namespace omath
|
||||
}
|
||||
};
|
||||
} // namespace omath
|
||||
template<class Type, Type min, Type max, omath::AngleFlags flags>
|
||||
struct std::formatter<omath::Angle<Type, min, max, flags>> // NOLINT(*-dcl58-cpp)
|
||||
{
|
||||
[[nodiscard]]
|
||||
static constexpr auto parse(std::format_parse_context& ctx)
|
||||
{
|
||||
return ctx.begin();
|
||||
}
|
||||
[[nodiscard]]
|
||||
static auto format(const omath::Angle<Type, min, max, flags>& deg, std::format_context& ctx)
|
||||
{
|
||||
return std::format_to(ctx.out(), "{}deg", deg.as_degrees());
|
||||
}
|
||||
};
|
||||
@@ -3,8 +3,8 @@
|
||||
//
|
||||
#pragma once
|
||||
|
||||
#include "omath/linear_algebra/vector3.hpp"
|
||||
#include "omath/triangle.hpp"
|
||||
#include "omath/vector3.hpp"
|
||||
|
||||
namespace omath::collision
|
||||
{
|
||||
|
||||
@@ -4,8 +4,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "omath/vector3.hpp"
|
||||
#include "omath/vector4.hpp"
|
||||
#include "linear_algebra/vector4.hpp"
|
||||
#include <cstdint>
|
||||
|
||||
namespace omath
|
||||
@@ -167,3 +166,21 @@ namespace omath
|
||||
#endif
|
||||
};
|
||||
} // namespace omath
|
||||
template<>
|
||||
struct std::formatter<omath::Color> // NOLINT(*-dcl58-cpp)
|
||||
{
|
||||
[[nodiscard]]
|
||||
static constexpr auto parse(std::format_parse_context& ctx)
|
||||
{
|
||||
return ctx.begin();
|
||||
}
|
||||
[[nodiscard]]
|
||||
static auto format(const omath::Color& col, std::format_context& ctx)
|
||||
{
|
||||
return std::format_to(ctx.out(), "[r:{}, g:{}, b:{}, a:{}]",
|
||||
static_cast<int>(col.x * 255.f),
|
||||
static_cast<int>(col.y * 255.f),
|
||||
static_cast<int>(col.z * 255.f),
|
||||
static_cast<int>(col.w * 255.f));
|
||||
}
|
||||
};
|
||||
@@ -3,9 +3,9 @@
|
||||
//
|
||||
|
||||
#pragma once
|
||||
#include "omath/linear_algebra/mat.hpp"
|
||||
#include "omath/linear_algebra/vector3.hpp"
|
||||
#include <omath/angle.hpp>
|
||||
#include <omath/mat.hpp>
|
||||
#include <omath/vector3.hpp>
|
||||
#include <omath/view_angles.hpp>
|
||||
|
||||
namespace omath::iw_engine
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
//
|
||||
#pragma once
|
||||
|
||||
#include "omath/linear_algebra/mat.hpp"
|
||||
#include "omath/linear_algebra/vector3.hpp"
|
||||
#include <omath/angle.hpp>
|
||||
#include <omath/mat.hpp>
|
||||
#include <omath/vector3.hpp>
|
||||
#include <omath/view_angles.hpp>
|
||||
|
||||
namespace omath::opengl_engine
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
//
|
||||
#pragma once
|
||||
|
||||
#include "omath/linear_algebra/mat.hpp"
|
||||
#include "omath/linear_algebra/vector3.hpp"
|
||||
#include <omath/angle.hpp>
|
||||
#include <omath/mat.hpp>
|
||||
#include <omath/vector3.hpp>
|
||||
#include <omath/view_angles.hpp>
|
||||
|
||||
namespace omath::source_engine
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "omath/linear_algebra/mat.hpp"
|
||||
#include "omath/linear_algebra/vector3.hpp"
|
||||
#include <omath/angle.hpp>
|
||||
#include <omath/mat.hpp>
|
||||
#include <omath/vector3.hpp>
|
||||
#include <omath/view_angles.hpp>
|
||||
|
||||
namespace omath::unity_engine
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "omath/linear_algebra/mat.hpp"
|
||||
#include "omath/linear_algebra/vector3.hpp"
|
||||
#include <omath/angle.hpp>
|
||||
#include <omath/mat.hpp>
|
||||
#include <omath/vector3.hpp>
|
||||
#include <omath/view_angles.hpp>
|
||||
|
||||
namespace omath::unreal_engine
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// Created by vlad on 9/29/2024.
|
||||
//
|
||||
#pragma once
|
||||
#include "omath/vector3.hpp"
|
||||
#include "vector3.hpp"
|
||||
#include <algorithm>
|
||||
#include <array>
|
||||
#include <iomanip>
|
||||
@@ -479,4 +479,49 @@ namespace omath
|
||||
{0.f, 0.f, -(far + near) / (far - near), -(2.f * near * far) / (far - near)},
|
||||
{0.f, 0.f, -1.f, 0.f}};
|
||||
}
|
||||
template<class Type = float, MatStoreType St = MatStoreType::ROW_MAJOR>
|
||||
[[nodiscard]]
|
||||
Mat<4, 4, Type, St> mat_ortho_left_handed(const Type left, const Type right,
|
||||
const Type bottom, const Type top,
|
||||
const Type near, const Type far) noexcept
|
||||
{
|
||||
return
|
||||
{
|
||||
{ static_cast<Type>(2) / (right - left), 0.f, 0.f, -(right + left) / (right - left)},
|
||||
{ 0.f, static_cast<Type>(2) / (top - bottom), 0.f, -(top + bottom) / (top - bottom)},
|
||||
{ 0.f, 0.f, static_cast<Type>(2) / (far - near), -(far + near) / (far - near) },
|
||||
{ 0.f, 0.f, 0.f, 1.f }
|
||||
};
|
||||
}
|
||||
template<class Type = float, MatStoreType St = MatStoreType::ROW_MAJOR>
|
||||
[[nodiscard]]
|
||||
Mat<4, 4, Type, St> mat_ortho_right_handed(const Type left, const Type right,
|
||||
const Type bottom, const Type top,
|
||||
const Type near, const Type far) noexcept
|
||||
{
|
||||
return
|
||||
{
|
||||
{ static_cast<Type>(2) / (right - left), 0.f, 0.f, -(right + left) / (right - left)},
|
||||
{ 0.f, static_cast<Type>(2) / (top - bottom), 0.f, -(top + bottom) / (top - bottom)},
|
||||
{ 0.f, 0.f, -static_cast<Type>(2) / (far - near), -(far + near) / (far - near) },
|
||||
{ 0.f, 0.f, 0.f, 1.f }
|
||||
};
|
||||
}
|
||||
|
||||
} // namespace omath
|
||||
|
||||
template<size_t Rows, size_t Columns, class Type, omath::MatStoreType StoreType>
|
||||
struct std::formatter<omath::Mat<Rows, Columns, Type, StoreType>> // NOLINT(*-dcl58-cpp)
|
||||
{
|
||||
using MatType = omath::Mat<Rows, Columns, Type, StoreType>;
|
||||
[[nodiscard]]
|
||||
static constexpr auto parse(std::format_parse_context& ctx)
|
||||
{
|
||||
return ctx.begin();
|
||||
}
|
||||
[[nodiscard]]
|
||||
static auto format(const MatType& mat, std::format_context& ctx)
|
||||
{
|
||||
return std::format_to(ctx.out(), "{}", mat.to_string());
|
||||
}
|
||||
};
|
||||
@@ -1,7 +1,22 @@
|
||||
#pragma once
|
||||
|
||||
#ifdef OMATH_ENABLE_LEGACY
|
||||
/*
|
||||
THIS CODE IS DEPRECATED NEVER EVER USE Matrix CLASS
|
||||
AND VERY SLOW USE Mat INSTEAD!!!!!!!!!!!
|
||||
⠛⠛⣿⣿⣿⣿⣿⡷⢶⣦⣶⣶⣤⣤⣤⣀⠀⠀⠀
|
||||
⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⠀
|
||||
⠀⠀⠀⠉⠉⠉⠙⠻⣿⣿⠿⠿⠛⠛⠛⠻⣿⣿⣇⠀
|
||||
⠀⠀⢤⣀⣀⣀⠀⠀⢸⣷⡄⠀⣁⣀⣤⣴⣿⣿⣿⣆
|
||||
⠀⠀⠀⠀⠹⠏⠀⠀⠀⣿⣧⠀⠹⣿⣿⣿⣿⣿⡿⣿
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠿⠇⢀⣼⣿⣿⠛⢯⡿⡟
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠦⠴⢿⢿⣿⡿⠷⠀⣿⠀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠙⣷⣶⣶⣤⣤⣤⣤⣤⣶⣦⠃⠀
|
||||
⠀⠀⠀⠀⠀⠀⠀⢐⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀
|
||||
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠻⢿⣿⣿⣿⣿⠟⠁
|
||||
*/
|
||||
|
||||
#ifdef OMATH_ENABLE_LEGACY
|
||||
#include "omath/vector3.hpp"
|
||||
#include <initializer_list>
|
||||
#include <memory>
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
#pragma once
|
||||
#include <cmath>
|
||||
#include <format>
|
||||
#include <tuple>
|
||||
|
||||
#ifdef OMATH_IMGUI_INTEGRATION
|
||||
@@ -218,7 +219,6 @@ namespace omath
|
||||
{
|
||||
return std::make_tuple(x, y);
|
||||
}
|
||||
|
||||
#ifdef OMATH_IMGUI_INTEGRATION
|
||||
[[nodiscard]]
|
||||
ImVec2 to_im_vec2() const noexcept
|
||||
@@ -233,3 +233,18 @@ namespace omath
|
||||
#endif
|
||||
};
|
||||
} // namespace omath
|
||||
|
||||
template<class Type>
|
||||
struct std::formatter<omath::Vector2<Type>> // NOLINT(*-dcl58-cpp)
|
||||
{
|
||||
[[nodiscard]]
|
||||
static constexpr auto parse(std::format_parse_context& ctx)
|
||||
{
|
||||
return ctx.begin();
|
||||
}
|
||||
[[nodiscard]]
|
||||
static auto format(const omath::Vector2<Type>& vec, std::format_context& ctx)
|
||||
{
|
||||
return std::format_to(ctx.out(), "[{}, {}]", vec.x, vec.y);
|
||||
}
|
||||
};
|
||||
@@ -5,7 +5,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "omath/angle.hpp"
|
||||
#include "omath/vector2.hpp"
|
||||
#include "omath/linear_algebra/vector2.hpp"
|
||||
#include <cstdint>
|
||||
#include <expected>
|
||||
#include <functional>
|
||||
@@ -159,9 +159,9 @@ namespace omath
|
||||
return Vector2<Type>::length();
|
||||
}
|
||||
|
||||
[[nodiscard]] Type distance_to(const Vector3& vOther) const noexcept
|
||||
[[nodiscard]] Type distance_to(const Vector3& v_other) const noexcept
|
||||
{
|
||||
return (*this - vOther).length();
|
||||
return (*this - v_other).length();
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -279,21 +279,33 @@ namespace omath
|
||||
}
|
||||
};
|
||||
} // namespace omath
|
||||
// ReSharper disable once CppRedundantNamespaceDefinition
|
||||
namespace std
|
||||
|
||||
template<> struct std::hash<omath::Vector3<float>>
|
||||
{
|
||||
template<> struct hash<omath::Vector3<float>>
|
||||
std::size_t operator()(const omath::Vector3<float>& vec) const noexcept
|
||||
{
|
||||
std::size_t operator()(const omath::Vector3<float>& vec) const noexcept
|
||||
{
|
||||
std::size_t hash = 0;
|
||||
constexpr std::hash<float> hasher;
|
||||
std::size_t hash = 0;
|
||||
constexpr std::hash<float> hasher;
|
||||
|
||||
hash ^= hasher(vec.x) + 0x9e3779b9 + (hash << 6) + (hash >> 2);
|
||||
hash ^= hasher(vec.y) + 0x9e3779b9 + (hash << 6) + (hash >> 2);
|
||||
hash ^= hasher(vec.z) + 0x9e3779b9 + (hash << 6) + (hash >> 2);
|
||||
hash ^= hasher(vec.x) + 0x9e3779b9 + (hash << 6) + (hash >> 2);
|
||||
hash ^= hasher(vec.y) + 0x9e3779b9 + (hash << 6) + (hash >> 2);
|
||||
hash ^= hasher(vec.z) + 0x9e3779b9 + (hash << 6) + (hash >> 2);
|
||||
|
||||
return hash;
|
||||
}
|
||||
};
|
||||
} // namespace std
|
||||
return hash;
|
||||
}
|
||||
};
|
||||
|
||||
template<class Type>
|
||||
struct std::formatter<omath::Vector3<Type>> // NOLINT(*-dcl58-cpp)
|
||||
{
|
||||
[[nodiscard]]
|
||||
static constexpr auto parse(std::format_parse_context& ctx)
|
||||
{
|
||||
return ctx.begin();
|
||||
}
|
||||
[[nodiscard]]
|
||||
static auto format(const omath::Vector3<Type>& vec, std::format_context& ctx)
|
||||
{
|
||||
return std::format_to(ctx.out(), "[{}, {}, {}]", vec.x, vec.y, vec.z);
|
||||
}
|
||||
};
|
||||
@@ -4,7 +4,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <algorithm>
|
||||
#include <omath/vector3.hpp>
|
||||
#include "omath/linear_algebra/vector3.hpp"
|
||||
|
||||
namespace omath
|
||||
{
|
||||
@@ -201,3 +201,18 @@ namespace omath
|
||||
#endif
|
||||
};
|
||||
} // namespace omath
|
||||
|
||||
template<class Type>
|
||||
struct std::formatter<omath::Vector4<Type>> // NOLINT(*-dcl58-cpp)
|
||||
{
|
||||
[[nodiscard]]
|
||||
static constexpr auto parse(std::format_parse_context& ctx)
|
||||
{
|
||||
return ctx.begin();
|
||||
}
|
||||
[[nodiscard]]
|
||||
static auto format(const omath::Vector4<Type>& vec, std::format_context& ctx)
|
||||
{
|
||||
return std::format_to(ctx.out(), "[{}, {}, {}, {}]", vec.x, vec.y, vec.z, vec.w);
|
||||
}
|
||||
};
|
||||
@@ -10,13 +10,13 @@
|
||||
#include "omath/angle.hpp"
|
||||
|
||||
// Vector classes (in dependency order)
|
||||
#include "omath/vector2.hpp"
|
||||
#include "omath/vector3.hpp"
|
||||
#include "omath/vector4.hpp"
|
||||
#include "omath/linear_algebra/vector2.hpp"
|
||||
#include "omath/linear_algebra/vector4.hpp"
|
||||
#include "omath/linear_algebra/vector3.hpp"
|
||||
|
||||
// Matrix classes
|
||||
#include "omath/mat.hpp"
|
||||
#include "omath/matrix.hpp"
|
||||
#include "linear_algebra/matrix.hpp"
|
||||
#include "omath/linear_algebra/mat.hpp"
|
||||
|
||||
// Color functionality
|
||||
#include "omath/color.hpp"
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
//
|
||||
|
||||
#pragma once
|
||||
#include "omath/linear_algebra/vector3.hpp"
|
||||
#include "omath/pathfinding/navigation_mesh.hpp"
|
||||
#include "omath/vector3.hpp"
|
||||
#include <vector>
|
||||
|
||||
namespace omath::pathfinding
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "omath/vector3.hpp"
|
||||
#include "omath/linear_algebra/vector3.hpp"
|
||||
#include <expected>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
// Created by Vlad on 2/23/2025.
|
||||
//
|
||||
#pragma once
|
||||
#include "omath/linear_algebra/vector3.hpp"
|
||||
#include "omath/projectile_prediction/projectile.hpp"
|
||||
#include "omath/projectile_prediction/target.hpp"
|
||||
#include "omath/vector3.hpp"
|
||||
|
||||
namespace omath::projectile_prediction
|
||||
{
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "omath/linear_algebra/vector3.hpp"
|
||||
#include "omath/engines/source_engine/traits/pred_engine_trait.hpp"
|
||||
#include "omath/projectile_prediction/proj_pred_engine.hpp"
|
||||
#include "omath/projectile_prediction/projectile.hpp"
|
||||
#include "omath/projectile_prediction/target.hpp"
|
||||
#include "omath/vector3.hpp"
|
||||
#include <optional>
|
||||
|
||||
namespace omath::projectile_prediction
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
//
|
||||
|
||||
#pragma once
|
||||
#include "omath/vector3.hpp"
|
||||
#include "omath/linear_algebra/vector3.hpp"
|
||||
|
||||
namespace omath::projectile_prediction
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
//
|
||||
|
||||
#pragma once
|
||||
#include "omath/vector3.hpp"
|
||||
#include "omath/linear_algebra/vector3.hpp"
|
||||
|
||||
namespace omath::projectile_prediction
|
||||
{
|
||||
|
||||
@@ -5,10 +5,10 @@
|
||||
#pragma once
|
||||
|
||||
#include "omath/projection/error_codes.hpp"
|
||||
#include "omath/linear_algebra/mat.hpp"
|
||||
#include "omath/linear_algebra/vector3.hpp"
|
||||
#include <expected>
|
||||
#include <omath/angle.hpp>
|
||||
#include <omath/mat.hpp>
|
||||
#include <omath/vector3.hpp>
|
||||
#include <type_traits>
|
||||
|
||||
namespace omath::projection
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// Created by Orange on 11/13/2024.
|
||||
//
|
||||
#pragma once
|
||||
#include "omath/vector3.hpp"
|
||||
#include "linear_algebra/vector3.hpp"
|
||||
|
||||
namespace omath
|
||||
{
|
||||
|
||||
19
source/3d_primitives/plane.cpp
Normal file
@@ -0,0 +1,19 @@
|
||||
//
|
||||
// Created by Vlad on 8/28/2025.
|
||||
//
|
||||
#include "omath/3d_primitives/plane.hpp"
|
||||
|
||||
namespace omath::primitives
|
||||
{
|
||||
std::array<Triangle<Vector3<float>>, 2> create_plane(const Vector3<float>& vertex_a,
|
||||
const Vector3<float>& vertex_b,
|
||||
const Vector3<float>& direction, const float size) noexcept
|
||||
{
|
||||
const auto second_vertex_a = vertex_a + direction * size;
|
||||
return std::array
|
||||
{
|
||||
Triangle{second_vertex_a, vertex_a, vertex_b},
|
||||
Triangle{second_vertex_a, vertex_b + direction * size, vertex_b}
|
||||
};
|
||||
}
|
||||
} // namespace omath::primitives
|
||||
@@ -2,10 +2,10 @@
|
||||
// Revised unit‑test suite for LineTracer (segment‑based Möller–Trumbore)
|
||||
// Pure ASCII: avoids non‑standard characters that MSVC rejects.
|
||||
//
|
||||
#include "gtest/gtest.h"
|
||||
#include "omath/linear_algebra/vector3.hpp"
|
||||
#include "omath/collision/line_tracer.hpp"
|
||||
#include "omath/triangle.hpp"
|
||||
#include "omath/vector3.hpp"
|
||||
#include "gtest/gtest.h"
|
||||
#include <cmath>
|
||||
|
||||
using namespace omath;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// UnitTestMat.cpp
|
||||
#include "omath/linear_algebra/mat.hpp"
|
||||
#include "omath/linear_algebra/vector3.hpp"
|
||||
#include <gtest/gtest.h>
|
||||
#include "omath/mat.hpp"
|
||||
#include "omath/vector3.hpp"
|
||||
|
||||
using namespace omath;
|
||||
|
||||
@@ -125,7 +125,7 @@ TEST_F(UnitTestMat, Clear)
|
||||
|
||||
TEST_F(UnitTestMat, ToString)
|
||||
{
|
||||
const std::string str = m2.to_string();
|
||||
const std::string str = std::format("{}", m2);
|
||||
EXPECT_FALSE(str.empty());
|
||||
EXPECT_EQ(str, "[[ 1.000, 2.000]\n [ 3.000, 4.000]]");
|
||||
}
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
//
|
||||
// Created by Orange on 1/6/2025.
|
||||
//
|
||||
#include "omath/triangle.hpp"
|
||||
#include "omath/linear_algebra/vector3.hpp"
|
||||
#include <cmath> // For std::sqrt, std::isinf, std::isnan
|
||||
#include <gtest/gtest.h>
|
||||
#include <omath/vector3.hpp>
|
||||
#include "omath/triangle.hpp"
|
||||
|
||||
|
||||
using namespace omath;
|
||||
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
// Created by Vlad on 02.09.2024.
|
||||
//
|
||||
|
||||
#include <omath/linear_algebra/vector2.hpp>
|
||||
#include <cfloat> // For FLT_MAX and FLT_MIN
|
||||
#include <cmath> // For std::isinf and std::isnan
|
||||
#include <gtest/gtest.h>
|
||||
#include <omath/vector2.hpp>
|
||||
|
||||
using namespace omath;
|
||||
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
// Created by Vlad on 01.09.2024.
|
||||
//
|
||||
|
||||
#include <omath/linear_algebra/vector3.hpp>
|
||||
#include <cfloat> // For FLT_MAX, FLT_MIN
|
||||
#include <cmath>
|
||||
#include <gtest/gtest.h>
|
||||
#include <limits> // For std::numeric_limits
|
||||
#include <omath/vector3.hpp>
|
||||
|
||||
using namespace omath;
|
||||
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
// Vector4Test.cpp
|
||||
//
|
||||
|
||||
#include <omath/linear_algebra/vector4.hpp>
|
||||
#include <gtest/gtest.h>
|
||||
#include <limits> // For std::numeric_limits
|
||||
#include <omath/vector4.hpp>
|
||||
|
||||
using namespace omath;
|
||||
|
||||
|
||||