/// <summary> /// Converts an array of angles in degrees or radians into an array of the sines, cosines, or tangents based on the func parameter. /// </summary> /// <param name="angles"></param> /// <param name="func"></param> /// <param name="units"></param> /// <returns>Depending on func parameter will return an array of sines, cosines, or tangents.</returns> /// <exception cref="InvalidOperationException"></exception> private Double[] GetComponents(Double[] angles, TrigFunctions func, Units units = Units.Radians) { Double[] comps = new Double[angles.Count()]; if (units == Units.Degrees) { angles = Deg2Rad(angles); } for (int i = 0; i < angles.Length; i++) { if (func == TrigFunctions.Cosine) { comps[i] = System.Math.Cos(angles[i]); } else if (func == TrigFunctions.Sine) { comps[i] = System.Math.Sin(angles[i]); } else if (func == TrigFunctions.Tangent) { comps[i] = System.Math.Tan(angles[i]); } else { throw new InvalidOperationException(); } } return(comps); }
private string FormatComplex(Complex cplx) { var sb = new StringBuilder(); sb.Append("R: "); sb.Append(cplx.Real); sb.Append(" i: "); sb.Append(cplx.Imaginary); sb.Append("\r\n φ: "); switch (Engine.Mode) { case TrigMode.DEG: sb.Append(TrigFunctions.Rad2Deg(cplx.Phase)); sb.Append(" °"); break; case TrigMode.GRAD: sb.Append(TrigFunctions.Rad2Grad(cplx.Phase)); sb.Append(" grad"); break; case TrigMode.RAD: sb.Append(cplx.Phase); sb.Append(" rad"); break; } sb.Append(" ABS: "); sb.Append(cplx.Magnitude); return(sb.ToString()); }
private void MoveGameObject() { currentXPosition = transform.position.x; currentYPosition = transform.position.y; xMoveDirection = SetMoveDirection(previousMarkerXPos, thisMarkerXPos); yMoveDirection = SetMoveDirection(previousMarkerYPos, thisMarkerYPos); xDistanceMarkerToMarker = TrigFunctions.FindDistance(previousMarkerXPos, thisMarkerXPos); yDistanceMarkerToMarker = TrigFunctions.FindDistance(previousMarkerYPos, thisMarkerYPos); xPerFrameMoveDistance = CalcAxisMoveDistance(xDistanceMarkerToMarker, xMoveDirection); yPerFrameMoveDistance = CalcAxisMoveDistance(yDistanceMarkerToMarker, yMoveDirection); straightPerFrameMoveDistance = TrigFunctions.PythagoreanTheorem(xPerFrameMoveDistance, yPerFrameMoveDistance); scaleFactorPerFrame = (fullScale - startingScale) / (distanceToScaleUp / straightPerFrameMoveDistance); newXPosEachFrame = currentXPosition + xPerFrameMoveDistance; newYPosEachFrame = currentYPosition + yPerFrameMoveDistance; SetGameObjectPosAndStat(); SetGameObjectScale(); }
private void SetMoveDistances() { totalXDistStartToEnd = TrigFunctions.FindDistance(cameraStartPos.x, cameraEndPos.x); totalYDistStartToEnd = TrigFunctions.FindDistance(cameraStartPos.y, cameraEndPos.y); camXPerFrameMoveDist = (totalXDistStartToEnd / moveSpeed) * Time.deltaTime * SetMoveDirection(cameraStartPos.x, cameraEndPos.x); camYPerFrameMoveDist = (totalYDistStartToEnd / moveSpeed) * Time.deltaTime * SetMoveDirection(cameraStartPos.y, cameraEndPos.y); }
private float CalcFlightDistances(float startXPos, float endXPos, float startYPos, float endYPos) { currentXPosition = transform.position.x; currentYPosition = transform.position.y; float xDistStartToEnd = TrigFunctions.FindDistance(startXPos, endXPos); float yDistStartToEnd = TrigFunctions.FindDistance(startYPos, endYPos); return(TrigFunctions.PythagoreanTheorem(xDistStartToEnd, yDistStartToEnd)); }
// Update is called once per frame void FixedUpdate() { currentPos = new Vector3(transform.position.x, transform.position.y, 0f); if (TrigFunctions.PythagoreanTheorem(TrigFunctions.FindDistance(currentPos.x, startingPos.x), TrigFunctions.FindDistance(currentPos.y, startingPos.y)) > (25f * movementFactor)) { Instantiate(trailDot, currentPos, Quaternion.identity, dotsParentTran.transform); startingPos = new Vector3(transform.position.x, transform.position.y, 0f); } }
public void SlopeToBase() { //Arrange var slope = 5.418m; var angle = 26.5651m; var expectedResponse = 4.846m; //Act var response = Math.Round(TrigFunctions.SlopeToBase(slope, angle), 4); //Assert Assert.AreEqual(expectedResponse, response); }
public void BaseToRise() { //Arrange var bayse = 4.21m; var angle = 26.5651m; var expectedResponse = 2.105m; //Act var response = Math.Round(TrigFunctions.BaseToRise(bayse, angle), 4); //Assert Assert.AreEqual(expectedResponse, response); }
public void BaseToSlope() { //Arrange var bayse = 12m; var angle = 26.5651m; var expectedResponse = 13.4164m; //Act var response = Math.Round(TrigFunctions.BaseToSlope(bayse, angle), 4); //Assert Assert.AreEqual(expectedResponse, response); }
public void BaseRiseToSlope() { //Arrange var bayse = 3m; var userRise = 4m; var expectedResponse = 5m; //Act var response = Math.Round(TrigFunctions.BaseRiseToSlope(bayse, userRise), 4); //Assert Assert.AreEqual(expectedResponse, response); }
public void BaseRiseToRadian() { //Arrange var bayse = 12m; var rise = 1m; var expectedRadian = 0.0831m; //Act var radian = Math.Round(TrigFunctions.BaseRiseToRadian(bayse, rise), 4); //Assert Assert.AreEqual(expectedRadian, radian); }
public void RiseToBase() { //Arrange var rise = 1.21m; var angle = 26.5651m; var expectedResponse = 2.42m; //Act var response = Math.Round(TrigFunctions.RiseToBase(rise, angle), 4); //Assert Assert.AreEqual(expectedResponse, response); }
private void Beta_ValueChanged(object sender, RoutedEventArgs e) { try { TbError.Visibility = Visibility.Collapsed; var newb = TrigFunctions.Tan(Beta.Value) * A.Value; var newAlpha = 90 - Beta.Value; if (newAlpha <= 0 || double.IsNaN(newAlpha)) { throw new ArgumentException(); } var newC = Math.Sqrt((newb * newb) + (A.Value * A.Value)); C.SetValue(newC); B.SetValue(newb); Alpha.SetValue(newAlpha); } catch (Exception) { TbError.Visibility = Visibility.Visible; } }
private void Alpha_ValueChanged(object sender, RoutedEventArgs e) { try { TbError.Visibility = Visibility.Collapsed; var newa = TrigFunctions.Tan(Alpha.Value) * B.Value; var newBeta = 90 - Alpha.Value; if (newBeta <= 0 || double.IsNaN(newBeta)) { throw new ArgumentException(); } var newC = Math.Sqrt((B.Value * B.Value) + (newa * newa)); C.SetValue(newC); A.SetValue(newa); Beta.SetValue(newBeta); } catch (Exception) { TbError.Visibility = Visibility.Visible; } }
private void C_ValueChanged(object sender, RoutedEventArgs e) { try { TbError.Visibility = Visibility.Collapsed; var newB = Math.Sqrt((C.Value * C.Value) - (B.Value * B.Value)); var newAlpha = TrigFunctions.ArcSin(newB / C.Value); var newBeta = 90 - newAlpha; if (newBeta <= 0 || double.IsNaN(newBeta)) { throw new ArgumentException(); } B.SetValue(newB); Alpha.SetValue(newAlpha); Beta.SetValue(newBeta); } catch (Exception) { TbError.Visibility = Visibility.Visible; } }