示例#1
0
    public void ShouldStepForward()
    {
        var guidance = new Guidance();

        guidance.Step("forward 4");
        guidance.Position.Should().Be(4);
    }
示例#2
0
    private void FixedUpdate()
    {
        var rb = GetComponent <Rigidbody>();

        Vector3 position       = rb.position;
        Vector3 targetPosition = GetComponent <TargetFilter>().Position;

        Vector3 velocity       = rb.velocity;
        Vector3 targetVelocity = GetComponent <TargetFilter>().Velocity;

        acceleration.Clear();

        for (int guidanceIndex = 0; guidanceIndex < Guidances.Length; guidanceIndex++)
        {
            Guidance guidance = Guidances[guidanceIndex];
            if (guidance.ApplyAcceleration)
            {
                buffer.Clear();
                guidance.Law.Calculate(Time.fixedDeltaTime, position, velocity, targetPosition, targetVelocity, buffer);

                acceleration.AddRange(buffer);
            }
        }

        for (int accelerationIndex = 0; accelerationIndex < acceleration.Count; accelerationIndex++)
        {
            rb.AddForce(acceleration[accelerationIndex], ForceMode.Impulse);
        }
    }
示例#3
0
        public List <Guidance> GetGuidances()
        {
            try
            {
                List <Guidance> guidance = guidance_db.Db_Get_All_Guidances();
                return(guidance);
            }
            catch (Exception)
            {
                //something went wrong connecting to the database, so we will add a fake student to the list to make sure the rest of the application continues working!

                List <Guidance> guidance = new List <Guidance>();
                Guidance        a        = new Guidance();
                a.TeacherId = 3;

                guidance.Add(a);
                Guidance b = new Guidance();
                b.TeacherId = 2;

                //throw new Exception("Someren couldn't connect to the database");
                System.Windows.Forms.MessageBox.Show("Someren couldn't connect to the database");
                guidance.Add(a);
                return(guidance);
            }
        }
示例#4
0
    public LeapHand(RigidHand hand)
    {
        if (hand.palm != null)
        {
            this.palm = new Guidance(hand.palm);
        }

        if (hand.forearm != null)
        {
            this.forearm = new Guidance(hand.forearm);
        }

        if (hand.elbowJoint != null)
        {
            this.elbowJoint = new Guidance(hand.elbowJoint);
        }

        FingerModel[] fingersModel = hand.fingers;
        this.fingers = new Guidance[fingersModel.Length, FingerModel.NUM_BONES];
        for (int i = 0; i < fingersModel.Length; i++)
        {
            for (int j = 0; j < FingerModel.NUM_BONES; ++j)
            {
                if (fingersModel[i] != null && fingersModel[i].bones[j] != null)
                {
                    this.fingers[i, j] = new Guidance(fingersModel[i].bones[j]);
                }
            }
        }

        this.handedness = hand.Handedness;
    }
示例#5
0
    public void RefreshMask()
    {
        Vector3 targetPos = m_targetCamera.WorldToScreenPoint(currentTarget.position);
        Vector2 targetLocal;

        RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as RectTransform, targetPos, m_camera, out targetLocal);
        currentShowTarget.anchoredPosition3D = new Vector3(targetLocal.x, targetLocal.y, 100);

        Mask.gameObject.SetActive(true);

        Material material;

        if (currentInfo.GuidanceType == 1)
        {
            material        = RectMaterial;
            currentGuidance = rectGuidanceController;
        }
        else
        {
            material        = CircleMaterial;
            currentGuidance = circleGuidanceController;
        }
        Mask.material = material;
        currentGuidance.SetCamera(m_targetCamera);
        currentGuidance.SetMaterial(Mask.material);
        currentGuidance.SetCanvas(canvas);
        currentGuidance.SetTarget(m_newbieGuideData[index].highlightArea);
        currentGuidance.RefreshMask();
    }
