135 lines
3.5 KiB
Plaintext
135 lines
3.5 KiB
Plaintext
<#
|
|
.Synopsis
|
|
Gets the difference between two angles between the values of -180 and 180.
|
|
To see examples use "Get-Examples"
|
|
.DESCRIPTION
|
|
This code uses the modulo operator, this is represented with the "%".
|
|
The modulo operator returns the remainder after division, as displayed below
|
|
3 % 2 = 1
|
|
20 % 15 = 5
|
|
200 % 146 = 54
|
|
|
|
.EXAMPLE
|
|
PS C:\WINDOWS\system32> Get-AngleDiff
|
|
cmdlet Get-AngleDiff at command pipeline position 1
|
|
Supply values for the following parameters:
|
|
angle1: 45
|
|
angle2: -85
|
|
|
|
The difference between 45 and -85 is -130
|
|
|
|
PS C:\WINDOWS\system32>
|
|
|
|
.EXAMPLE
|
|
PS C:\WINDOWS\system32> Get-AngleDiff -angle1 50 -angle2 -65
|
|
|
|
The difference between 50 and -65 is -115
|
|
|
|
PS C:\WINDOWS\system32>
|
|
|
|
.EXAMPLE
|
|
PS C:\WINDOWS\system32> Get-AngleDiff -89 50
|
|
|
|
The difference between -89 and 50 is 139
|
|
|
|
PS C:\WINDOWS\system32>
|
|
|
|
|
|
#>
|
|
function Get-AngleDiff
|
|
{
|
|
[CmdletBinding()]
|
|
|
|
Param
|
|
(
|
|
# Angle one input, must be a number
|
|
[Parameter(Mandatory=$true,
|
|
ValueFromPipelineByPropertyName=$true)][double]$angle1,
|
|
|
|
# Angle two input, must be a number
|
|
[Parameter(Mandatory=$true,
|
|
ValueFromPipelineByPropertyName=$true)][double]$angle2
|
|
)
|
|
|
|
Begin
|
|
{
|
|
#This is the equation to calculate the difference
|
|
[double]$Difference = ($angle2 - $angle1) % 360.0
|
|
}
|
|
|
|
Process
|
|
{
|
|
#If/IfElse/Else block to return results within the requested range
|
|
if ($Difference -lt -180.0)
|
|
{$Difference += 360.0
|
|
}
|
|
|
|
elseif ($Difference -gt 360.0)
|
|
{$Difference -= 360.0
|
|
}
|
|
|
|
#Writes the values given by the user and the result
|
|
Write-Host "The difference between $angle1 and $angle2 is $Difference"
|
|
}
|
|
|
|
End
|
|
{
|
|
}
|
|
|
|
}
|
|
|
|
<#
|
|
.Synopsis
|
|
This is simply the outputs of the Get-AngleDiff Function in a function
|
|
.EXAMPLE
|
|
PS C:\WINDOWS\system32> Get-Examples
|
|
|
|
Inputs from the -180 to 180 range
|
|
The difference between 20 and 45 is 25
|
|
The difference between -45 and 45 is 90
|
|
The difference between -85 and 90 is 175
|
|
The difference between -95 and 90 is 185
|
|
The difference between -45 and 125 is 170
|
|
The difference between -45 and 145 is 190
|
|
The difference between -45 and 125 is 170
|
|
The difference between -45 and 145 is 190
|
|
The difference between 29.4803 and -88.6381 is -118.1184
|
|
The difference between -78.3251 and -159.036 is -80.7109
|
|
|
|
Inputs from a wider range
|
|
The difference between -70099.7423381094 and 29840.6743787672 is 220.416716876614
|
|
The difference between -165313.666629736 and 33693.9894517456 is 287.656081481313
|
|
The difference between 1174.83805105985 and -154146.664901248 is -161.502952307404
|
|
The difference between 60175.7730679555 and 42213.0719235437 is 37.2988555882694
|
|
|
|
PS C:\WINDOWS\system32>
|
|
#>
|
|
|
|
function Get-Examples
|
|
{
|
|
#blank write-host is used for a blank line to make the output look a lil cleaner
|
|
Write-Host
|
|
Write-Host "Inputs from the -180 to 180 range"
|
|
|
|
Get-AngleDiff 20.0 45.0
|
|
Get-AngleDiff -45.0 45.0
|
|
Get-AngleDiff -85.0 90.0
|
|
Get-AngleDiff -95.0 90.0
|
|
Get-AngleDiff -45.0 125.0
|
|
Get-AngleDiff -45.0 145.0
|
|
Get-AngleDiff -45.0 125.0
|
|
Get-AngleDiff -45.0 145.0
|
|
Get-AngleDiff 29.4803 -88.6381
|
|
Get-AngleDiff -78.3251 -159.036
|
|
|
|
Write-Host
|
|
Write-Host "Inputs from a wider range"
|
|
|
|
Get-AngleDiff -70099.74233810938 29840.67437876723
|
|
Get-AngleDiff -165313.6666297357 33693.9894517456
|
|
Get-AngleDiff 1174.8380510598456 -154146.66490124757
|
|
Get-AngleDiff 60175.77306795546 42213.07192354373
|
|
|
|
|
|
}
|