public Tuple4 Rotation(ReferenceFrame referenceFrame) { if (ReferenceEquals(referenceFrame, null)) { throw new ArgumentNullException(nameof(referenceFrame)); } return(referenceFrame.RotationFromWorldSpace(InternalVessel.ReferenceTransform.rotation).ToTuple()); }
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()); }
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 (); }
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); }
public static Tuple4 TransformRotation(Tuple4 rotation, ReferenceFrame from, ReferenceFrame to) { CheckReferenceFrames(from, to); return(to.RotationFromWorldSpace(from.RotationToWorldSpace(rotation.ToQuaternion())).ToTuple()); }
public Tuple4 Rotation(ReferenceFrame referenceFrame) { return(referenceFrame.RotationFromWorldSpace(InternalVessel.ReferenceTransform.rotation).ToTuple()); }