示例#6
0
    public void Day02Part02()
    {
        var data     = System.IO.File.ReadLines("data/day02.txt").ToArray();
        var guidance = new Guidance();

        guidance.Move(data);
        (guidance.Position * guidance.Depth).Should().Be(1872757425);
    }
示例#7
0
文件: Enums.cs 项目: hooperk/Starship
 /// <summary>
 /// Special Rules of a Guidance system
 /// </summary>
 /// <param name="self">Guidance</param>
 /// <returns>String to list for a Guidance System</returns>
 public static string Special(this Guidance self)
 {
     if (self == Guidance.Guided)
     {
         return("One character may make +0 Tech-Use+Detection test to turn torpedo up to 45 degrees at start of it's movement each turn. Enemies which have identified the torpedo tubes may make -40 Tech-Use Test to gain control instead");
     }
     return(null);
 }
示例#8
0
 /// <summary>
 /// Create a new Torpedo
 /// </summary>
 /// <param name="warhead">Warhead in the Torpedo</param>
 /// <param name="system">Guidance system in the Torpedo</param>
 public Torpedo(Warhead warhead, Guidance system = Guidance.Standard)
 {
     this.Warhead = warhead;
     if (this.Warhead == Warhead.Void || this.Warhead == Warhead.Leech)
         this.GuidanceSystem = Guidance.Seeking;
     else
         this.GuidanceSystem = system;
 }
示例#9
0
 public void LaunchingRocket()
 {
     Console.WriteLine("_______Starting up Rocket Systems_______");
     Structural.startStructuralSystem();
     Payload.checkingSystemIntegrity();
     Guidance.startGuidanceSystem();
     Propulsion.checkingEngine();
     System.Console.WriteLine("_______All systems are on and working_______");
 }
示例#10
0
        public void Db_Add_Guidance(Guidance g)
        {
            string query = "INSERT INTO Guidance(teacher_id) VALUES (@TeacherId)";

            SqlParameter[] sqlParameters =
            {
                new SqlParameter("TeacherId", g.TeacherId),
            };
            //Uitvoering van de query
            ExecuteEditQuery(query, sqlParameters);
        }
示例#11
0
        public void Db_Delete_Guidance(Guidance g)
        {
            //Query Delete guidance voor table Guidance
            string query = "DELETE FROM Guidance WHERE teacher_id = @GuidanceId";

            SqlParameter[] sqlParameters =
            {
                new SqlParameter("GuidanceId", g.TeacherId),
            };
            //Uitvoering van de query
            ExecuteEditQuery(query, sqlParameters);
        }
示例#12
0
 /// <summary>
 /// Create a new Torpedo
 /// </summary>
 /// <param name="warhead">Warhead in the Torpedo</param>
 /// <param name="system">Guidance system in the Torpedo</param>
 public Torpedo(Warhead warhead, Guidance system = Guidance.Standard)
 {
     this.Warhead = warhead;
     if (this.Warhead == Warhead.Void || this.Warhead == Warhead.Leech)
     {
         this.GuidanceSystem = Guidance.Seeking;
     }
     else
     {
         this.GuidanceSystem = system;
     }
 }
示例#13
0
    private void CreateGuide(Sprite sprite, AnimatorOverrideController controller)
    {
        _guidance = Instantiate(GuidancePrefab).GetComponent <Guidance>();
        _guidance.transform.parent = Camera.main.transform;

        if (sprite != null)
        {
            _guidance.SetSprite(sprite);
        }
        if (controller != null)
        {
            _guidance.SetAnimationController(controller);
        }
    }
示例#14
0
    public void DestroyAllGuidance()
    {
        var objects = FindObjectsOfType(typeof(GameObject));

        for (var i = 0; i < objects.Length; i++)
        {
            var gameObj = (GameObject)objects[i];
            if (gameObj.layer == 11)
            {
                Guidance guide = gameObj.GetComponent <Guidance>();
                guide.CloseInstruction();
            }
        }
    }
