mirror of
https://github.com/orange-cpp/omath.git
synced 2026-02-12 22:53:27 +00:00
added new param
This commit is contained in:
@@ -15,7 +15,8 @@ namespace uml::prediction
|
||||
class Engine
|
||||
{
|
||||
public:
|
||||
explicit Engine(float gravityConstant, float simulationTimeStep, float maximumSimulationTime);
|
||||
explicit Engine(float gravityConstant, float simulationTimeStep,
|
||||
float maximumSimulationTime, float distanceTolerance);
|
||||
|
||||
[[nodiscard]]
|
||||
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_simulationTimeStep;
|
||||
const float m_maximumSimulationTime;
|
||||
const float m_distanceTolerance;
|
||||
|
||||
[[nodiscard]]
|
||||
std::optional<float> MaybeCalculateProjectileLaunchPitchAngle(const Projectile& projectile,
|
||||
|
||||
@@ -10,10 +10,12 @@
|
||||
|
||||
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_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 projectilePosition = projectile.PredictPosition(pitch, yaw, time, m_gravityConstant);
|
||||
|
||||
return projectilePosition.DistTo(targetPosition) <= 10.f;
|
||||
return projectilePosition.DistTo(targetPosition) <= m_distanceTolerance;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
TEST(x,x)
|
||||
{
|
||||
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};
|
||||
auto vel = uml::prediction::Engine(400, 1.f / 10000.f, 50).MaybeCalculateAimPoint(proj, target);
|
||||
uml::prediction::Projectile proj = {.m_origin = {3,2,1}, .m_launchSpeed = 5000, .m_gravityScale= 0.4};
|
||||
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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user