我想在unity3D中建立地对空导弹系统,可以预测导弹位置在一段时间之后的状态'并将其拦截导弹的角度和位置设置在3D坐标中,以便它可以击中入射导弹。我正在使用以下功能来预测入射导弹。
void UpdateTrajectory(Vector3 initialPosition, Vector3 initialVelocity, Vector3 gravity)
{
int numSteps = 500;
float timeDelta = 1.0f / initialVelocity.magnitude;
LineRenderer lineRenderer = GetComponent<LineRenderer>();
lineRenderer.SetVertexCount(numSteps);
Vector3 position = initialPosition;
Vector3 velocity = initialVelocity;
for (int i = 0; i < numSteps; ++i)
{
lineRenderer.SetPosition(i, position);
position += velocity * timeDelta + 0.5f * gravity * timeDelta * timeDelta;
velocity += gravity * timeDelta;
}
}
我正在使用线条渲染器来获取视觉轨迹显示。 现在我只能在少数位置击中导弹意味着我:P必须手动调整。我的SAM导弹系统正确地设置了它的角度,但它无法设置准确的时间和速度,因此可以击中导弹。
答案 0 :(得分:2)
你需要专业的东西:指数曲线拟合。
http://mathworld.wolfram.com/LeastSquaresFittingExponential.html http://mste.illinois.edu/malcz/ExpFit/FIRST.html
将所有点作为曲线得到并找到曲线系数然后推断下一个点。 您的算法在整个曲线上看起来有点线性,但对于最新的点而言才是正确的,这还不够。
Alos称为非线性回归。
这里,另一个stackexchange回答:https://stats.stackexchange.com/questions/20271/exponential-curve-fitting-with-a-constant