示例#15
0
    private void Reset()
    {
        var guidanceLaws = GetComponents <IGuidanceLaw>();

        Guidances = new Guidance[guidanceLaws.Length];
        for (int guidanceLawsIndex = 0; guidanceLawsIndex < guidanceLaws.Length; guidanceLawsIndex++)
        {
            Guidances[guidanceLawsIndex] = new Guidance()
            {
                MonoBehaviour     = guidanceLaws[guidanceLawsIndex] as MonoBehaviour,
                ApplyAcceleration = false
            };
        }
    }
示例#16
0
        public IDictionary <string, Role> GetRoles()
        {
            IDictionary <string, Role> roles = new Dictionary <string, Role>();

            string cmdText = @"select * from AspNetRoles";

            this.ReadData(dataReader =>
            {
                string key  = dataReader["Id"].ToString();
                string name = dataReader["Name"].ToString();

                if (Enum.TryParse(name, out RoleType result))
                {
                    switch (result)
                    {
                    case RoleType.Administrator:
                        roles.Add(key, Administrator.GetInstance());
                        break;

                    case RoleType.Customer:
                        roles.Add(key, WebApplication.Models.Role.Customer.GetInstance());
                        break;

                    case RoleType.DirectStore:
                        roles.Add(key, DirectStore.GetInstance());
                        break;

                    case RoleType.Guidance:
                        roles.Add(key, Guidance.GetInstance());
                        break;

                    case RoleType.Supervise:
                        roles.Add(key, Supervise.GetInstance());
                        break;

                    case RoleType.VIP:
                        roles.Add(key, VIP.GetInstance());
                        break;

                    case RoleType.VVIP:
                        roles.Add(key, VVIP.GetInstance());
                        break;
                    }
                }
            }, cmdText);

            return(roles);
        }
示例#17
0
        private List <Guidance> ReadTables(DataTable dataTable)
        {
            List <Guidance> guidances = new List <Guidance>();


            foreach (DataRow dr in dataTable.Rows)
            {
                Guidance guidance = new Guidance()
                {
                    TeacherName = (String)dr["teacher_name"].ToString(),
                    TeacherId   = (int)(dr["teacher_id"])
                };
                guidances.Add(guidance);
            }
            return(guidances);
        }
示例#18
0
    public void TimerHandler()
    {
        if (Cooking && !TimerOpen)
        {
            // Close step by step guidance
            DestroyAllGuidance();

            // Create timer menu
            var timerMenu = Instantiate(TimerMenuPrefab);
            TimerOpen = true;

            // Timer guidance
            _guidance = Instantiate(GuidancePrefab).GetComponent <Guidance>();
            _guidance.transform.parent = Camera.main.transform;
            _guidance.SetInstruction("Click on the + numbers to increase the time in minutes");
        }
    }
示例#19
0
文件: LeapHand.cs 项目: marcomnt/RV
    public LeapHand(RigidHand hand)
    {
        this.palm       = new Guidance(hand.palm);
        this.forearm    = new Guidance(hand.forearm);
        this.elbowJoint = new Guidance(hand.elbowJoint);

        FingerModel[] fingersModel = hand.fingers;
        this.fingers = new Guidance[fingersModel.Length, FingerModel.NUM_JOINTS];
        for (int i = 0; i < fingersModel.Length; i++)
        {
            for (int j = 0; j <= 3; ++j)
            {
                this.fingers[i, j] = new Guidance(fingersModel[i].joints[j]);
            }
        }

        this.handedness = hand.Handedness;
    }
示例#20
0
        public override int GetHashCode()
        {
            int hash = 1;

            if (Guidance != 0)
            {
                hash ^= Guidance.GetHashCode();
            }
            if (GuidanceNum != 0)
            {
                hash ^= GuidanceNum.GetHashCode();
            }
            if (_unknownFields != null)
            {
                hash ^= _unknownFields.GetHashCode();
            }
            return(hash);
        }
