added new param

This commit is contained in:
2024-06-09 21:19:10 +03:00
parent 07360f4e91
commit dd77a5ef8f
3 changed files with 10 additions and 6 deletions

View File

@@ -15,7 +15,8 @@ namespace uml::prediction
class Engine class Engine
{ {
public: public:
explicit Engine(float gravityConstant, float simulationTimeStep, float maximumSimulationTime); explicit Engine(float gravityConstant, float simulationTimeStep,
float maximumSimulationTime, float distanceTolerance);
[[nodiscard]] [[nodiscard]]
std::optional<Vector3> MaybeCalculateAimPoint(const Projectile& projectile, const Target& target) const; std::optional<Vector3> MaybeCalculateAimPoint(const Projectile& projectile, const Target& target) const;
@@ -24,6 +25,7 @@ namespace uml::prediction
const float m_gravityConstant; const float m_gravityConstant;
const float m_simulationTimeStep; const float m_simulationTimeStep;
const float m_maximumSimulationTime; const float m_maximumSimulationTime;
const float m_distanceTolerance;
[[nodiscard]] [[nodiscard]]
std::optional<float> MaybeCalculateProjectileLaunchPitchAngle(const Projectile& projectile, std::optional<float> MaybeCalculateProjectileLaunchPitchAngle(const Projectile& projectile,

View File

@@ -10,10 +10,12 @@
namespace uml::prediction namespace uml::prediction
{ {
Engine::Engine(const float gravityConstant, const float simulationTimeStep, const float maximumSimulationTime) Engine::Engine(const float gravityConstant, const float simulationTimeStep,
const float maximumSimulationTime, float distanceTolerance)
: m_gravityConstant(gravityConstant), : m_gravityConstant(gravityConstant),
m_simulationTimeStep(simulationTimeStep), m_simulationTimeStep(simulationTimeStep),
m_maximumSimulationTime(maximumSimulationTime) m_maximumSimulationTime(maximumSimulationTime),
m_distanceTolerance(distanceTolerance)
{ {
} }
@@ -66,6 +68,6 @@ namespace uml::prediction
const auto yaw = projectile.m_origin.ViewAngleTo(targetPosition).y; const auto yaw = projectile.m_origin.ViewAngleTo(targetPosition).y;
const auto projectilePosition = projectile.PredictPosition(pitch, yaw, time, m_gravityConstant); const auto projectilePosition = projectile.PredictPosition(pitch, yaw, time, m_gravityConstant);
return projectilePosition.DistTo(targetPosition) <= 10.f; return projectilePosition.DistTo(targetPosition) <= m_distanceTolerance;
} }
} }

View File

@@ -4,8 +4,8 @@
TEST(x,x) TEST(x,x)
{ {
uml::prediction::Target target{.m_origin = {100, 0, 60}, .m_velocity = {0, 0, 0}, .m_isAirborne = false}; uml::prediction::Target target{.m_origin = {100, 0, 60}, .m_velocity = {0, 0, 0}, .m_isAirborne = false};
uml::prediction::Projectile proj = {.m_origin = {3,2,1}, .m_launchSpeed = 400, .m_gravityScale= 0.4}; uml::prediction::Projectile proj = {.m_origin = {3,2,1}, .m_launchSpeed = 5000, .m_gravityScale= 0.4};
auto vel = uml::prediction::Engine(400, 1.f / 10000.f, 50).MaybeCalculateAimPoint(proj, target); auto vel = uml::prediction::Engine(400, 1.f / 1000.f, 50, 5.f).MaybeCalculateAimPoint(proj, target);
auto pitch = proj.m_origin.ViewAngleTo(vel.value()).x; auto pitch = proj.m_origin.ViewAngleTo(vel.value()).x;