Пример #1
0
        public static ReferenceFrame SurfaceBodyHybrid(Connection conn)
        {
            Vessel         vessel    = conn.SpaceCenter().ActiveVessel;
            ReferenceFrame bodyFrame = vessel.Orbit.Body.ReferenceFrame;

            return(ReferenceFrame.CreateHybrid(conn, vessel.SurfaceReferenceFrame, bodyFrame, vessel.SurfaceReferenceFrame));
        }
Пример #2
0
        /// <summary>
        /// Your vessel's surface speed
        /// </summary>
        /// <param name="conn">Needs a connection and a vessel objects as parameters</param>
        /// <param name="vessel"></param>
        /// <returns>Returnes a tuple of doubles</returns>
        public static Tuple <double, double, double> GetSurfaceSpeed(Connection conn, Vessel vessel)
        {
            var refFrame = ReferenceFrame.CreateHybrid(conn,
                                                       vessel.Orbit.Body.ReferenceFrame,
                                                       vessel.SurfaceReferenceFrame);

            return(vessel.Flight(refFrame).Velocity);
        }
Пример #3
0
        public static ReferenceFrame CreateHybrid(Connection conn)
        {
            var vessel = conn.SpaceCenter().ActiveVessel;

            return(ReferenceFrame.CreateHybrid(
                       conn,
                       vessel.Orbit.Body.ReferenceFrame,
                       vessel.OrbitalReferenceFrame));
        }
Пример #4
0
        public static Line AddDirection(Tuple3 direction, ReferenceFrame referenceFrame, float length = 10f, bool visible = true)
        {
            var activeVesselRefFrame = SpaceCenter.Services.SpaceCenter.ActiveVessel.ReferenceFrame;

            referenceFrame = ReferenceFrame.CreateHybrid(
                activeVesselRefFrame,
                referenceFrame,
                referenceFrame,
                referenceFrame
                );
            return(new Line(Vector3d.zero, direction.ToVector() * length, referenceFrame, visible));
        }
Пример #5
0
    public static void Main()
    {
        var connection = new Connection(name: "Vessel velocity");
        var vessel     = connection.SpaceCenter().ActiveVessel;
        var refFrame   = ReferenceFrame.CreateHybrid(
            connection,
            vessel.Orbit.Body.ReferenceFrame,
            vessel.SurfaceReferenceFrame);

        while (true)
        {
            var velocity = vessel.Flight(refFrame).Velocity;
            Console.WriteLine("Surface velocity = ({0:F1}, {1:F1}, {2:F1})",
                              velocity.Item1, velocity.Item2, velocity.Item3);
            System.Threading.Thread.Sleep(1000);
        }
    }
Пример #6
0
        Vector3 TargetPosition(ReferenceFrame referenceFrame)//如果把另一个vessel设为目标(比如回收用的船),则返回这个vessel的位置, 否则返回由给定经纬度和高度确定的位置
        {
            if (targetVirtual == null)
            {
                if (target == null)
                {
                    targetFixedPos = body.PositionAtAltitude(Lat, Lon, Height + body.SurfaceHeight(Lat, Lon), bodyRef).ToVec();
                    targetVirtual  = ReferenceFrame.CreateHybrid(connection, ReferenceFrame.CreateRelative(connection, bodyRef, targetFixedPos.ToTuple()), surfaceRef);
                }
                else
                {
                    targetVirtual = target.SurfaceReferenceFrame;
                }
            }
            //return connection.SpaceCenter().TransformPosition(targetFixedPos.ToTuple(), bodyRef, referenceFrame).ToVec();

            return(-data.GetPosition(targetVirtual));
        }
Пример #7
0
        void CreateHybrid()
        {
            var relative = ReferenceFrame.CreateRelative(connection, reference_, targetPosition.ToTuple());

            hybrid = ReferenceFrame.CreateHybrid(connection, relative, surfaceRef);
        }
Пример #8
0
 public Vector3 getAngularVelocity()
 {
     return(tupleToVec3(Vessel.AngularVelocity(ReferenceFrame.CreateHybrid(Vessel.connection, Vessel.ReferenceFrame, Vessel.ReferenceFrame, nonRotatingRefFrame, nonRotatingRefFrame))));
 }