Beispiel #1
0
        public static void Velocity(OrbitDriver currentlyEditing, VelocityChangeDirection direction, double speed)
        {
            Vector3d velocity;

            switch (direction)
            {
            case VelocityChangeDirection.Prograde:
                velocity = currentlyEditing.orbit.getOrbitalVelocityAtUT(Planetarium.GetUniversalTime()).normalized *speed;
                break;

            case VelocityChangeDirection.Normal:
                velocity = currentlyEditing.orbit.GetOrbitNormal().normalized *speed;
                break;

            case VelocityChangeDirection.Radial:
                velocity = Vector3d.Cross(currentlyEditing.orbit.getOrbitalVelocityAtUT(Planetarium.GetUniversalTime()), currentlyEditing.orbit.GetOrbitNormal()).normalized *speed;
                break;

            case VelocityChangeDirection.North:
                var upn = currentlyEditing.orbit.getRelativePositionAtUT(Planetarium.GetUniversalTime()).normalized;
                velocity = Vector3d.Cross(Vector3d.Cross(upn, new Vector3d(0, 0, 1)), upn) * speed;
                break;

            case VelocityChangeDirection.East:
                var upe = currentlyEditing.orbit.getRelativePositionAtUT(Planetarium.GetUniversalTime()).normalized;
                velocity = Vector3d.Cross(new Vector3d(0, 0, 1), upe) * speed;
                break;

            case VelocityChangeDirection.Up:
                velocity = currentlyEditing.orbit.getRelativePositionAtUT(Planetarium.GetUniversalTime()).normalized *speed;
                break;

            default:
                throw new Exception("Unknown VelChangeDir");
            }
            var tempOrbit = currentlyEditing.orbit.Clone();

            tempOrbit.UpdateFromStateVectors(currentlyEditing.orbit.pos, currentlyEditing.orbit.vel + velocity, currentlyEditing.orbit.referenceBody, Planetarium.GetUniversalTime());
            SetOrbit(currentlyEditing, tempOrbit);
        }
 public static void Velocity(OrbitDriver currentlyEditing, VelocityChangeDirection direction, double speed)
 {
     Vector3d velocity;
     switch (direction)
     {
         case VelocityChangeDirection.Prograde:
             velocity = currentlyEditing.orbit.getOrbitalVelocityAtUT(Planetarium.GetUniversalTime()).normalized * speed;
             break;
         case VelocityChangeDirection.Normal:
             velocity = currentlyEditing.orbit.GetOrbitNormal().normalized * speed;
             break;
         case VelocityChangeDirection.Radial:
             velocity = Vector3d.Cross(currentlyEditing.orbit.getOrbitalVelocityAtUT(Planetarium.GetUniversalTime()), currentlyEditing.orbit.GetOrbitNormal()).normalized * speed;
             break;
         case VelocityChangeDirection.North:
             var upn = currentlyEditing.orbit.getRelativePositionAtUT(Planetarium.GetUniversalTime()).normalized;
             velocity = Vector3d.Cross(Vector3d.Cross(upn, new Vector3d(0, 0, 1)), upn) * speed;
             break;
         case VelocityChangeDirection.East:
             var upe = currentlyEditing.orbit.getRelativePositionAtUT(Planetarium.GetUniversalTime()).normalized;
             velocity = Vector3d.Cross(new Vector3d(0, 0, 1), upe) * speed;
             break;
         case VelocityChangeDirection.Up:
             velocity = currentlyEditing.orbit.getRelativePositionAtUT(Planetarium.GetUniversalTime()).normalized * speed;
             break;
         default:
             throw new Exception("Unknown VelChangeDir");
     }
     var tempOrbit = currentlyEditing.orbit.Clone();
     tempOrbit.UpdateFromStateVectors(currentlyEditing.orbit.pos, currentlyEditing.orbit.vel + velocity, currentlyEditing.orbit.referenceBody, Planetarium.GetUniversalTime());
     SetOrbit(currentlyEditing, tempOrbit);
 }
 public static void GetVelocity(OrbitDriver currentlyEditing, out VelocityChangeDirection direction, out double speed)
 {
     direction = VelocityChangeDirection.Prograde;
     speed = 0;
 }
Beispiel #4
0
 public static void GetVelocity(OrbitDriver currentlyEditing, out VelocityChangeDirection direction, out double speed)
 {
     direction = VelocityChangeDirection.Prograde;
     speed     = 0;
 }