Beispiel #1
0
    ///<summary>
    /// Gives only the trajectory segments which are specified by argument
    ///</summary>
    public TrajectorySegment[] GetTrajectorySegments(int lenght)
    {
        TrajectorySegment[] result = new TrajectorySegment[lenght];

        GetTrajectory(lenght);

        for (int i = 0; i < lenght; i++)
        {
            result[i] = segments[i];
        }

        return(result);
    }
Beispiel #2
0
    public static TrajectorySegment CalculateTrajectorySegment(Vector2 position, Vector2 velocity)
    {
        TrajectorySegment result = new TrajectorySegment();

        result.positions[0] = position + velocity / BattleTimeManager.frameRate;

        for (int i = 1; i < TrajectorySegment.lenght; i++)
        {
            velocity           += Gravity.SampleGravityField(result.positions[i - 1]) / BattleTimeManager.frameRate;
            result.positions[i] = result.positions[i - 1] + velocity / BattleTimeManager.frameRate;
        }

        result.endVelocity = velocity;

        return(result);
    }
Beispiel #3
0
    ///<summary>
    /// Calculates another step of trajectory
    ///</summary>
    public void Step()
    {
        // Robi to na zasadzie:
        // 1. Wzięcia elementu z początku listy
        // 2. Obliczenia dla niego nowych wartości (odświeżenia)
        // 3. Dodanie go na koniec listy


        TrajectorySegment segmentToRefresh = firstSegment;

        segmentToRefresh = Orbiter.CalculateTrajectorySegment(segments[segments.Count - 1].lastPosition, segments[segments.Count - 1].endVelocity);

        segments.RemoveAt(0);

        segments.Add(segmentToRefresh);
    }