Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class SuvatSolvers {
- public static Particle FindEquation(Particle values)
- {
- Debug.Log("Find equation ran");
- int i =0;
- var Equations = new Dictionary<string, System.Action>
- {
- { "01011", () => RanOn_01011(values, i) },
- { "01101", () => RanOn_01101(values, i) },
- { "01111", () => RanOn_01111(values, i) },
- { "10011", () => RanOn_10011(values, i) },
- { "10101", () => RanOn_10101(values, i) },
- { "10110", () => RanOn_10110(values, i) },
- { "10111", () => RanOn_10111(values, i) },
- { "11001", () => RanOn_11001(values, i) },
- { "11010", () => RanOn_11010(values, i) },
- { "11011", () => RanOn_11011(values, i) },
- { "11100", () => RanOn_11100(values, i) },
- { "11101", () => RanOn_11101(values, i) },
- { "11110", () => RanOn_11110(values, i) },
- };
- for (i = 0; i < 3; i++)
- {
- Debug.Log("i = " + i);
- values.inValidInput = false;
- while (values.GetNumberOfInputs()[i] != values.Key[i].Length && values.inValidInput == false)
- {
- try
- {
- Equations[values.Key[i]]();
- }
- catch (KeyNotFoundException e)
- {
- Debug.Log("Suvat input not in dictionary :" + values.Key[i]);
- values.inValidInput = true;
- }
- }
- }
- return values;
- }
- // s = ut + 1/2 * a * t^2
- public static void RanOn_01011(Particle values,int i)
- {
- values.Displacement[i] = values.InitialVelociy[i] * values.Time + 0.5f * values.Acceleration[i] * Mathf.Pow(values.Time, 2);
- values.Key[i] = ReplaceAtIndex(0, '1', values.Key[i]);
- }
- // s = 1/2 (u + v) t
- public static void RanOn_01101(Particle values, int i)
- {
- values.Displacement[i] = 0.5f * (values.InitialVelociy[i] + values.FinalVelocity[i]) * values.Time;
- values.Key[i] = ReplaceAtIndex(0, '1', values.Key[i]);
- }
- //Uses 01101
- public static void RanOn_01111(Particle values, int i)
- {
- RanOn_01101(values,i);
- }
- // s = ut + 1/2 * a * t^2 rearranged for u
- public static void RanOn_10011(Particle values, int i)
- {
- if (values.Time == 0)
- {
- values.inValidInput = true;
- }
- else
- {
- values.InitialVelociy[i] = (values.Displacement[i] / values.Time) - 0.5f * (values.Acceleration[i] * values.Time);
- values.Key[i] = ReplaceAtIndex(1, '1', values.Key[i]);
- }
- }
- // s = 1/2 (u + v)t rearranged for u
- public static void RanOn_10101(Particle values, int i)
- {
- if (values.Time == 0)
- {
- values.inValidInput = true;
- }
- else
- {
- values.InitialVelociy[i] = 2 * (values.Displacement[i] / values.Time) - values.FinalVelocity[i];
- values.Key[i] = ReplaceAtIndex(1, '1', values.Key[i]);
- }
- }
- // V^2 = u^2 + 2as reaaragned for u
- public static void RanOn_10110(Particle values, int i)
- {
- float InsideRoot = Mathf.Pow(values.FinalVelocity[i], 2) - 2 * values.Acceleration[i] * values.Displacement[i];
- if (InsideRoot < 0)
- {
- values.inValidInput = true;
- }
- else
- {
- values.InitialVelociy[i] = Mathf.Sqrt(InsideRoot);
- values.Key[i] = ReplaceAtIndex(1, '1', values.Key[i]);
- }
- }
- //v = u + at , rearranged for u
- public static void RanOn_10111(Particle values, int i)
- {
- values.InitialVelociy[i] = values.FinalVelocity[i] - values.Acceleration[i] * values.Time;
- values.Key[i] = ReplaceAtIndex(1, '1', values.Key[i]);
- }
- //s = 0.5 * *u+v)t , rearranged for v
- public static void RanOn_11001(Particle values, int i)
- {
- if (values.Time == 0)
- {
- values.inValidInput = true;
- }
- else
- {
- values.FinalVelocity[i] = 2 * (values.Displacement[i] / values.Time) - values.InitialVelociy[i];
- values.Key[i] = ReplaceAtIndex(2, '1', values.Key[i]);
- }
- }
- // V^2 = u^2 + 2as
- public static void RanOn_11010(Particle values, int i)
- {
- float insideRoot = Mathf.Pow(values.InitialVelociy[i], 2) + 2 * values.Acceleration[i] * values.Displacement[i];
- if (insideRoot < 0)
- {
- values.inValidInput = true;
- }
- else
- {
- values.FinalVelocity[i] = Mathf.Sqrt(insideRoot);
- values.Key[i] = ReplaceAtIndex(1, '1', values.Key[i]);
- }
- }
- //V = u + at
- public static void RanOn_11011(Particle values, int i)
- {
- values.FinalVelocity[i] = values.InitialVelociy[i] + values.Acceleration[i] * values.Time;
- values.Key[i] = ReplaceAtIndex(2, '1', values.Key[i]);
- }
- // V^2 = u^2 + 2as reaaragned for a
- public static void RanOn_11100(Particle values, int i)
- {
- if (values.Displacement[i] == 0)
- {
- values.inValidInput = true;
- }
- else
- {
- values.Acceleration[i] = (Mathf.Pow(values.FinalVelocity[i], 2) - Mathf.Pow(values.InitialVelociy[i], 2)) / (2 * values.Displacement[i]);
- values.Key[i] = ReplaceAtIndex(3, '1', values.Key[i]);
- }
- }
- //V = u + at , rearranged for a
- public static void RanOn_11101(Particle values, int i)
- {
- if (values.Time == 0)
- {
- values.inValidInput = true;
- }
- else
- {
- values.Acceleration[i] = (values.FinalVelocity[i] - values.InitialVelociy[i]) / values.Time;
- values.Key[i] = ReplaceAtIndex(3, '1', values.Key[i]);
- }
- }
- //V = u + at , rearranged for t
- public static void RanOn_11110(Particle values, int i)
- {
- if (values.Acceleration[i] == 0)
- {
- if (values.InitialVelociy[i] + values.FinalVelocity[i] != 0)
- {
- values.Time = 2 * values.Displacement[i] / (values.InitialVelociy[i] + values.FinalVelocity[i]);
- }
- else
- {
- values.inValidInput = true;
- }
- }
- else
- {
- values.Time = (values.FinalVelocity[i] - values.InitialVelociy[i]) / values.Acceleration[i];
- values.Key[0] = ReplaceAtIndex(4, '1', values.Key[0]);
- values.Key[1] = ReplaceAtIndex(4, '1', values.Key[1]);
- values.Key[2] = ReplaceAtIndex(4, '1', values.Key[2]);
- }
- }
- public static string ReplaceAtIndex(int index, char value, string word)
- {
- try
- {
- char[] letters = word.ToCharArray();
- letters[index] = value;
- return new string(letters);
- }
- catch
- {
- return "";
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment