コード例 #1
0
 public Tuple4 Rotation(ReferenceFrame referenceFrame)
 {
     if (ReferenceEquals(referenceFrame, null))
     {
         throw new ArgumentNullException(nameof(referenceFrame));
     }
     return(referenceFrame.RotationFromWorldSpace(InternalVessel.ReferenceTransform.rotation).ToTuple());
 }
コード例 #2
0
        public Tuple4 Rotation(ReferenceFrame referenceFrame)
        {
            var up      = Vector3.up;
            var right   = InternalBody.GetRelSurfacePosition(0, 0, 1).normalized;
            var forward = Vector3.Cross(right, up);

            Vector3.OrthoNormalize(ref forward, ref up);
            var rotation = Quaternion.LookRotation(forward, up);

            return(referenceFrame.RotationFromWorldSpace(rotation).ToTuple());
        }
コード例 #3
0
ファイル: CelestialBody.cs プロジェクト: key50/My_kRPC
 public Tuple4 Rotation (ReferenceFrame referenceFrame)
 {
     if (ReferenceEquals (referenceFrame, null))
         throw new ArgumentNullException (nameof (referenceFrame));
     var up = Vector3.up;
     var right = InternalBody.GetRelSurfacePosition (0, 0, 1).normalized;
     var forward = Vector3.Cross (right, up);
     Vector3.OrthoNormalize (ref forward, ref up);
     var rotation = Quaternion.LookRotation (forward, up);
     return referenceFrame.RotationFromWorldSpace (rotation).ToTuple ();
 }
コード例 #4
0
ファイル: AutoPilot.cs プロジェクト: pipi1226/krpc
        void DoAutoPiloting(PilotAddon.ControlInputs state)
        {
            SAS = false;
            var currentDirection = ReferenceFrame.DirectionFromWorldSpace(InternalVessel.ReferenceTransform.up);

            rotationRateController.ReferenceFrame = ReferenceFrame;
            var targetRotation = Vector3d.zero;

            if (targetDirection != Vector3d.zero)
            {
                targetRotation += (Vector3.Cross(targetDirection, currentDirection) * RotationSpeedMultiplier).ClampMagnitude(0f, MaxRotationSpeed);
            }
            if (!Double.IsNaN(TargetRoll))
            {
                float currentRoll = (float)ReferenceFrame.RotationFromWorldSpace(InternalVessel.ReferenceTransform.rotation).PitchHeadingRoll().z;
                var   rollError   = GeometryExtensions.NormAngle(TargetRoll - currentRoll) * (Math.PI / 180f);
                targetRotation += targetDirection * (rollError * RollSpeedMultiplier).Clamp(-MaxRollSpeed, MaxRollSpeed);
            }
            rotationRateController.Target = targetRotation;
            rotationRateController.Update(state);
        }
コード例 #5
0
ファイル: SpaceCenter.cs プロジェクト: BenChung/krpc
 public static Tuple4 TransformRotation(Tuple4 rotation, ReferenceFrame from, ReferenceFrame to)
 {
     CheckReferenceFrames(from, to);
     return(to.RotationFromWorldSpace(from.RotationToWorldSpace(rotation.ToQuaternion())).ToTuple());
 }
コード例 #6
0
 public Tuple4 Rotation(ReferenceFrame referenceFrame)
 {
     return(referenceFrame.RotationFromWorldSpace(InternalVessel.ReferenceTransform.rotation).ToTuple());
 }