Types/Wave/get_Vector2.ps1
|
<# .SYNOPSIS Gets Wave Vector .DESCRIPTION Gets a Wave as a series of Vectors. We can think of a wave as a series of vectors. Each sample in the wave travels one distance along the X axis, and up or down along the along the Y axis. .NOTES Thinking of waves this way provides some benefits. This will write progress as it calculates and cache the vectors in memory after they are calculated. #> [OutputType([Numerics.Vector2[]])] param() if ($this.'#Vector2') { return ,$this.'#Vector2' } [double[]]$Samples = $this.Samples $lastSample = 0 $progress = [Ordered]@{ Id = Get-Random Activity = "Vectoring" } $sampleRate = $this.SampleRate $SampleCount = $samples.Length [Numerics.Vector2[]]$vector2 = @( for ($index = 0; $index -lt $SampleCount;$index++) { if (-not ($index % 64kb)) { $progress.Status = "$index / $($SampleCount)" $progress.PercentComplete = ($index * 100 / $SampleCount) $progress.SecondsRemaining = (($SampleCount - $index) * (1 / $SampleRate)) Write-Progress @progress } [Numerics.Vector2]::new(1, $samples[$index] - $lastSample) $lastSample = $samples[$index] } ) $this | Add-Member NoteProperty '#Vector2' $vector2 -Force $progress.Remove('PercentComplete') $progress.Completed = $true Write-Progress @progress return ,$vector2 |