Get-TriangleArea.ps1

function Get-TriangleArea
{
    <#
    .Synopsis
        Gets the area of a triangle
    .Description
        Gets the area of a triangle, by solving the following equation:
         
        S = 1/2 * base * height
    #>

    [CmdletBinding(DefaultParameterSetName='TriangleAreaByBaseAndHeight')]
    param(
    # The base of the triangle
    [Parameter(Mandatory=$true,ParameterSetName='TriangleAreaByBaseAndHeight')]
    [Double]
    $Base,
    
    # The height of the triangle
    [Parameter(Mandatory=$true,ParameterSetName='TriangleAreaByBaseAndHeight')]   
    [Double]
    $Height,
    
    # The length of side A.
    [Parameter(Mandatory=$true,ParameterSetName='TriangleAreaByTwoSidesAndAnAngle')]   
    [Double]
    $LengthOfSideA,      
    
    # The length of side B
    [Parameter(Mandatory=$true,ParameterSetName='TriangleAreaByTwoSidesAndAnAngle')]   
    [Double]
    $LengthOfSideB,
    
    # The angle of C, in radians (unless -InDegrees is also set)
    [Parameter(Mandatory=$true,ParameterSetName='TriangleAreaByTwoSidesAndAnAngle')]   
    [Double]
    $AngleC,      
    
    # If set, angles will be in degrees
    [Parameter(ParameterSetName='TriangleAreaByTwoSidesAndAnAngle')]   
    [Switch]
    $InDegrees
    )
    
    process {
        if ($psCmdlet.ParameterSetName -eq 'TriangleAreaByBaseAndHeight') {
Invoke-Equation {
# S = 1/2 b h
$triangleArea = (1/2) * $Base * $Height
} -ShowWork:$ShowWork        
        } elseif ($psCmdlet.ParameterSetName -eq 'TriangleAreaByTwoSidesAndAnAngle') {
if ($InDegrees) {
Invoke-Equation {
# Convert Angle C into radians
$AngleCInRadians = $AngleC * ([Math]::PI / 180)
# S = 1/2 ab Sin(c)
$triangleArea = (1/2) * $LengthOfSideA* $LengthOfSideB * [Math]::Sin($AngleCInRadians)
} -ShowWork:$ShowWork        

} else {  
Invoke-Equation {
# S = 1/2 ab Sin(c)
$triangleArea = (1/2) * $LengthOfSideA* $LengthOfSideB * [Math]::Sin($AngleC)
} -ShowWork:$ShowWork        

}
        
        }
        
    }
}