Types/Turtle/Leg.ps1

<#
.SYNOPSIS
    Draws a arm or a leg
.DESCRIPTION
    Instructs our Turtle to draw an arm or a leg.

    Each segment of the arm or leg can be considered a pair of vectors.

    Each pair will represent a leg length followed by a leg angle.
.EXAMPLE
    turtle push leg 42 90 42 90 pop push rotate -15 leg 42 90 42 90 pop rotate -30 leg 42 90 42 90
.EXAMPLE
    turtle rotate 90 rotate -15 push leg 21 15 pop rotate 30 push leg 21 -15 pop show
#>

param()

$pairs = @()
$pair = @()
foreach ($arg in $args) {
    if ($arg -is [ValueType]) {
        if ($arg -is [Numerics.Vector2] -or 
            $arg -is [Numerics.Vector3] -or 
            $arg -is [Numerics.Vector4]
        ) {
            $pair += $arg.X
            $pair += $arg.Y
        } else {
            $pair += $arg
        }
        
    }
    elseif ($arg -as [double]) {
        $pair += $arg
    }
    if ($pair.Count -eq 2) {
        $pairs += ,$pair
        $pair = @()
    }
}

foreach ($pair in $pairs) {
    $this = $this.Forward($pair[0]).Rotate($pair[1])
}
return $this