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)); }
/// <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); }
public static ReferenceFrame CreateHybrid(Connection conn) { var vessel = conn.SpaceCenter().ActiveVessel; return(ReferenceFrame.CreateHybrid( conn, vessel.Orbit.Body.ReferenceFrame, vessel.OrbitalReferenceFrame)); }
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)); }
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); } }
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)); }
void CreateHybrid() { var relative = ReferenceFrame.CreateRelative(connection, reference_, targetPosition.ToTuple()); hybrid = ReferenceFrame.CreateHybrid(connection, relative, surfaceRef); }
public Vector3 getAngularVelocity() { return(tupleToVec3(Vessel.AngularVelocity(ReferenceFrame.CreateHybrid(Vessel.connection, Vessel.ReferenceFrame, Vessel.ReferenceFrame, nonRotatingRefFrame, nonRotatingRefFrame)))); }