logancberrypie

SuvatSolvers

Sep 1st, 2017
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.15 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class SuvatSolvers {
  6.  
  7.     public static Particle FindEquation(Particle values)
  8.     {
  9.         Debug.Log("Find equation ran");
  10.         int i =0;
  11.         var Equations = new Dictionary<string, System.Action>
  12.             {
  13.                 { "01011", () => RanOn_01011(values, i) },
  14.                 { "01101", () => RanOn_01101(values, i) },
  15.                 { "01111", () => RanOn_01111(values, i) },
  16.                 { "10011", () => RanOn_10011(values, i) },
  17.                 { "10101", () => RanOn_10101(values, i) },
  18.                 { "10110", () => RanOn_10110(values, i) },
  19.                 { "10111", () => RanOn_10111(values, i) },
  20.                 { "11001", () => RanOn_11001(values, i) },
  21.                 { "11010", () => RanOn_11010(values, i) },
  22.                 { "11011", () => RanOn_11011(values, i) },
  23.                 { "11100", () => RanOn_11100(values, i) },
  24.                 { "11101", () => RanOn_11101(values, i) },
  25.                 { "11110", () => RanOn_11110(values, i) },
  26.             };
  27.         for (i = 0; i < 3; i++)
  28.         {
  29.             Debug.Log("i = " + i);
  30.             values.inValidInput = false;
  31.             while (values.GetNumberOfInputs()[i] != values.Key[i].Length && values.inValidInput == false)
  32.             {
  33.                 try
  34.                 {
  35.                     Equations[values.Key[i]]();
  36.                 }
  37.                 catch (KeyNotFoundException e)
  38.                 {
  39.                     Debug.Log("Suvat input not in dictionary :" + values.Key[i]);
  40.                     values.inValidInput = true;
  41.                 }
  42.             }
  43.         }
  44.         return values;
  45.     }
  46.  
  47.  
  48.     // s = ut + 1/2 * a * t^2
  49.     public static void RanOn_01011(Particle values,int i)
  50.     {
  51.         values.Displacement[i] = values.InitialVelociy[i] * values.Time + 0.5f * values.Acceleration[i] * Mathf.Pow(values.Time, 2);
  52.         values.Key[i] = ReplaceAtIndex(0, '1', values.Key[i]);
  53.     }
  54.     // s = 1/2 (u + v) t
  55.     public static void RanOn_01101(Particle values, int i)
  56.     {
  57.         values.Displacement[i] = 0.5f * (values.InitialVelociy[i] + values.FinalVelocity[i]) * values.Time;
  58.         values.Key[i] = ReplaceAtIndex(0, '1', values.Key[i]);
  59.     }
  60.  
  61.     //Uses 01101
  62.     public static void RanOn_01111(Particle values, int i)
  63.     {
  64.         RanOn_01101(values,i);
  65.     }
  66.     // s = ut + 1/2 * a * t^2 rearranged for u
  67.     public static void RanOn_10011(Particle values, int i)
  68.     {
  69.         if (values.Time == 0)
  70.         {
  71.             values.inValidInput = true;
  72.         }
  73.         else
  74.         {
  75.             values.InitialVelociy[i] = (values.Displacement[i] / values.Time) - 0.5f * (values.Acceleration[i] * values.Time);
  76.             values.Key[i] = ReplaceAtIndex(1, '1', values.Key[i]);
  77.         }
  78.  
  79.     }
  80.     // s = 1/2 (u + v)t rearranged for u
  81.     public static void RanOn_10101(Particle values, int i)
  82.     {
  83.         if (values.Time == 0)
  84.         {
  85.             values.inValidInput = true;
  86.         }
  87.         else
  88.         {
  89.             values.InitialVelociy[i] = 2 * (values.Displacement[i] / values.Time) - values.FinalVelocity[i];
  90.             values.Key[i] = ReplaceAtIndex(1, '1', values.Key[i]);
  91.         }
  92.     }
  93.     // V^2 = u^2 + 2as reaaragned for u
  94.     public static void RanOn_10110(Particle values, int i)
  95.     {
  96.         float InsideRoot = Mathf.Pow(values.FinalVelocity[i], 2) - 2 * values.Acceleration[i] * values.Displacement[i];
  97.         if (InsideRoot < 0)
  98.         {
  99.             values.inValidInput = true;
  100.         }
  101.         else
  102.         {
  103.             values.InitialVelociy[i] = Mathf.Sqrt(InsideRoot);
  104.             values.Key[i] = ReplaceAtIndex(1, '1', values.Key[i]);
  105.         }
  106.     }
  107.     //v = u + at , rearranged for u
  108.     public static void RanOn_10111(Particle values, int i)
  109.     {
  110.         values.InitialVelociy[i] = values.FinalVelocity[i] - values.Acceleration[i] * values.Time;
  111.         values.Key[i] = ReplaceAtIndex(1, '1', values.Key[i]);
  112.     }
  113.  
  114.     //s = 0.5 * *u+v)t , rearranged for v
  115.     public static void RanOn_11001(Particle values, int i)
  116.     {
  117.         if (values.Time == 0)
  118.         {
  119.             values.inValidInput = true;
  120.         }
  121.         else
  122.         {
  123.             values.FinalVelocity[i] = 2 * (values.Displacement[i] / values.Time) - values.InitialVelociy[i];
  124.             values.Key[i] = ReplaceAtIndex(2, '1', values.Key[i]);
  125.  
  126.         }
  127.     }
  128.     // V^2 = u^2 + 2as
  129.     public static void RanOn_11010(Particle values, int i)
  130.     {
  131.         float insideRoot = Mathf.Pow(values.InitialVelociy[i], 2) + 2 * values.Acceleration[i] * values.Displacement[i];
  132.         if (insideRoot < 0)
  133.         {
  134.             values.inValidInput = true;
  135.         }
  136.         else
  137.         {
  138.             values.FinalVelocity[i] = Mathf.Sqrt(insideRoot);
  139.             values.Key[i] = ReplaceAtIndex(1, '1', values.Key[i]);
  140.         }
  141.     }
  142.     //V = u + at
  143.     public static void RanOn_11011(Particle values, int i)
  144.     {
  145.         values.FinalVelocity[i] = values.InitialVelociy[i] + values.Acceleration[i] * values.Time;
  146.         values.Key[i] = ReplaceAtIndex(2, '1', values.Key[i]);
  147.     }
  148.     // V^2 = u^2 + 2as reaaragned for a
  149.     public static void RanOn_11100(Particle values, int i)
  150.     {
  151.         if (values.Displacement[i] == 0)
  152.         {
  153.             values.inValidInput = true;
  154.         }
  155.         else
  156.         {
  157.             values.Acceleration[i] = (Mathf.Pow(values.FinalVelocity[i], 2) - Mathf.Pow(values.InitialVelociy[i], 2)) / (2 * values.Displacement[i]);
  158.             values.Key[i] = ReplaceAtIndex(3, '1', values.Key[i]);
  159.         }
  160.     }
  161.     //V = u + at , rearranged for a
  162.     public static void RanOn_11101(Particle values, int i)
  163.     {
  164.         if (values.Time == 0)
  165.         {
  166.             values.inValidInput = true;
  167.         }
  168.         else
  169.         {
  170.             values.Acceleration[i] = (values.FinalVelocity[i] - values.InitialVelociy[i]) / values.Time;
  171.             values.Key[i] = ReplaceAtIndex(3, '1', values.Key[i]);
  172.         }
  173.     }
  174.     //V = u + at , rearranged for t
  175.     public static void RanOn_11110(Particle values, int i)
  176.     {
  177.         if (values.Acceleration[i] == 0)
  178.         {
  179.             if (values.InitialVelociy[i] + values.FinalVelocity[i] != 0)
  180.             {
  181.                 values.Time = 2 * values.Displacement[i] / (values.InitialVelociy[i] + values.FinalVelocity[i]);
  182.             }
  183.             else
  184.             {
  185.                 values.inValidInput = true;
  186.             }
  187.            
  188.         }
  189.         else
  190.         {
  191.             values.Time = (values.FinalVelocity[i] - values.InitialVelociy[i]) / values.Acceleration[i];
  192.             values.Key[0] = ReplaceAtIndex(4, '1', values.Key[0]);
  193.             values.Key[1] = ReplaceAtIndex(4, '1', values.Key[1]);
  194.             values.Key[2] = ReplaceAtIndex(4, '1', values.Key[2]);
  195.         }
  196.     }
  197.  
  198.     public static string ReplaceAtIndex(int index, char value, string word)
  199.     {
  200.         try
  201.         {
  202.             char[] letters = word.ToCharArray();
  203.             letters[index] = value;
  204.             return new string(letters);
  205.         }
  206.         catch
  207.         {
  208.             return "";
  209.         }
  210.  
  211.     }
  212.  
  213.  
  214.  
  215. }
Advertisement
Add Comment
Please, Sign In to add comment