/
KinematicEquations.ps1
103 lines (99 loc) · 1.67 KB
/
KinematicEquations.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
param(
[float] $distance,
[float] $acc,
[float] $time,
[float] $vi, # initial velocity
[float] $vf # final velocity
)
function Round($num)
{
[Math]::Round($num, 1)
}
function HalfATSquared($acc, $time)
{
($acc * $time * $time * 0.5);
}
if($distance -eq $null)
{
if($acc -eq $null)
{
$distance = ($vi + $vf) * 0.5 * $time;
}
elseif($time -eq $null)
{
$distance = (($vf * $vf) - ($vi * $vi)) / (2 * $acc);
}
elseif($vi -eq $null)
{
$distance = ($vf * $time) - (HalfATSquared $acc $time)
}
elseif($vf -eq $null)
{
$distance = ($vi * $time) + (HalfATSquared $acc $time)
}
else
{
$distance = 0.5 * ($vi + $vf) * $time;
}
}
if($acc -eq $null)
{
if($time -eq $null)
{
$acc = (($vf * $vf) - ($vi * $vi)) / (2 * $distance)
}
elseif($vi -eq $null)
{
$acc = 2 * ($vf - ($distance / $time)) / $time
}
elseif($vf -eq $null)
{
$acc = 2 * (($distance / $time) - $vi) / $time
}
else
{
$acc = ($vf - $vi) / $time;
}
}
if($time -eq $null)
{
if($vi -eq $null)
{
$time = (./QuadraticFormula.ps1 $acc (-2 * $vf) (2 * $distance))[0];
}
elseif($vf -eq $null)
{
$time = (./QuadraticFormula.ps1 $acc (-2 * $vi) (-2 * $distance))[0];
}
else
{
if($acc -eq 0)
{
$time = $distance / $vi;
}
else
{
$time = ($vf - $vi) / $acc;
}
}
}
if($vi -eq $null)
{
if($vf -eq $null)
{
$vi = ($distance - (HalfATSquared $acc $time)) / $time;
}
else
{
$vi = $vf - ($acc * $time);
}
}
if($vf -eq $null)
{
$vf = $vi + ($acc * $time);
}
"Distance $([Math]::Round($distance, 1)) m";
"Acceleration $([Math]::Round($acc, 1)) m/s/s";
"Time $([Math]::Round($time, 1)) s";
"Initial Velocity $([Math]::Round($vi, 1)) m/s";
"Final Velocity $([Math]::Round($vf, 1)) m/s";