mirror of
https://github.com/orange-cpp/omath.git
synced 2026-02-13 07:03:25 +00:00
improved code
This commit is contained in:
@@ -55,15 +55,17 @@ namespace uml::prediction
|
|||||||
{
|
{
|
||||||
const auto delta = target - origin;
|
const auto delta = target - origin;
|
||||||
|
|
||||||
const auto distance = delta.Length2D();
|
const auto distance2d = delta.Length2D();
|
||||||
|
|
||||||
|
|
||||||
float root = powf(bulletSpeed, 4) - bulletGravity * (bulletGravity * distance * distance + 2.0f * delta.z * powf(bulletSpeed, 2));
|
float root = powf(bulletSpeed, 4) - bulletGravity * (bulletGravity * distance2d * distance2d + 2.0f * delta.z * powf(bulletSpeed, 2));
|
||||||
if (root < 0.0f) {
|
|
||||||
|
if (root < 0.0f)
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
}
|
|
||||||
root = sqrt(root);
|
root = std::sqrt(root);
|
||||||
float angle = atanf((powf(bulletSpeed, 2) - root) / (bulletGravity * distance));
|
float angle = std::atan((powf(bulletSpeed, 2) - root) / (bulletGravity * distance2d));
|
||||||
|
|
||||||
return -angles::RadToDeg(angle);
|
return -angles::RadToDeg(angle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user