示例#21
0
    public void ShouldMoveToExample()
    {
        var guidance = new Guidance();
        var steps    = new[] {
            "forward 5",
            "down 5",
            "forward 8",
            "up 3",
            "down 8",
            "forward 2"
        };

        guidance.Move(steps);
        guidance.Position.Should().Be(15);
        guidance.Depth.Should().Be(60);
        (guidance.Position * guidance.Depth).Should().Be(900);
        // (guidance.Position * guidance.Depth).Should().Be(150);
    }
示例#22
0
    private void Awake()
    {
        VoiceOn = true;

        var cursor = Instantiate(CursorPrefab);

        cursor.transform.parent = Camera.main.transform;

        _guidance = Instantiate(GuidancePrefab).GetComponent <Guidance>();
        _guidance.transform.parent = Camera.main.transform;
        _guidance.GetComponent <Guidance>().SetInstruction("Say \"Menu\" to open the recipe menu");

        _voiceRecognizer = Instantiate(VoiceRecognizerPrefab).GetComponent <VoiceRecognizer>();
        _voiceRecognizer.RegisterKeyword("menu");
        _voiceRecognizer.RegisterKeyword("set timer");
        _voiceRecognizer.RegisterKeyword("add timer");

        _voiceRecognizer.OnDictionaryReset += RegisterVoiceEvent;
        RegisterVoiceEvent();
    }
示例#23
0
文件: Enums.cs 项目: hooperk/Starship
        /// <summary>
        /// Description of a Guidance system
        /// </summary>
        /// <param name="self">Guidance</param>
        /// <returns>String to list for a Guidance System</returns>
        public static string Description(this Guidance self)
        {
            switch (self)
            {
            case Guidance.Standard:
                return("+20 Torpedo Rating");

            case Guidance.Guided:
                return("One character may make +0 Tech-Use+Detection test to turn torpedo up to 45 degrees at start of it's movement each turn. Enemies which have identified the torpedo tubes may make -40 Tech-Use Test to gain control instead. +20 Torpedo Rating");

            case Guidance.Seeking:
                return("+30 Torpedo Rating");

            case Guidance.ShortBurn:
                return("Torpedo moves 15 VUs a turn but has max range of 30VU. +15 Torpedo Rating");

            default:
                return(null);
            }
        }
示例#24
0
        /// <summary>
        /// 设置项下的显示查询
        /// </summary>
        /// <returns></returns>
        public List <Guidance> GetGuidance()
        {
            string          sql       = "selecet AnotherName,DatabaseAddress,DatabaseName,UserName from guidance";
            MySqlHelper     db        = new MySqlHelper();
            DataSet         guidances = db.GetDataSet(MySqlHelper.Conn, CommandType.Text, sql, null);
            DataTable       dt        = guidances.Tables[0];
            List <Guidance> list      = new List <Guidance>();

            //遍历DataTable 封装成List<Guidance>
            foreach (DataRow dr in dt.Rows)
            {
                Guidance gd = new Guidance();
                gd.anotherName     = dr["AnotherName"].ToString();
                gd.datebaseAddress = dr["DatabaseAddress"].ToString();
                gd.databaseName    = dr["DatabaseName"].ToString();
                gd.userName        = dr["UserName"].ToString();
                list.Add(gd);
            }

            return(list);
        }
示例#25
0
        public List <Guidance> GetNotGuidance()
        {
            try
            {
                List <Guidance> teacher = guidance_db.DB_GET_ALL_NOT_Guidance();
                return(teacher);
            }

            catch (Exception)
            {
                List <Guidance> guidance = new List <Guidance>();
                Guidance        a        = new Guidance();
                a.TeacherId = 3;

                guidance.Add(a);
                Guidance b = new Guidance();
                b.TeacherId = 2;

                //throw new Exception("Someren couldn't connect to the database");
                System.Windows.Forms.MessageBox.Show("Someren couldn't connect to the database");
                guidance.Add(a);
                return(guidance);
            }
        }
