3

我想在unity3D中制作地对空导弹系统,它可以在时间't'之后预测来袭导弹的位置,并在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 导弹系统正确设置了它的角度,但它无法设置准确的时间和速度,因此它可以击中导弹。

4

1 回答 1

2

你需要一些专业的东西:指数曲线拟合。

http://mathworld.wolfram.com/LeastSquaresFittingExponential.html http://mste.illinois.edu/malcz/ExpFit/FIRST.html

http://www.ni.com/cms/images/devzone/tut/image7_20080714213910.JPG

您将所有点作为曲线并找到曲线的系数,然后推断下一个点。您的算法对于整个曲线似乎有点线性,但仅适用于最新点,这还不够。

也称为非线性回归。

在这里,另一个 stackexchange 答案:https ://stats.stackexchange.com/questions/20271/exponential-curve-fitting-with-a-constant

于 2013-05-19T12:31:26.323 回答