示例#26
0
 // Use this for initialization
 void Start()
 {
     Guide = Instantiate(GuidePrefab).GetComponent <Guidance>();
     Guide.transform.parent = Camera.main.transform;
     Guide.SetInstruction("Click on the arrows or say next/previous to navigate over the instructions");
 }
示例#27
0
 internal                       Point[] GetTrajectory(Point coord)
 {
     //TODO:
     return(Guidance.Parabola(coord));
 }
示例#28
0
 bool compareGuidanceWithTHreshold(Guidance p1, Guidance p2)
 {
     return(compareVector3WithThreshold(p1.position, p2.position, thresholdPosition) &&
            compareQuaternionWithThreshold(p1.rotation, p2.rotation, thresholdAngle));
 }
示例#29
0
 public static void DrawLine(this Graphics g, Pen pen, Guidance.Graphing.LineF line)
 {
     g.DrawLine(pen, line.Point0, line.Point1);
 }
示例#30
0
        public static List <object> Iterate(Vehicle vehicle, Target target, VesselState state, VesselState previous)
        {
            var gamma = target.Angle;
            var iy    = target.Normal;
            var rdval = target.Radius;
            var vdval = target.Velocity;

            var t = state.Time;
            var m = state.Mass.Value;
            var r = state.Radius;
            var v = state.Velocity;

            var cser  = previous.Cse;
            var rbias = previous.Rbias;
            var rd    = previous.Rd;
            var rgrav = previous.Rgrav;
            var tp    = previous.Time;
            var vprev = previous.Velocity;
            var vgo   = previous.Vgo;

            var n  = vehicle.Stages.Count;
            var SM = new List <double>();
            var aL = new List <double>();
            var md = new List <double>();
            var ve = new List <double>();
            var fT = new List <double>();
            var aT = new List <double>();
            var tu = new List <double>();
            var tb = new List <double>();

            for (int i = 0; i < n; i++)
            {
                Stage stg  = vehicle.Stages[i];
                var   pack = stg.GetThrust();
                SM.Add(stg.Mode);
                aL.Add(stg.GLim * Constants.G0);
                fT.Add(pack[0]);
                md.Add(pack[1]);
                ve.Add(pack[2] * Constants.G0);
                aT.Add(fT[i] / stg.MassTotal);
                tu.Add(ve[i] / aT[i]);
                tb.Add(stg.MaxT);
            }


            var dt       = t - tp;
            var dvsensed = Vector3d.Subtract(v, vprev);

            vgo   = Vector3d.Subtract(vgo, dvsensed);
            tb[0] = tb[0] - previous.Tb;

            if (SM[0] == 1)
            {
                aT[0] = fT[0] / m;
            }
            else if (SM[0] == 2)
            {
                aT[0] = aL[0];
            }

            tu[0] = ve[0] / aT[0];
            var L  = 0d;
            var Li = new List <double>();

            for (int i = 0; i < n - 1; i++)
            {
                if (SM[i] == 1)
                {
                    Li.Add(ve[i] * Math.Log(tu[i] / (tu[i] - tb[i])));
                }
                else if (SM[i] == 2)
                {
                    Li.Add(aL[i] * tb[i]);
                }
                else
                {
                    Li.Add(0);
                }

                L = Li[i];

                if (L > vgo.Magnitude())
                {
                    var veh = vehicle;
                    veh.Stages.RemoveAt(veh.Stages.Count - 1);

                    return(UPFG.Iterate(veh, target, state, previous));
                }
            }

            Li.Add(vgo.Magnitude() - L);

            var tgoi = new List <double>();

            for (int i = 0; i < n; i++)
            {
                if (SM[i] == 1)
                {
                    tb[i] = tu[i] * (1 - Math.Pow(Math.E, (-Li[i] / ve[i])));
                }
                else if (SM[i] == 2)
                {
                    tb[i] = Li[i] / aL[i];
                }

                if (i == 0)
                {
                    tgoi.Add(tb[i]);
                }
                else
                {
                    tgoi.Add(tgoi[i - 1] + tb[i]);
                }
            }

            var L1  = Li[0];
            var tgo = tgoi[n - 1];

            L = 0d;
            var J = 0d;
            var S = 0d;
            var Q = 0d;
            var H = 0d;
            var P = 0d;

            var Ji    = new List <double>();
            var Si    = new List <double>();
            var Qi    = new List <double>();
            var Pi    = new List <double>();
            var tgoi1 = 0d;

            for (int i = 0; i < n; i++)
            {
                if (i > 0)
                {
                    tgoi1 = tgoi[i - 1];
                }

                if (SM[i] == 1)
                {
                    Ji.Add(tu[i] * Li[i] - ve[i] * tb[i]);
                    Si.Add(-Ji[i] + tb[i] * Li[i]);
                    Qi.Add(Si[i] * (tu[i] + tgoi1) - 0.5 * ve[i] * Math.Pow(tb[i], 2));
                    Pi.Add(Qi[i] * (tu[i] + tgoi1) - 0.5 * ve[i] * Math.Pow(tb[i], 2) * (tb[i] / 3 + tgoi1));
                }
                else if (SM[i] == 2)
                {
                    Ji.Add(0.5 * Li[i] * tb[i]);
                    Si.Add(Ji[i]);
                    Qi.Add(Si[i] * (tb[i] / 3 + tgoi1));
                    Pi.Add((1 / 6) * Si[i] * (Math.Pow(tgoi[i], 2) + 2 * tgoi[i] * tgoi1 + 3 * Math.Pow(tgoi1, 2)));
                }

                Ji[i] = Ji[i] + Li[i] * tgoi1;
                Si[i] = Si[i] + L * tb[i];
                Qi[i] = Qi[i] + J * tb[i];
                Pi[i] = Pi[i] + H * tb[i];

                L += Li[i];
                J += Ji[i];
                S += Si[i];
                Q += Qi[i];
                P += Pi[i];
                H  = J * tgoi[i] - Q;
            }

            var lambda = Vector3d.Normalize(vgo);

            if (previous.Tgo > 0)
            {
                rgrav = Vector3d.Multiply(rgrav, Math.Pow((tgo / previous.Tgo), 2));
            }

            var rgo = Vector3d.Subtract(
                rd,
                Vector3d.Add(
                    Vector3d.Multiply(
                        Vector3d.Add(r, v),
                        tgo
                        ),
                    rgrav
                    )
                );


            var iz    = Vector3d.Normalize(Vector3d.Cross(rd, iy));
            var rgoxy = Vector3d.Dot(Vector3d.Subtract(rgo, Vector3d.Dot(iz, rgo)), iz);
            var rgoz  = Vector3d.Divide(Vector3d.Subtract(Vector3d.Multiply(lambda, rgoxy), S),
                                        Vector3d.Dot(lambda, iz));

            rgo = Vector3d.Add(Vector3d.Add(rgoz, rgoxy), Vector3d.Add(iz, rbias));

            var lambdade  = Q - S * J / L;
            var lambdadot = Vector3d.Divide(Vector3d.Subtract(rgo, Vector3d.Multiply(lambda, S)), lambdade);
            var iF_       = Vector3d.Subtract(lambda, Vector3d.Multiply(lambdadot, J / L));

            iF_ = Vector3d.Normalize(iF_);
            var phi     = Math.Acos(Vector3d.Dot(iF_, lambda) / (iF_.Magnitude() * lambda.Magnitude()));
            var phidot  = -phi * L / J;
            var vthrust = Vector3d.Multiply(lambda,
                                            L - 0.5 * L * Math.Pow(phi, 2) - J * phi * phidot - 0.5 * Math.Pow(phidot, 2));
            var rthrst = S - 0.5 * S * Math.Pow(phi, 2) - Q * phi * phidot - 0.5 * P * Math.Pow(phidot, 2);

            var rthrust = Vector3d.Subtract(
                Vector3d.Multiply(lambda, rthrst),
                Vector3d.Multiply(
                    Vector3d.Normalize(lambda),
                    (S * phi + Q * phidot)
                    )
                );

            var vbias = Vector3d.Subtract(vgo, vthrust);
            var rbs   = Vector3d.Subtract(rgo, rthrst);

            var _up   = Vector3d.Normalize(r);
            var _east = Vector3d.Normalize(Vector3d.Cross(
                                               new Vector3d(0, 0, 1),
                                               _up
                                               ));
            var pitch   = Math.Acos(Vector3d.Dot(iF_, _up) / (iF_.Magnitude() * _up.Magnitude()));
            var inplane = Vector3d.Subtract(
                iF_,
                Vector3d.Multiply(_up,
                                  Vector3d.Dot(iF_, _up) / Vector3d.Dot(_up, _up)
                                  ));

            var yaw     = Math.Acos(Vector3d.Dot(inplane, _east) / (inplane.Magnitude() * _east.Magnitude()));
            var tangent = Vector3d.Cross(_up, _east);

            if (Vector3d.Dot(inplane, tangent) < 0)
            {
                yaw = -yaw;
            }

            var rc1 = Vector3d.Subtract(Vector3d.Subtract(
                                            r,
                                            Vector3d.Multiply(rthrust, 0.1)
                                            ),
                                        Vector3d.Multiply(
                                            vthrust,
                                            tgo / 30
                                            ));

            var vc1 = Vector3d.Subtract(Vector3d.Add(
                                            Vector3d.Divide(Vector3d.Multiply(rthrust, 1.2), tgo),
                                            v
                                            ),
                                        Vector3d.Multiply(vthrust, 0.1));

            var pck = CSER.CSE(rc1, vc1, tgo);

            cser = (Dictionary <string, object>)pck[2];
            var rgrv = Vector3d.Subtract(
                (Vector3d)pck[0],
                Vector3d.Subtract(
                    rc1,
                    Vector3d.Multiply(vc1, tgo)
                    )
                );

            var vgrv = Vector3d.Subtract(
                (Vector3d)pck[1],
                vc1
                );

            var rp = Vector3d.Add(
                r,
                Vector3d.Add(
                    Vector3d.Multiply(v, tgo),
                    Vector3d.Add(rgrv, rthrust)
                    )
                );

            rp = Vector3d.Subtract(
                rp,
                Vector3d.Multiply(
                    iy,
                    Vector3d.Dot(rp, iy)
                    )
                );

            rd = Vector3d.Multiply(
                Vector3d.Normalize(rp),
                rdval
                );

            var ix = Vector3d.Normalize(rd);

            iz = Vector3d.Cross(ix, iy);

            var vv1 = new Vector3d(ix.X, iy.X, iz.Z);
            var vv2 = new Vector3d(ix.Y, iy.Y, iz.Y);
            var vv3 = new Vector3d(ix.Z, iy.Z, iz.Z);
            var vop = new Vector3d(Math.Sin(gamma), 0, Math.Cos(gamma));
            var vd  = new Vector3d(
                Vector3d.Dot(vv1, vop),
                Vector3d.Dot(vv2, vop),
                Vector3d.Dot(vv3, vop)
                );

            vgo = Vector3d.Add(Vector3d.Subtract(
                                   vd,
                                   Vector3d.Subtract(
                                       vgrv,
                                       v
                                       )
                                   ),
                               vbias
                               );

            // var current = new VesselState(cser);
            var current  = new VesselState(t, null, null, v, cser, rbias, rd, rgrv, vgo, previous.Tb + dt, tgo);
            var guidance = new Guidance(iF_, pitch, yaw, 0, 0, tgo);

            return(new List <object>
            {
                current,
                guidance,
                dt
            });
        }