From d6795fc3af5d52ec03cc136573409c0c94d38969 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Wed, 3 Sep 2025 18:38:58 -0700 Subject: [PATCH 001/125] feat: `Turtle.get/set_Turtles` ( Fixes #207 ) --- Types/Turtle/get_Turtles.ps1 | 35 +++++++++++++++++++++++++++ Types/Turtle/set_Turtles.ps1 | 46 ++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 Types/Turtle/get_Turtles.ps1 create mode 100644 Types/Turtle/set_Turtles.ps1 diff --git a/Types/Turtle/get_Turtles.ps1 b/Types/Turtle/get_Turtles.ps1 new file mode 100644 index 0000000..a3e5342 --- /dev/null +++ b/Types/Turtle/get_Turtles.ps1 @@ -0,0 +1,35 @@ +<# +.SYNOPSIS + Gets a Turtle's Turtles +.DESCRIPTION + Gets the Turtles contained within a Turtle object. + + These turtles may also contain turtles... + which may also contain turtles... + which may also contain turtles... + which may also contain turtles... + all the way down. +.EXAMPLE + turtle square 42 turtles @{ + circle = turtle circle 21 + } save ./InscribedSquare.svg + +.EXAMPLE + turtle square 42 turtles @{ + square = + turtle teleport 4 4 square 34 turtles @{ + square = turtle teleport 8 8 square 26 turtles @{ + square = turtle teleport 8 8 square 26 turtles @{ + square = turtle teleport 12 12 square 18 turtles @{ + square = turtle teleport 16 16 square 10 + } + } + } + } + } save ./SquaresWithinSquares.svg +#> +if ($this -and -not $this.'.Turtles') { + $this | Add-Member NoteProperty '.Turtles' ([Ordered]@{}) -Force +} + +return $this.'.Turtles' \ No newline at end of file diff --git a/Types/Turtle/set_Turtles.ps1 b/Types/Turtle/set_Turtles.ps1 new file mode 100644 index 0000000..d90d925 --- /dev/null +++ b/Types/Turtle/set_Turtles.ps1 @@ -0,0 +1,46 @@ +<# +.SYNOPSIS + Sets a Turtle's Turtles +.DESCRIPTION + Sets the Turtles contained within a Turtle object. + + These turtles may also contain turtles... + which may also contain turtles... + which may also contain turtles... + which may also contain turtles... + all the way down. +.EXAMPLE + turtle square 42 turtles @{ + circle = turtle circle 21 + } save ./InscribedSquare.svg +.EXAMPLE + turtle square 42 turtles @{ + square = + turtle teleport 4 4 square 34 turtles @{ + square = turtle teleport 8 8 square 26 turtles @{ + square = turtle teleport 8 8 square 26 turtles @{ + square = turtle teleport 12 12 square 18 turtles @{ + square = turtle teleport 16 16 square 10 + } + } + } + } + } save ./SquaresWithinSquares.svg +#> +param( +$Value +) + +if ($this -and -not $this.'.Turtles') { + $this | Add-Member NoteProperty '.Turtles' ([Ordered]@{}) -Force +} + +if ($value -is [Collections.IDictionary]) { + foreach ($key in $value.Keys) { + $this.'.Turtles'[$key] = $Value[$key] + } +} elseif ($value.pstypenames -contains 'Turtle') { + $this.'.Turtles'["Turtle$($this.'.Turtles'.Count + 1)"] = $value +} + +return $this.'.Turtles' \ No newline at end of file From ac999c2f5a8717fd93ad94c2b08f485f21022c99 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Thu, 4 Sep 2025 01:39:24 +0000 Subject: [PATCH 002/125] feat: `Turtle.get/set_Turtles` ( Fixes #207 ) --- Turtle.types.ps1xml | 88 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/Turtle.types.ps1xml b/Turtle.types.ps1xml index 7fd0c7b..3375d26 100644 --- a/Turtle.types.ps1xml +++ b/Turtle.types.ps1xml @@ -3749,6 +3749,94 @@ if ($this.Text) { + + Turtles + + <# +.SYNOPSIS + Gets a Turtle's Turtles +.DESCRIPTION + Gets the Turtles contained within a Turtle object. + + These turtles may also contain turtles... + which may also contain turtles... + which may also contain turtles... + which may also contain turtles... + all the way down. +.EXAMPLE + turtle square 42 turtles @{ + circle = turtle circle 21 + } save ./InscribedSquare.svg + +.EXAMPLE + turtle square 42 turtles @{ + square = + turtle teleport 4 4 square 34 turtles @{ + square = turtle teleport 8 8 square 26 turtles @{ + square = turtle teleport 8 8 square 26 turtles @{ + square = turtle teleport 12 12 square 18 turtles @{ + square = turtle teleport 16 16 square 10 + } + } + } + } + } save ./SquaresWithinSquares.svg +#> +if ($this -and -not $this.'.Turtles') { + $this | Add-Member NoteProperty '.Turtles' ([Ordered]@{}) -Force +} + +return $this.'.Turtles' + + + <# +.SYNOPSIS + Sets a Turtle's Turtles +.DESCRIPTION + Sets the Turtles contained within a Turtle object. + + These turtles may also contain turtles... + which may also contain turtles... + which may also contain turtles... + which may also contain turtles... + all the way down. +.EXAMPLE + turtle square 42 turtles @{ + circle = turtle circle 21 + } save ./InscribedSquare.svg +.EXAMPLE + turtle square 42 turtles @{ + square = + turtle teleport 4 4 square 34 turtles @{ + square = turtle teleport 8 8 square 26 turtles @{ + square = turtle teleport 8 8 square 26 turtles @{ + square = turtle teleport 12 12 square 18 turtles @{ + square = turtle teleport 16 16 square 10 + } + } + } + } + } save ./SquaresWithinSquares.svg +#> +param( +$Value +) + +if ($this -and -not $this.'.Turtles') { + $this | Add-Member NoteProperty '.Turtles' ([Ordered]@{}) -Force +} + +if ($value -is [Collections.IDictionary]) { + foreach ($key in $value.Keys) { + $this.'.Turtles'[$key] = $Value[$key] + } +} elseif ($value.pstypenames -contains 'Turtle') { + $this.'.Turtles'["Turtle$($this.'.Turtles'.Count + 1)"] = $value +} + +return $this.'.Turtles' + + ViewBox From 8c93b1c9f4e9f554f03fd7f45a8395253748543e Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Wed, 3 Sep 2025 19:08:18 -0700 Subject: [PATCH 003/125] feat: `Turtle.get_SVG` supports children ( Fixes #209 ) --- Types/Turtle/get_Pattern.ps1 | 5 ++--- Types/Turtle/get_SVG.ps1 | 27 ++++++++++++++++++++++++++- Types/Turtle/get_Symbol.ps1 | 3 +-- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/Types/Turtle/get_Pattern.ps1 b/Types/Turtle/get_Pattern.ps1 index 5a05e6e..d4c8454 100644 --- a/Types/Turtle/get_Pattern.ps1 +++ b/Types/Turtle/get_Pattern.ps1 @@ -12,10 +12,9 @@ $null, $null, $viewX, $viewY = $viewBox }) -join ' ' ) + "'" } - )>" + )>" $(if ($this.PatternAnimation) { $this.PatternAnimation }) - $this.PathElement.OuterXml - $this.TextElement.OuterXml + $($this.SVG.SVG.InnerXML) "" "" $( diff --git a/Types/Turtle/get_SVG.ps1 b/Types/Turtle/get_SVG.ps1 index 5dddfa2..3d6b74c 100644 --- a/Types/Turtle/get_SVG.ps1 +++ b/Types/Turtle/get_SVG.ps1 @@ -1,7 +1,32 @@ param() @( "" + # Output our own path $this.PathElement.OuterXml - $this.TextElement.OuterXml + # Followed by any text elements + $this.TextElement.OuterXml + + # If the turtle has children + $children = @(foreach ($turtleName in $this.Turtles.Keys) { + # make sure they're actually turtles + if ($this.Turtles[$turtleName].pstypenames -notcontains 'Turtle') { continue } + # and then set their IDs + $childTurtle = $this.Turtles[$turtleName] + $childTurtle.ID = "$($this.ID)-$turtleName" + $childTurtle + }) + # If we have any children + if ($children) { + # put them in a group containing their children + "" + foreach ($child in $children) { + # and ask for this child's inner XML + # (which would contain any of its children) + # (and their children's children) + # and so on. + $child.SVG.SVG.InnerXML + } + "" + } "" ) -join '' -as [xml] \ No newline at end of file diff --git a/Types/Turtle/get_Symbol.ps1 b/Types/Turtle/get_Symbol.ps1 index f29d10f..e028799 100644 --- a/Types/Turtle/get_Symbol.ps1 +++ b/Types/Turtle/get_Symbol.ps1 @@ -16,8 +16,7 @@ param() @( "" "" - $this.PathElement.OuterXml - $this.TextElement.OuterXml + $($this.SVG.OuterXml) "" $( if ($this.BackgroundColor) { From 33a7702641f438697f4b1eba81a5ced7e43b6cce Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Thu, 4 Sep 2025 02:08:50 +0000 Subject: [PATCH 004/125] feat: `Turtle.get_SVG` supports children ( Fixes #209 ) --- Turtle.types.ps1xml | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/Turtle.types.ps1xml b/Turtle.types.ps1xml index 3375d26..f85153c 100644 --- a/Turtle.types.ps1xml +++ b/Turtle.types.ps1xml @@ -3264,10 +3264,9 @@ $null, $null, $viewX, $viewY = $viewBox }) -join ' ' ) + "'" } - )>" + )>" $(if ($this.PatternAnimation) { $this.PatternAnimation }) - $this.PathElement.OuterXml - $this.TextElement.OuterXml + $($this.SVG.SVG.InnerXML) "</pattern>" "</defs>" $( @@ -3550,8 +3549,33 @@ $this | Add-Member -MemberType NoteProperty -Force -Name '.StrokeWidth' -Value $ param() @( "<svg xmlns='http://www.w3.org/2000/svg' viewBox='$($this.ViewBox)' transform-origin='50% 50%' width='100%' height='100%'>" + # Output our own path $this.PathElement.OuterXml - $this.TextElement.OuterXml + # Followed by any text elements + $this.TextElement.OuterXml + + # If the turtle has children + $children = @(foreach ($turtleName in $this.Turtles.Keys) { + # make sure they're actually turtles + if ($this.Turtles[$turtleName].pstypenames -notcontains 'Turtle') { continue } + # and then set their IDs + $childTurtle = $this.Turtles[$turtleName] + $childTurtle.ID = "$($this.ID)-$turtleName" + $childTurtle + }) + # If we have any children + if ($children) { + # put them in a group containing their children + "<g id='$($this.ID)-children'>" + foreach ($child in $children) { + # and ask for this child's inner XML + # (which would contain any of its children) + # (and their children's children) + # and so on. + $child.SVG.SVG.InnerXML + } + "</g>" + } "</svg>" ) -join '' -as [xml] @@ -3577,8 +3601,7 @@ param() @( "<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' transform-origin='50% 50%'>" "<symbol id='$($this.ID)-symbol' viewBox='$($this.ViewBox)' transform-origin='50% 50%'>" - $this.PathElement.OuterXml - $this.TextElement.OuterXml + $($this.SVG.OuterXml) "</symbol>" $( if ($this.BackgroundColor) { From 96e622442369a057cca22b68f74cd4c5e92f98b4 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Thu, 4 Sep 2025 02:09:18 +0000 Subject: [PATCH 005/125] feat: `Turtle.get_SVG` supports children ( Fixes #209 ) --- Examples/BoxFractal.svg | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Examples/BoxFractal.svg b/Examples/BoxFractal.svg index a3771ef..032383e 100644 --- a/Examples/BoxFractal.svg +++ b/Examples/BoxFractal.svg @@ -1,7 +1,9 @@ - - + + + + \ No newline at end of file From be167480953ba8338bd8c607ac69c9e1e0b00fe0 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Thu, 4 Sep 2025 02:09:19 +0000 Subject: [PATCH 006/125] feat: `Turtle.get_SVG` supports children ( Fixes #209 ) --- Examples/EndlessBoxFractal.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Examples/EndlessBoxFractal.svg b/Examples/EndlessBoxFractal.svg index 7134fff..2346aba 100644 --- a/Examples/EndlessBoxFractal.svg +++ b/Examples/EndlessBoxFractal.svg @@ -6,7 +6,7 @@ - + From 51193e41cf43a9894fbd8b4b3288fecd6b2a69d6 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Thu, 4 Sep 2025 02:09:19 +0000 Subject: [PATCH 007/125] feat: `Turtle.get_SVG` supports children ( Fixes #209 ) --- Examples/EndlessHilbert.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Examples/EndlessHilbert.svg b/Examples/EndlessHilbert.svg index 6243f0d..387fd1e 100644 --- a/Examples/EndlessHilbert.svg +++ b/Examples/EndlessHilbert.svg @@ -6,7 +6,7 @@ - + From da64d8f78287812ecc81dbe5f4a1fa2e6b7a1d5f Mon Sep 17 00:00:00 2001 From: James Brundage Date: Thu, 4 Sep 2025 02:09:19 +0000 Subject: [PATCH 008/125] feat: `Turtle.get_SVG` supports children ( Fixes #209 ) --- Examples/EndlessScissorPoly.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Examples/EndlessScissorPoly.svg b/Examples/EndlessScissorPoly.svg index e2cfff0..e3d4a29 100644 --- a/Examples/EndlessScissorPoly.svg +++ b/Examples/EndlessScissorPoly.svg @@ -6,7 +6,7 @@ - + From 3d1557378ee2ffdf16151dce12f8059fcd776129 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Thu, 4 Sep 2025 02:09:19 +0000 Subject: [PATCH 009/125] feat: `Turtle.get_SVG` supports children ( Fixes #209 ) --- Examples/EndlessSierpinskiTrianglePattern.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Examples/EndlessSierpinskiTrianglePattern.svg b/Examples/EndlessSierpinskiTrianglePattern.svg index cca5d4d..10dce5d 100644 --- a/Examples/EndlessSierpinskiTrianglePattern.svg +++ b/Examples/EndlessSierpinskiTrianglePattern.svg @@ -6,7 +6,7 @@ - + From 60fd2371a96da4439098f0bd18f817cc7ee25843 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Thu, 4 Sep 2025 02:09:19 +0000 Subject: [PATCH 010/125] feat: `Turtle.get_SVG` supports children ( Fixes #209 ) --- Examples/EndlessSnowflake.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Examples/EndlessSnowflake.svg b/Examples/EndlessSnowflake.svg index 8d48d65..fec0dac 100644 --- a/Examples/EndlessSnowflake.svg +++ b/Examples/EndlessSnowflake.svg @@ -6,7 +6,7 @@ - + From ffb724ebfc5baf76bf4368d0e2d6c3b1b5391209 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Thu, 4 Sep 2025 02:09:19 +0000 Subject: [PATCH 011/125] feat: `Turtle.get_SVG` supports children ( Fixes #209 ) --- Examples/EndlessSpirolateral.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Examples/EndlessSpirolateral.svg b/Examples/EndlessSpirolateral.svg index 491d75c..ac35a1a 100644 --- a/Examples/EndlessSpirolateral.svg +++ b/Examples/EndlessSpirolateral.svg @@ -6,7 +6,7 @@ - + From 09b6da314e63308f60ffc01dc25e24f401d6e233 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Thu, 4 Sep 2025 02:09:19 +0000 Subject: [PATCH 012/125] feat: `Turtle.get_SVG` supports children ( Fixes #209 ) --- Examples/EndlessStepSpiral.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Examples/EndlessStepSpiral.svg b/Examples/EndlessStepSpiral.svg index 2a30361..5a63bf6 100644 --- a/Examples/EndlessStepSpiral.svg +++ b/Examples/EndlessStepSpiral.svg @@ -4,7 +4,7 @@ - + From 2488772b50564b5580593290edb2752800be77ea Mon Sep 17 00:00:00 2001 From: James Brundage Date: Thu, 4 Sep 2025 02:09:20 +0000 Subject: [PATCH 013/125] feat: `Turtle.get_SVG` supports children ( Fixes #209 ) --- Examples/SierpinskiTriangle.svg | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Examples/SierpinskiTriangle.svg b/Examples/SierpinskiTriangle.svg index 4000b31..ccd5965 100644 --- a/Examples/SierpinskiTriangle.svg +++ b/Examples/SierpinskiTriangle.svg @@ -1,7 +1,9 @@ - - + + + + \ No newline at end of file From fd0640c6ff1611b9a6873d3f4ff27bec76065460 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Thu, 4 Sep 2025 02:09:20 +0000 Subject: [PATCH 014/125] feat: `Turtle.get_SVG` supports children ( Fixes #209 ) --- Examples/TurtlesOnATextPath.svg | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Examples/TurtlesOnATextPath.svg b/Examples/TurtlesOnATextPath.svg index 819e67f..511833c 100644 --- a/Examples/TurtlesOnATextPath.svg +++ b/Examples/TurtlesOnATextPath.svg @@ -1,10 +1,12 @@ - - - - turtles on a text path - + + + + + turtles on a text path + + \ No newline at end of file From 2b49e3c46e22b552a3017e599adf4de1e661b34c Mon Sep 17 00:00:00 2001 From: James Brundage Date: Thu, 4 Sep 2025 02:09:20 +0000 Subject: [PATCH 015/125] feat: `Turtle.get_SVG` supports children ( Fixes #209 ) --- Examples/TurtlesOnATextPath-Morph.svg | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/Examples/TurtlesOnATextPath-Morph.svg b/Examples/TurtlesOnATextPath-Morph.svg index b3887d5..94b3c48 100644 --- a/Examples/TurtlesOnATextPath-Morph.svg +++ b/Examples/TurtlesOnATextPath-Morph.svg @@ -1,15 +1,17 @@ - - - - - turtles on a text path - - - - - + + + + + + turtles on a text path + + + + + + \ No newline at end of file From 37ed7af51a41e78b89b78c99b0d70adf5b69d40f Mon Sep 17 00:00:00 2001 From: James Brundage Date: Thu, 4 Sep 2025 02:09:20 +0000 Subject: [PATCH 016/125] feat: `Turtle.get_SVG` supports children ( Fixes #209 ) --- Examples/TurtlesOnATextPath-ATurtleCircle.svg | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Examples/TurtlesOnATextPath-ATurtleCircle.svg b/Examples/TurtlesOnATextPath-ATurtleCircle.svg index 13991b8..9861dee 100644 --- a/Examples/TurtlesOnATextPath-ATurtleCircle.svg +++ b/Examples/TurtlesOnATextPath-ATurtleCircle.svg @@ -1,10 +1,12 @@ - - - - a turtle circle - + + + + + a turtle circle + + \ No newline at end of file From c04984423797d308eec3798ae6e33a55625bddbf Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Wed, 3 Sep 2025 19:19:01 -0700 Subject: [PATCH 017/125] feat: `Turtle.get_SVG` supports children ( Fixes #209 ) Using .SVG in .dataURL --- Types/Turtle/get_DataURL.ps1 | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Types/Turtle/get_DataURL.ps1 b/Types/Turtle/get_DataURL.ps1 index 4f7eb4e..4d51eb7 100644 --- a/Types/Turtle/get_DataURL.ps1 +++ b/Types/Turtle/get_DataURL.ps1 @@ -6,6 +6,7 @@ This can be used as an inline image in HTML, CSS, or Markdown. #> -$thisSymbol = $this.Symbol -$b64 = [Convert]::ToBase64String($OutputEncoding.GetBytes($thisSymbol.outerXml)) -"data:image/svg+xml;base64,$b64" \ No newline at end of file +$thisSVG = $this.SVG +"data:image/svg+xml;base64,$( + [Convert]::ToBase64String($OutputEncoding.GetBytes($this.SVG.outerXml)) +)" \ No newline at end of file From 6980a94875dfb2ab4b5b4b0076efc919cbd5da48 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Thu, 4 Sep 2025 02:19:59 +0000 Subject: [PATCH 018/125] feat: `Turtle.get_SVG` supports children ( Fixes #209 ) Using .SVG in .dataURL --- Turtle.types.ps1xml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Turtle.types.ps1xml b/Turtle.types.ps1xml index f85153c..8a3244d 100644 --- a/Turtle.types.ps1xml +++ b/Turtle.types.ps1xml @@ -2741,9 +2741,10 @@ window.onload = async function() { This can be used as an inline image in HTML, CSS, or Markdown. #> -$thisSymbol = $this.Symbol -$b64 = [Convert]::ToBase64String($OutputEncoding.GetBytes($thisSymbol.outerXml)) -"data:image/svg+xml;base64,$b64" +$thisSVG = $this.SVG +"data:image/svg+xml;base64,$( + [Convert]::ToBase64String($OutputEncoding.GetBytes($this.SVG.outerXml)) +)" From 30b217fb46fc5b22b5dbcc87bf7b961a5bc8b155 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Wed, 3 Sep 2025 20:56:34 -0700 Subject: [PATCH 019/125] feat: `Turtle.get_Canvas` rasterization improvement ( Fixes #210 ) --- Types/Turtle/get_Canvas.ps1 | 41 +++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/Types/Turtle/get_Canvas.ps1 b/Types/Turtle/get_Canvas.ps1 index 0515567..4cc447f 100644 --- a/Types/Turtle/get_Canvas.ps1 +++ b/Types/Turtle/get_Canvas.ps1 @@ -4,32 +4,33 @@ .DESCRIPTION Gets a turtle a canvas element. #> - @( $viewBox = $this.ViewBox - $null, $null, $viewX, $viewY = $viewBox - "" - "" - - "" From 69cc65ddc0c6c25fd4bfd23e8eec6f7a1e6821fd Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Thu, 4 Sep 2025 03:56:53 +0000 Subject: [PATCH 020/125] feat: `Turtle.get_Canvas` rasterization improvement ( Fixes #210 ) --- Turtle.types.ps1xml | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/Turtle.types.ps1xml b/Turtle.types.ps1xml index 8a3244d..27c46b4 100644 --- a/Turtle.types.ps1xml +++ b/Turtle.types.ps1xml @@ -2690,32 +2690,33 @@ $this | Add-Member NoteProperty -Name '.BackgroundColor' -Value $value -Force .DESCRIPTION Gets a turtle a canvas element. #> - @( $viewBox = $this.ViewBox - $null, $null, $viewX, $viewY = $viewBox - "<style>canvas {max-width: 100%; height: 100%}</style>" - "<canvas id='$($this.ID)-canvas' width='$($viewX + 1)' height='$($viewY + 1)'></canvas>" - - "<script>" + $null, $null, $viewX, $viewY = $viewBox + "<canvas id='$($this.ID)-canvas'></canvas>" + "<script type='module'>" @" window.onload = async function() { - var canvas = document.getElementById('$($this.ID)-canvas'); - var ctx = canvas.getContext('2d'); - ctx.strokeStyle = '$($this.Stroke)' - ctx.lineWidth = '$( - if ($this.StrokeWidth -match '%') { - [Math]::Max($viewX, $viewY) * ($this.StrokeWidth -replace '%' -as [double])/100 - } else { - $this.StrokeWidth + const loadImage = async url => { + const newImage = document.createElement('img') + newImage.src = url + return new Promise((resolve, reject) => { + newImage.onload = () => resolve(newImage) + newImage.onerror = reject + }) } -)' - ctx.fillStyle = '$($this.Fill)' - var p = new Path2D("$($this.PathData)") - ctx.stroke(p) - ctx.fill(p) + const dataHeader = 'data:image/svg+xml;charset=utf-8' + const serializeAsXML = e => (new XMLSerializer()).serializeToString(e) + const encodeAsUTF8 = s => ```${dataHeader},`${encodeURIComponent(s)}`` - /*Insert-Post-Processing-Here*/ + const img = await loadImage('$($this.DataUrl)') + + var canvas = document.getElementById('$($this.ID)-canvas'); + canvas.width = $viewX + canvas.height = $viewY + var ctx = canvas.getContext('2d') + ctx.drawImage(img, 0, 0, $viewX, $viewY) + /*Insert-Post-Processing-Here*/ } "@ "</script>" From 8de7136d5e268bb3f047ff28b89dfc2012ce3f89 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Thu, 4 Sep 2025 03:57:33 +0000 Subject: [PATCH 021/125] feat: `Turtle.get_Canvas` rasterization improvement ( Fixes #210 ) --- Examples/BoxFractal.png | Bin 365132 -> 363605 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Examples/BoxFractal.png b/Examples/BoxFractal.png index c35cc3ca57da332d1f345d4c43c15e488682a0a8..00d7bf8100cf896a2f3520b2aadd709da04c8051 100644 GIT binary patch literal 363605 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

}E2+E|t-fMc8Brh6SRa0#`0<}qa)kfXeZ zpXJtyEk7HSD0@(~+Oy@i{NqL*blEL$OArg|6EIXzy#R|27q;7c`isT>nkgxNLp`UZ z@0u$U6$}Di^iF6y>j@Vas;B|lO4I=D>PoEGUW6^8(Ws-6{ai|iLt*p`gV1M%`|Blv zMKg?KC!RIHzZb&=i|Z@eJkd&TUFH~Qr?u@pX)*MRn)qCuNBIOi$^wn){((!)S^Amf zrbMUqO;JC^ilsgn_f2v7FmZkjP=VYG5_b(SvOo`m(rtwsp}vXi)-Cvbf**1}49UvI zBL$chmya}<7sYHf#p?}yNKz+^)MY!rK<*nv9}PUDDTzzIl*Q7uBJVL$qgn%eGQH}S z-%7CFdjPAS)^F2)9tc{TOPqyYR2h}0LqoFGQw{}0l~u&(6ryWYlBd*D-OGs5qKZm% z54x?$(Vrt{E>hx|1bO_yIVI&yj#Sz^=ky%P{Lichxpuv^-Tl-^mS>_7*%*P;0LLRT ztpeXh0-r0FlkvBPf8>L>Hn$Hu5&V|&chk|nZ0olmd3#P&A;T-bVI%5SuUNY2 z85D)-bMl*&8feHcF{9f7Da^Lu>xS78$|H%`&EW6S=m{CzCsbFk(nH*pk9j89e*<7~ zb1f+5pe@&)DNK(bo0sfCG{X?oTMXq2s@$M_z26E%w^0I$Pr0PcvM+=Xg_PHi1 zFb(En@8;FMOb1WLWodNX##h~`fwlxyS${)9Oh=!kPHxrO-_XLH1cR1L-3rtoF4dYf zR;*C#;uj@yV&p#~$m@<@(w(l3`7EIQO~>V|-*!C?Axu=&YTp>@R?ohYckvF0lbx@5 z%JXR+(fdXa#)RT3xQwRC!2JSA`N7eRG*}Ie+~vQ;?JAWk64Y4ddYQuWMhJs^PvKvS zizdKK?Y4x1V+r)Bnq_x7wXHFhy`yLcV~|w()M|4aV%e8I6u$VJ>h6^*0fIqFnTJE& zI(XB;SI@)PZnL-~t`<+js?p?6M8Eiq&V{#oG#JmTAE94S62%eKUPgrKb-sBzuivOPD83 zWOa9>uj}=_uy6JC@E0y?Uzo?QxMMt~`e4%|Vh~e$M5=xiwh`_4;gw2kNpp=Np z?VzkwIk)V)R~u;;b#hBuSg+Apr#c>^a>+#Twv@6|!b`-AVO#ste*cMA5Mw@;xf(J+ z(D43ZV}|HT*%yKaHxa$s5F5Z`Y|)kh7U8EP4DB8QyeU*vcBXq+ov2wU7_?RA56HsN z*#q4E^!W9}s1&fv?Hlsuel$FlUcy27nm)5l8k?5eA0sZFeb&<5(fh!$HQ3h@3)W#r zmkNr&5%ILx`nemIi!Bx8kFd!B&CKp+N6cjz_ftxOSWn~?M&KamDf8vE%1>PFqzPk zpIUY&D)~V7jU$G<66v*_d-jKGkUP>oTNpZ*@N>r?D{hOXoclQBIfO zt{aZUlIfaMLlfu(lrUzcwoPdvK>`D0O8m~k5 z#ikwJVkVBl{LK}*4ognIK@U2?%@wGA$fI=1rLx$eU_Ri!}~? z>~cZ2d>Q`A0F@ZBpCHTY40?_4y$~dNL_z}09t`lDxQ0*Q9}6r7YIf>p-InHheEYX3 zc86N@`k~Eot4($Puwldc`$uI)?tl-&(W(ExVHX~BPq53O!xzJbtu{7Wk+{tM@c#ih CL3$Se literal 365132 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%0Do4W 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

Endless Snowflake Pattern
+### Turtles all the way down + +A turtle can contain turtles, which can contain turtles, which can contain turtles ... + +We call this 'Turtles All The Way Down', and it lets us do two very important sets of things: + +* It allows turtles to interact +* It allows us to model the behavior of multiple turtles + +Let's start with a couple of cool practical examples. + +Imagine we are four turtles in a square, each trying to catch up with the next turtle. + +What kind of shape do you think our paths will draw? + +~~~PowerShell +.SYNOPSIS + Follow that Turtle! +.DESCRIPTION + Basic behavior modelling with Turtle. + + A series of turtles will follow the next turtle. +#> +param( +# The size of the square +[double] +$Size = 200, + +# The speed of each turtle +[double] +$Speed = 1, + +# The number of steps +[int] +$StepCount +) + +# If no steps were provided +if (-not $StepCount) { + # double the size and divide by speed + $StepCount = ($size * 2)/$speed +} + +# Set up our turtles. +$followThatTurtle = turtle square $Size turtles ([Ordered]@{ + t1 = turtle teleport 0 0 + t2 = turtle teleport $Size 0 + t3 = turtle teleport $Size $Size + t4 = turtle teleport 0 $Size +}) + +# For each step +foreach ($n in 1..([Math]::Abs($StepCount))) { + # Go to each turtle + for ($turtleNumber = 0; $turtleNumber -lt $followThatTurtle.Turtles.Count; $turtleNumber++) { + $thisTurtle = $followThatTurtle.Turtles[$turtleNumber] + # and find the next turtle + $nextTurtle = if ($turtleNumber -eq $followThatTurtle.Turtles.Count - 1) { + $followThatTurtle.Turtles[0] + } else { + $followThatTurtle.Turtles[$turtleNumber + 1] + } + # If we are more than 1 unit away + if ($thisTurtle.Distance($nextTurtle) -ge 1) { + # rotate towards it + $null = $thisTurtle.Rotate( + $thisTurtle.Towards($nextTurtle) + ).Forward($Speed) # and move forward. + } + } +} + + +$followThatTurtle | turtle save ./FollowThatTurtle.svg +$followThatTurtle.Stroke = 'transparent' +$followThatTurtle | Save-Turtle ./FollowThatTurtlePattern.svg Pattern + +~~~ +
+Follow That Turtle +
+Let's see it as a pattern: +
+Follow That Turtle +
+ +Now let's imagine we have four turtles in the center, and they're trying to get away from the turtles in the corners. + +What kind of shape will this produce? + +~~~PowerShell +.SYNOPSIS + Hide and Seek +.DESCRIPTION + Simple behavior modelling with Turtle. +.NOTES + Imagine we have eight turtles playing hide and seek + + Four turtles are seeking. + + Four turtles are hiding. + + Each hiding turtle starts in the center. + + Each seeking turtle will chase a hiding turtle. + + Each hiding turtle will run away at an angle (by default 90 degrees). +#> +param( +[double] +$SquareSize = 420, +[double] +$HiderSpeed = 2, +[double] +$SeekerSpeedRatio = ((1 + [Math]::Sqrt(5))/2), +[double] +$EvadeAngle = 90 +) + +if ($PSScriptRoot) { Push-Location $PSScriptRoot} + +$midpoint = ($squareSize/2), ($squareSize/2) +$seekerSpeed = $HiderSpeed * $SeekerSpeedRatio # (1 + (Get-Random -Min 10 -Max 50)/50) # (Get-Random -Min 1 -Max 5) +$stepCount = $squareSize/2 * (1 + ([Math]::Abs($attackerSpeed - $evaderSpeed))) + +$hideAndSeek = turtle square $squareSize stroke '#4488ff' turtles ([Ordered]@{ + s1 = turtle teleport 0 0 stroke '#4488ff' # stroke 'red' pathclass 'red-stroke' fill red + s2 = turtle teleport $squareSize stroke '#4488ff' 0 # stroke 'yellow' pathclass 'yellow-stroke' fill yellow + s3 = turtle teleport $squareSize $squareSize stroke '#4488ff' # stroke 'green' pathclass 'green-stroke' fill green + s4 = turtle teleport 0 $squareSize stroke '#4488ff' # stroke 'blue' PathClass 'blue-stroke' fill blue + h1 = turtle teleport $midpoint stroke '#4488ff' # stroke 'red' fill 'red' + h2 = turtle teleport $midpoint stroke '#4488ff' # stroke 'yellow' fill 'yellow' + h3 = turtle teleport $midpoint stroke '#4488ff' # stroke 'green' fill 'green' + h4 = turtle teleport $midpoint stroke '#4488ff' # stroke 'blue' fill 'blue' +}) + + + +# Since all attackers and evaders start with equal distances, +# when we have caught one we have caught them all. +:caughtEm foreach ($n in 1..$stepCount) { + + # Get the seeker turtles + $seekers = $hideAndSeek.Turtles[@($hideAndSeek.Turtles.Keys -match '^s')] + # Get the hiding turtles + $hiders = $hideAndSeek.Turtles[@($hideAndSeek.Turtles.Keys -match '^h')] + + for ($hiderNumber = 0; $hiderNumber -lt $hiders.Length; $hiderNumber++) { + $thisTurtle = $hiders[$hiderNumber] + $runningAwayFrom = $seekers[$hiderNumber % $seekers.Length] + $null = $thisTurtle.Rotate( + $thisTurtle.Towards($runningAwayFrom) + $evadeAngle # (Get-Random -Minimum 80 -Maximum 100) + ).Forward($HiderSpeed) + } + + for ($seekerNumber = 0; $seekerNumber -lt $seekers.Length; $seekerNumber++) { + $thisTurtle = $seekers[$seekerNumber] + $runningTowards = $hiders[$seekerNumber % $hiders.Length] + $null = $thisTurtle.Rotate( + $thisTurtle.Towards($runningTowards) # + (Get-Random -Minimum -10 -Maximum 10) + ).Forward($seekerSpeed) + } + + for ($seekerNumber = 0; $seekerNumber -lt $seekers.Length; $seekerNumber++) { + $thisTurtle = $seekers[$seekerNumber] + $runningTowards = $hiders[$seekerNumber % $hiders.Length] + if ($thisTurtle.Distance($runningTowards) -le 1) { + break caughtEm + } + } +} + + +$hideAndSeek | turtle save ./FollowThatTurtleHideAndSeek.svg +$hideAndSeek.Stroke = 'transparent' +$hideAndSeek | Save-Turtle ./FollowThatTurtleHideAndSeekPattern.svg Pattern + +if ($PSScriptRoot) { Pop-Location} +~~~ +
+Follow That Turtle Hide And Seek +
+Let's see it as a pattern: +
+Follow That Turtle Hide And Seek Pattern +
### Turtles in HTML @@ -307,11 +489,16 @@ turtle SierpinskiTriangle | Anything we do with our turtle should work within a webpage. +To include a Turtle in a page, we can simply stringify it: + +~~~PowerShell +"$(turtle SierpinskiTriangle)" +~~~ + There are a few properties of the turtle that may be helpful: * .Canvas returns the turtle rendered in an HTML canvas * .OffsetPath returns the turtle as an offset path -* .ClipPath returns the turtle as a clip path ### Turtles in Raster diff --git a/README.md.ps1 b/README.md.ps1 index 86c252a..217c7d6 100644 --- a/README.md.ps1 +++ b/README.md.ps1 @@ -7,11 +7,9 @@ #requires -Module Turtle param() -#region Introduction - -@" -# Turtle +$imageHeader = @( +@'
SierpinskiTriangle
@@ -19,8 +17,15 @@ param()
+'@ +) + +#region Introduction +@" +# Turtle +$imageHeader ## Turtles in a PowerShell @@ -123,6 +128,9 @@ The turtle is represented as an object, and any number of commands can make or m Last but not least: `Get-Turtle` lets you run multiple steps of turtle, and is aliased to `turtle`. +Get-Turtle is the command we will use most often, and we will almost always just call it by the alias `turtle`. + +If you want to get a sense of all that Turtle can do, check out the [Get-Turtle examples](https://psturtle.com/Commands/Get-Turtle) "@ @" @@ -143,15 +151,10 @@ Let's start simple, by drawing a square with a series of commands. ~~~PowerShell $( $drawSquare1 = { -New-Turtle | - Move-Turtle Forward 10 | - Move-Turtle Rotate 90 | - Move-Turtle Forward 10 | - Move-Turtle Rotate 90 | - Move-Turtle Forward 10 | - Move-Turtle Rotate 90 | - Move-Turtle Forward 10 | - Move-Turtle Rotate 90 | +turtle Forward 10 Rotate 90 | + turtle Forward 10 Rotate 90 | + turtle Forward 10 Rotate 90 | + turtle Forward 10 Rotate 90 | Save-Turtle "./Square.svg" } $drawSquare1 @@ -296,7 +299,7 @@ $box3 = { ### Drawing Fractals -Turtle is often used to draw fractals. +Turtle is can be used to draw fractals. Many fractals can be described in something called a [L-System](https://en.wikipedia.org/wiki/L-system) (short for Lindenmayer system) @@ -394,6 +397,79 @@ $( #endregion LSystems +#region Turtles All The Way Down +@" +### Turtles all the way down + +A turtle can contain turtles, which can contain turtles, which can contain turtles ... + +We call this 'Turtles All The Way Down', and it lets us do two very important sets of things: + +* It allows turtles to interact +* It allows us to model the behavior of multiple turtles + +Let's start with a couple of cool practical examples. + +Imagine we are four turtles in a square, each trying to catch up with the next turtle. + +What kind of shape do you think our paths will draw? + +~~~PowerShell +$( + @(Get-Content ./Examples/FollowThatTurtle.turtle.ps1 | + Select-Object -Skip 1) -join [Environment]::NewLine +) +~~~ +"@ + +@" +
+Follow That Turtle +
+"@ + +@" +Let's see it as a pattern: +"@ + +@" +
+Follow That Turtle +
+"@ + +@" + +Now let's imagine we have four turtles in the center, and they're trying to get away from the turtles in the corners. + +What kind of shape will this produce? + +~~~PowerShell +$( + @(Get-Content ./Examples/FollowThatTurtleHideAndSeek.turtle.ps1 | + Select-Object -Skip 1) -join [Environment]::NewLine +) +~~~ +"@ + + +@" +
+Follow That Turtle Hide And Seek +
+"@ + +@" +Let's see it as a pattern: +"@ + +@" +
+Follow That Turtle Hide And Seek Pattern +
+"@ +#endregion Turtles All The Way Down + #region Turtles in HTML @" @@ -413,11 +489,16 @@ turtle SierpinskiTriangle | Anything we do with our turtle should work within a webpage. +To include a Turtle in a page, we can simply stringify it: + +~~~PowerShell +"`$(turtle SierpinskiTriangle)" +~~~ + There are a few properties of the turtle that may be helpful: * `.Canvas` returns the turtle rendered in an HTML canvas * `.OffsetPath` returns the turtle as an offset path -* `.ClipPath` returns the turtle as a clip path "@ #endregion Turtles in HTML From 7f8d29806e1cc8c331a98e452223f90ab62c7724 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Mon, 8 Sep 2025 20:36:00 +0000 Subject: [PATCH 098/125] docs: Adding Turtles All The Way Down to README ( Fixes #206 ) Also colorizing FollowThatTurtle examples and fixing names. --- Examples/FollowThatTurtleHideAndSeek.svg | 27 ++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Examples/FollowThatTurtleHideAndSeek.svg diff --git a/Examples/FollowThatTurtleHideAndSeek.svg b/Examples/FollowThatTurtleHideAndSeek.svg new file mode 100644 index 0000000..5ae1182 --- /dev/null +++ b/Examples/FollowThatTurtleHideAndSeek.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 7322763e98eabe9f911efaf38e993505720554e9 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Mon, 8 Sep 2025 20:36:00 +0000 Subject: [PATCH 099/125] docs: Adding Turtles All The Way Down to README ( Fixes #206 ) Also colorizing FollowThatTurtle examples and fixing names. --- .../FollowThatTurtleHideAndSeekPattern.svg | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Examples/FollowThatTurtleHideAndSeekPattern.svg diff --git a/Examples/FollowThatTurtleHideAndSeekPattern.svg b/Examples/FollowThatTurtleHideAndSeekPattern.svg new file mode 100644 index 0000000..a56eada --- /dev/null +++ b/Examples/FollowThatTurtleHideAndSeekPattern.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 0d745aed02a80827719b3c00f639ae8d009c05fb Mon Sep 17 00:00:00 2001 From: James Brundage Date: Mon, 8 Sep 2025 20:36:01 +0000 Subject: [PATCH 100/125] docs: Adding Turtles All The Way Down to README ( Fixes #206 ) Also colorizing FollowThatTurtle examples and fixing names. --- Examples/FollowThatTurtleNotTooClose.svg | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Examples/FollowThatTurtleNotTooClose.svg b/Examples/FollowThatTurtleNotTooClose.svg index cc1f86a..9fa55f5 100644 --- a/Examples/FollowThatTurtleNotTooClose.svg +++ b/Examples/FollowThatTurtleNotTooClose.svg @@ -1,16 +1,16 @@ - + - + - + - + - + From 1b05b6f5459e9ab42d03ac2412d2113f87a45cdf Mon Sep 17 00:00:00 2001 From: James Brundage Date: Mon, 8 Sep 2025 20:36:01 +0000 Subject: [PATCH 101/125] docs: Adding Turtles All The Way Down to README ( Fixes #206 ) Also colorizing FollowThatTurtle examples and fixing names. --- Examples/FollowThatTurtleNotTooClosePattern.svg | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Examples/FollowThatTurtleNotTooClosePattern.svg b/Examples/FollowThatTurtleNotTooClosePattern.svg index 281b314..8f03135 100644 --- a/Examples/FollowThatTurtleNotTooClosePattern.svg +++ b/Examples/FollowThatTurtleNotTooClosePattern.svg @@ -4,13 +4,13 @@ - + - + - + - + From b9e070759051cf18ed9247f31c3ed2b606ab0e9a Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Mon, 8 Sep 2025 13:37:39 -0700 Subject: [PATCH 102/125] docs: Adding Turtles All The Way Down to README ( Fixes #206 ) Colorizing example --- Examples/FollowThatTurtle.turtle.ps1 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Examples/FollowThatTurtle.turtle.ps1 b/Examples/FollowThatTurtle.turtle.ps1 index ed0d2f2..bf32883 100644 --- a/Examples/FollowThatTurtle.turtle.ps1 +++ b/Examples/FollowThatTurtle.turtle.ps1 @@ -27,11 +27,11 @@ if (-not $StepCount) { } # Set up our turtles. -$followThatTurtle = turtle square $Size turtles ([Ordered]@{ - t1 = turtle teleport 0 0 - t2 = turtle teleport $Size 0 - t3 = turtle teleport $Size $Size - t4 = turtle teleport 0 $Size +$followThatTurtle = turtle stroke '#4488ff' square $Size turtles ([Ordered]@{ + t1 = turtle teleport 0 0 stroke '#4488ff' + t2 = turtle teleport $Size 0 stroke '#4488ff' + t3 = turtle teleport $Size $Size stroke '#4488ff' + t4 = turtle teleport 0 $Size stroke '#4488ff' }) # For each step From 93634b0ec8f24513fe8f11d081e824fe2f9084de Mon Sep 17 00:00:00 2001 From: James Brundage Date: Mon, 8 Sep 2025 20:38:34 +0000 Subject: [PATCH 103/125] docs: Adding Turtles All The Way Down to README ( Fixes #206 ) Colorizing example --- Examples/FollowThatTurtle.svg | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Examples/FollowThatTurtle.svg b/Examples/FollowThatTurtle.svg index 6438ca2..de654bc 100644 --- a/Examples/FollowThatTurtle.svg +++ b/Examples/FollowThatTurtle.svg @@ -1,16 +1,16 @@ - + - + - + - + - + From 5cfb9d20f2e24f3eaa871909b60ca791949ab763 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Mon, 8 Sep 2025 20:38:34 +0000 Subject: [PATCH 104/125] docs: Adding Turtles All The Way Down to README ( Fixes #206 ) Colorizing example --- Examples/FollowThatTurtlePattern.svg | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Examples/FollowThatTurtlePattern.svg b/Examples/FollowThatTurtlePattern.svg index e134eed..0871a03 100644 --- a/Examples/FollowThatTurtlePattern.svg +++ b/Examples/FollowThatTurtlePattern.svg @@ -4,13 +4,13 @@ - + - + - + - + From 7185cd963032600c380093eb4524c448b1baad63 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Mon, 8 Sep 2025 13:40:54 -0700 Subject: [PATCH 105/125] docs: Adding Turtles All The Way Down to README ( Fixes #206 ) Fixing hide and seek example --- Examples/FollowThatTurtleHideAndSeek.turtle.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Examples/FollowThatTurtleHideAndSeek.turtle.ps1 b/Examples/FollowThatTurtleHideAndSeek.turtle.ps1 index df2b8c6..ca31b74 100644 --- a/Examples/FollowThatTurtleHideAndSeek.turtle.ps1 +++ b/Examples/FollowThatTurtleHideAndSeek.turtle.ps1 @@ -35,7 +35,7 @@ $stepCount = $squareSize/2 * (1 + ([Math]::Abs($attackerSpeed - $evaderSpeed))) $hideAndSeek = turtle square $squareSize stroke '#4488ff' turtles ([Ordered]@{ s1 = turtle teleport 0 0 stroke '#4488ff' # stroke 'red' pathclass 'red-stroke' fill red - s2 = turtle teleport $squareSize stroke '#4488ff' 0 # stroke 'yellow' pathclass 'yellow-stroke' fill yellow + s2 = turtle teleport $squareSize 0 stroke '#4488ff' # stroke 'yellow' pathclass 'yellow-stroke' fill yellow s3 = turtle teleport $squareSize $squareSize stroke '#4488ff' # stroke 'green' pathclass 'green-stroke' fill green s4 = turtle teleport 0 $squareSize stroke '#4488ff' # stroke 'blue' PathClass 'blue-stroke' fill blue h1 = turtle teleport $midpoint stroke '#4488ff' # stroke 'red' fill 'red' From b557b9bfb0602e8880e11964a3fa91eb5bd012ad Mon Sep 17 00:00:00 2001 From: James Brundage Date: Mon, 8 Sep 2025 20:42:02 +0000 Subject: [PATCH 106/125] docs: Adding Turtles All The Way Down to README ( Fixes #206 ) Fixing hide and seek example --- Examples/FollowThatTurtleHideAndSeek.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Examples/FollowThatTurtleHideAndSeek.svg b/Examples/FollowThatTurtleHideAndSeek.svg index 5ae1182..23eac63 100644 --- a/Examples/FollowThatTurtleHideAndSeek.svg +++ b/Examples/FollowThatTurtleHideAndSeek.svg @@ -6,7 +6,7 @@ - + From 22b9429b085aa80bab77b7936226a2bbe7c220be Mon Sep 17 00:00:00 2001 From: James Brundage Date: Mon, 8 Sep 2025 20:42:02 +0000 Subject: [PATCH 107/125] docs: Adding Turtles All The Way Down to README ( Fixes #206 ) Fixing hide and seek example --- Examples/FollowThatTurtleHideAndSeekPattern.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Examples/FollowThatTurtleHideAndSeekPattern.svg b/Examples/FollowThatTurtleHideAndSeekPattern.svg index a56eada..2428822 100644 --- a/Examples/FollowThatTurtleHideAndSeekPattern.svg +++ b/Examples/FollowThatTurtleHideAndSeekPattern.svg @@ -6,7 +6,7 @@ - + From 2b7a771c09016c18588b248b94c30f88b0a3a4bb Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Mon, 8 Sep 2025 13:43:15 -0700 Subject: [PATCH 108/125] docs: Adding Turtles All The Way Down to README ( Fixes #206 ) Adjusting hide and seek size --- Examples/FollowThatTurtleHideAndSeek.turtle.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Examples/FollowThatTurtleHideAndSeek.turtle.ps1 b/Examples/FollowThatTurtleHideAndSeek.turtle.ps1 index ca31b74..f94892a 100644 --- a/Examples/FollowThatTurtleHideAndSeek.turtle.ps1 +++ b/Examples/FollowThatTurtleHideAndSeek.turtle.ps1 @@ -18,7 +18,7 @@ #> param( [double] -$SquareSize = 420, +$SquareSize = 200, [double] $HiderSpeed = 2, [double] From 807a56dd49f70c84755166f306a573544910293e Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Mon, 8 Sep 2025 13:45:18 -0700 Subject: [PATCH 109/125] docs: Adding Turtles All The Way Down to README ( Fixes #206 ) Adjusting pattern display size --- README.md | 22 +++++++++++----------- README.md.ps1 | 8 ++++---- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index f443ae7..3ca19fc 100644 --- a/README.md +++ b/README.md @@ -260,7 +260,7 @@ For example, here is an example of a pattern comprised of Koch Snowflakes: ~~~
-Snowflake Pattern +Snowflake Pattern
We can also animate the pattern, for endless variety: @@ -284,7 +284,7 @@ $turtle | save-turtle -Path ./EndlessSnowflake.svg -Property Pattern Pop-Location ~~~
-Endless Snowflake Pattern +Endless Snowflake Pattern
### Turtles all the way down @@ -330,11 +330,11 @@ if (-not $StepCount) { } # Set up our turtles. -$followThatTurtle = turtle square $Size turtles ([Ordered]@{ - t1 = turtle teleport 0 0 - t2 = turtle teleport $Size 0 - t3 = turtle teleport $Size $Size - t4 = turtle teleport 0 $Size +$followThatTurtle = turtle stroke '#4488ff' square $Size turtles ([Ordered]@{ + t1 = turtle teleport 0 0 stroke '#4488ff' + t2 = turtle teleport $Size 0 stroke '#4488ff' + t3 = turtle teleport $Size $Size stroke '#4488ff' + t4 = turtle teleport 0 $Size stroke '#4488ff' }) # For each step @@ -369,7 +369,7 @@ $followThatTurtle | Save-Turtle ./FollowThatTurtlePattern.svg Pattern Let's see it as a pattern:
-Follow That Turtle +Follow That Turtle
Now let's imagine we have four turtles in the center, and they're trying to get away from the turtles in the corners. @@ -396,7 +396,7 @@ What kind of shape will this produce? #> param( [double] -$SquareSize = 420, +$SquareSize = 200, [double] $HiderSpeed = 2, [double] @@ -413,7 +413,7 @@ $stepCount = $squareSize/2 * (1 + ([Math]::Abs($attackerSpeed - $evaderSpeed))) $hideAndSeek = turtle square $squareSize stroke '#4488ff' turtles ([Ordered]@{ s1 = turtle teleport 0 0 stroke '#4488ff' # stroke 'red' pathclass 'red-stroke' fill red - s2 = turtle teleport $squareSize stroke '#4488ff' 0 # stroke 'yellow' pathclass 'yellow-stroke' fill yellow + s2 = turtle teleport $squareSize 0 stroke '#4488ff' # stroke 'yellow' pathclass 'yellow-stroke' fill yellow s3 = turtle teleport $squareSize $squareSize stroke '#4488ff' # stroke 'green' pathclass 'green-stroke' fill green s4 = turtle teleport 0 $squareSize stroke '#4488ff' # stroke 'blue' PathClass 'blue-stroke' fill blue h1 = turtle teleport $midpoint stroke '#4488ff' # stroke 'red' fill 'red' @@ -470,7 +470,7 @@ if ($PSScriptRoot) { Pop-Location} Let's see it as a pattern:
-Follow That Turtle Hide And Seek Pattern +Follow That Turtle Hide And Seek Pattern
### Turtles in HTML diff --git a/README.md.ps1 b/README.md.ps1 index 217c7d6..24d79ea 100644 --- a/README.md.ps1 +++ b/README.md.ps1 @@ -374,7 +374,7 @@ $SnowFlakePattern = . $MakeSnowflakePattern @"
-Snowflake Pattern +Snowflake Pattern
"@ @@ -391,7 +391,7 @@ $( @"
-Endless Snowflake Pattern +Endless Snowflake Pattern
"@ @@ -434,7 +434,7 @@ Let's see it as a pattern: @"
-Follow That Turtle +Follow That Turtle
"@ @@ -465,7 +465,7 @@ Let's see it as a pattern: @"
-Follow That Turtle Hide And Seek Pattern +Follow That Turtle Hide And Seek Pattern
"@ #endregion Turtles All The Way Down From 70e80d62691e73b1d2692edc17b8cfb009223b7e Mon Sep 17 00:00:00 2001 From: James Brundage Date: Mon, 8 Sep 2025 20:45:52 +0000 Subject: [PATCH 110/125] docs: Adding Turtles All The Way Down to README ( Fixes #206 ) Adjusting pattern display size --- Examples/FollowThatTurtleHideAndSeek.svg | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Examples/FollowThatTurtleHideAndSeek.svg b/Examples/FollowThatTurtleHideAndSeek.svg index 23eac63..03891e7 100644 --- a/Examples/FollowThatTurtleHideAndSeek.svg +++ b/Examples/FollowThatTurtleHideAndSeek.svg @@ -1,24 +1,24 @@ - - - + + + - + - + - + - + - + - + - + - + From 649f14183403725a7c643c4e4851bedfd6957f5a Mon Sep 17 00:00:00 2001 From: James Brundage Date: Mon, 8 Sep 2025 20:45:52 +0000 Subject: [PATCH 111/125] docs: Adding Turtles All The Way Down to README ( Fixes #206 ) Adjusting pattern display size --- .../FollowThatTurtleHideAndSeekPattern.svg | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Examples/FollowThatTurtleHideAndSeekPattern.svg b/Examples/FollowThatTurtleHideAndSeekPattern.svg index 2428822..12c820c 100644 --- a/Examples/FollowThatTurtleHideAndSeekPattern.svg +++ b/Examples/FollowThatTurtleHideAndSeekPattern.svg @@ -1,24 +1,24 @@ - - + + - + - + - + - + - + - + - + - + From 418118b4238143812c78f24d8720e58878bab990 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Mon, 8 Sep 2025 13:59:25 -0700 Subject: [PATCH 112/125] docs: Adding Turtles All The Way Down to README ( Fixes #206 ) Adding InscribedCircle example --- Examples/InscribedCircle.turtle.ps1 | 14 ++++++++++++ README.md | 29 ++++++++++++++++++++++++- README.md.ps1 | 33 ++++++++++++++++++++++++++++- 3 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 Examples/InscribedCircle.turtle.ps1 diff --git a/Examples/InscribedCircle.turtle.ps1 b/Examples/InscribedCircle.turtle.ps1 new file mode 100644 index 0000000..020c3b0 --- /dev/null +++ b/Examples/InscribedCircle.turtle.ps1 @@ -0,0 +1,14 @@ +<# +.SYNOPSIS + An inscribed circle +.DESCRIPTION + A simple example of turtles containing turtles +#> +$inscribedCircle = + turtle width 42 height 42 turtles @{ + 'square' = turtle square 42 fill '#4488ff' stroke '#224488' + 'circle' = turtle circle 21 fill '#224488' stroke '#4488ff' + } + +$inscribedCircle | Save-Turtle ./InscribedCircle.svg +$inscribedCircle | Save-Turtle ./InscribedCirclePattern.svg Pattern diff --git a/README.md b/README.md index 3ca19fc..a9663b5 100644 --- a/README.md +++ b/README.md @@ -295,7 +295,34 @@ We call this 'Turtles All The Way Down', and it lets us do two very important se * It allows turtles to interact * It allows us to model the behavior of multiple turtles -Let's start with a couple of cool practical examples. +Let's start with a few cool examples. + +At the most basic, let's make an inscribed circle and square: + +~~~PowerShell +.SYNOPSIS + An inscribed circle +.DESCRIPTION + A simple example of turtles containing turtles +#> +$inscribedCircle = + turtle width 42 height 42 turtles @{ + 'square' = turtle square 42 fill '#4488ff' stroke '#224488' + 'circle' = turtle circle 21 fill '#224488' stroke '#4488ff' + } + +$inscribedCircle | Save-Turtle ./InscribedCircle.svg +$inscribedCircle | Save-Turtle ./InscribedCirclePattern.svg Pattern +~~~ + +
+Inscribed Circle +
+Let's see it as a pattern: +
+Inscribed Circle Pattern +
+#### Behavior Modelling Imagine we are four turtles in a square, each trying to catch up with the next turtle. diff --git a/README.md.ps1 b/README.md.ps1 index 24d79ea..cd1b33f 100644 --- a/README.md.ps1 +++ b/README.md.ps1 @@ -408,7 +408,38 @@ We call this 'Turtles All The Way Down', and it lets us do two very important se * It allows turtles to interact * It allows us to model the behavior of multiple turtles -Let's start with a couple of cool practical examples. +Let's start with a few cool examples. + +At the most basic, let's make an inscribed circle and square: + +~~~PowerShell +$( + @(Get-Content ./Examples/InscribedCircle.turtle.ps1 | + Select-Object -Skip 1) -join [Environment]::NewLine +) +~~~ + +"@ + +@" +
+Inscribed Circle +
+"@ + +@" +Let's see it as a pattern: +"@ + +@" +
+Inscribed Circle Pattern +
+"@ + + +@" +#### Behavior Modelling Imagine we are four turtles in a square, each trying to catch up with the next turtle. From 910f220b2fea8b0cdfb444c2395ca1be829e3364 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Mon, 8 Sep 2025 21:00:13 +0000 Subject: [PATCH 113/125] docs: Adding Turtles All The Way Down to README ( Fixes #206 ) Adding InscribedCircle example --- Examples/InscribedCircle.svg | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 Examples/InscribedCircle.svg diff --git a/Examples/InscribedCircle.svg b/Examples/InscribedCircle.svg new file mode 100644 index 0000000..e6088b8 --- /dev/null +++ b/Examples/InscribedCircle.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file From a950bc2896cb7a3d23e2a62cc746c67c7b7afb08 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Mon, 8 Sep 2025 21:00:13 +0000 Subject: [PATCH 114/125] docs: Adding Turtles All The Way Down to README ( Fixes #206 ) Adding InscribedCircle example --- Examples/InscribedCirclePattern.svg | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 Examples/InscribedCirclePattern.svg diff --git a/Examples/InscribedCirclePattern.svg b/Examples/InscribedCirclePattern.svg new file mode 100644 index 0000000..986095e --- /dev/null +++ b/Examples/InscribedCirclePattern.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file From 0357214647db4b9a469260a7558ca4a608dacbf1 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Mon, 8 Sep 2025 18:09:58 -0700 Subject: [PATCH 115/125] docs: Adding Turtles All The Way Down to README ( Fixes #206 ) Linking to complex example source --- README.md | 5 ++--- README.md.ps1 | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index a9663b5..dd4fd14 100644 --- a/README.md +++ b/README.md @@ -326,7 +326,7 @@ Let's see it as a pattern: Imagine we are four turtles in a square, each trying to catch up with the next turtle. -What kind of shape do you think our paths will draw? +[What kind of shape do you think our paths will draw?](Get-Content ./Examples/FollowThatTurtle.turtle.ps1) ~~~PowerShell .SYNOPSIS @@ -401,8 +401,7 @@ Let's see it as a pattern: Now let's imagine we have four turtles in the center, and they're trying to get away from the turtles in the corners. -What kind of shape will this produce? - +[What kind of shape will this produce?](./Examples/FollowThatTurtleHideAndSeek.turtle.ps1) ~~~PowerShell .SYNOPSIS Hide and Seek diff --git a/README.md.ps1 b/README.md.ps1 index cd1b33f..9dcb206 100644 --- a/README.md.ps1 +++ b/README.md.ps1 @@ -443,7 +443,7 @@ Let's see it as a pattern: Imagine we are four turtles in a square, each trying to catch up with the next turtle. -What kind of shape do you think our paths will draw? +[What kind of shape do you think our paths will draw?](Get-Content ./Examples/FollowThatTurtle.turtle.ps1) ~~~PowerShell $( @@ -473,8 +473,7 @@ Let's see it as a pattern: Now let's imagine we have four turtles in the center, and they're trying to get away from the turtles in the corners. -What kind of shape will this produce? - +[What kind of shape will this produce?](./Examples/FollowThatTurtleHideAndSeek.turtle.ps1) ~~~PowerShell $( @(Get-Content ./Examples/FollowThatTurtleHideAndSeek.turtle.ps1 | From 241be37a10a471dbb69dda03e4326a780085d9ec Mon Sep 17 00:00:00 2001 From: James Brundage Date: Tue, 9 Sep 2025 01:10:43 +0000 Subject: [PATCH 116/125] docs: Adding Turtles All The Way Down to README ( Fixes #206 ) Linking to complex example source --- Examples/InscribedCircle.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Examples/InscribedCircle.svg b/Examples/InscribedCircle.svg index e6088b8..a44925e 100644 --- a/Examples/InscribedCircle.svg +++ b/Examples/InscribedCircle.svg @@ -4,10 +4,10 @@ - - + + From acb7f12c71a928125e76a4172df7bebdec4b8b2e Mon Sep 17 00:00:00 2001 From: James Brundage Date: Tue, 9 Sep 2025 01:10:43 +0000 Subject: [PATCH 117/125] docs: Adding Turtles All The Way Down to README ( Fixes #206 ) Linking to complex example source --- Examples/InscribedCirclePattern.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Examples/InscribedCirclePattern.svg b/Examples/InscribedCirclePattern.svg index 986095e..48d02f6 100644 --- a/Examples/InscribedCirclePattern.svg +++ b/Examples/InscribedCirclePattern.svg @@ -4,10 +4,10 @@ - - + + From 970a643070102c7d8dc0f5f47885d5b5696a7489 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Mon, 8 Sep 2025 18:11:45 -0700 Subject: [PATCH 118/125] release: Turtle 0.2 Updating Module Manifest and CHANGELOG --- CHANGELOG.md | 28 ++++++++++++++++++++++++++++ Turtle.psd1 | 41 ++++++++++++++++++++++++++--------------- 2 files changed, 54 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7aaa9ad..36acc59 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,31 @@ +## Turtle 0.2: + +### Turtles All The Way Down + +A turtle can now contain `.Turtles` +Which can contain `.Turtles` +Which can contain `.Turtles` +Which can contain `.Turtles`... + +* Turtles all the way down (#206) + * `Turtle.get/set_Turtles` (#207) + * `Turtle.get_SVG` supports children (#209) + * `Turtle.get_Canvas` rasterization improvement (#210) + * `Turtle.Towards()` multiple targets (#211) + * `Turtle.Distance()` multiple targets (#212) +* `Turtle.Morph` supports stepwise animation (#215) +* Small fixes + * `Turtle.Step()` uses Add (#213) + * `Turtle.set_Steps` initialization fix (#214) + * `Turtle.set_Duration` anytime (#216) + * `Turtle.get_SVG` empty viewbox support (#218) + * `Turtle.get/set_SVGAttribute` (#219) + * `Turtle.get/set_SVGAnimation` (#220) + * `Turtle.get/set_PathTransform` (#217) + * `Turtle.Forward()` removing rounding (#221) + +--- + ## Turtle 0.1.10: * Updated Methods diff --git a/Turtle.psd1 b/Turtle.psd1 index 903f643..22f8116 100644 --- a/Turtle.psd1 +++ b/Turtle.psd1 @@ -1,6 +1,6 @@ @{ # Version number of this module. - ModuleVersion = '0.1.10' + ModuleVersion = '0.2.0' # Description of the module Description = "Turtles in a PowerShell" # Script module or binary module file associated with this manifest. @@ -37,21 +37,32 @@ # A URL to the license for this module. LicenseURI = 'https://github.com/PowerShellWeb/Turtle/blob/main/LICENSE' ReleaseNotes = @' -## Turtle 0.1.10: +## Turtle 0.2: + +### Turtles All The Way Down + +A turtle can now contain `.Turtles` +Which can contain `.Turtles` +Which can contain `.Turtles` +Which can contain `.Turtles`... + +* Turtles all the way down (#206) + * `Turtle.get/set_Turtles` (#207) + * `Turtle.get_SVG` supports children (#209) + * `Turtle.get_Canvas` rasterization improvement (#210) + * `Turtle.Towards()` multiple targets (#211) + * `Turtle.Distance()` multiple targets (#212) +* `Turtle.Morph` supports stepwise animation (#215) +* Small fixes + * `Turtle.Step()` uses Add (#213) + * `Turtle.set_Steps` initialization fix (#214) + * `Turtle.set_Duration` anytime (#216) + * `Turtle.get_SVG` empty viewbox support (#218) + * `Turtle.get/set_SVGAttribute` (#219) + * `Turtle.get/set_SVGAnimation` (#220) + * `Turtle.get/set_PathTransform` (#217) + * `Turtle.Forward()` removing rounding (#221) -* Updated Methods - * `Turtle.Star` even point fix (#190) - * `Turtle.Polygon` partial polygon support (#194) -* New Shapes - * `Turtle.Rectangle` (#192) - * `Turtle.StarFlower` (#191) - * `Turtle.GoldenFlower` (#193) - * `Turtle.HatMonotile` (#196) - * `Turtle.TurtleMonotile` (#195) - * `Turtle.BarGraph` (#173) -* Added Demos - * Intro To Turtles (#197) - --- Additional details available in the [CHANGELOG](https://github.com/PowerShellWeb/Turtle/blob/main/CHANGELOG.md) From 0b7e9ea19abb269154d5fe282a7f2541024b33f2 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Tue, 9 Sep 2025 01:12:48 +0000 Subject: [PATCH 119/125] release: Turtle 0.2 Updating Module Manifest and CHANGELOG --- Examples/InscribedCircle.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Examples/InscribedCircle.svg b/Examples/InscribedCircle.svg index a44925e..e6088b8 100644 --- a/Examples/InscribedCircle.svg +++ b/Examples/InscribedCircle.svg @@ -4,10 +4,10 @@ - - + + From 63532abaf64f57b75c242498e62d4980973c97a8 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Tue, 9 Sep 2025 01:12:48 +0000 Subject: [PATCH 120/125] release: Turtle 0.2 Updating Module Manifest and CHANGELOG --- Examples/InscribedCirclePattern.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Examples/InscribedCirclePattern.svg b/Examples/InscribedCirclePattern.svg index 48d02f6..986095e 100644 --- a/Examples/InscribedCirclePattern.svg +++ b/Examples/InscribedCirclePattern.svg @@ -4,10 +4,10 @@ - - + + From 04785104cabaf8ef6c31d2adf6dde9846f6b9e15 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Mon, 8 Sep 2025 18:13:12 -0700 Subject: [PATCH 121/125] docs: Adding Turtles All The Way Down to README ( Fixes #206 ) Fixing inscribed circle example (forcing ordering) --- Examples/InscribedCircle.turtle.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Examples/InscribedCircle.turtle.ps1 b/Examples/InscribedCircle.turtle.ps1 index 020c3b0..023a829 100644 --- a/Examples/InscribedCircle.turtle.ps1 +++ b/Examples/InscribedCircle.turtle.ps1 @@ -5,10 +5,10 @@ A simple example of turtles containing turtles #> $inscribedCircle = - turtle width 42 height 42 turtles @{ + turtle width 42 height 42 turtles ([Ordered]@{ 'square' = turtle square 42 fill '#4488ff' stroke '#224488' 'circle' = turtle circle 21 fill '#224488' stroke '#4488ff' - } + }) $inscribedCircle | Save-Turtle ./InscribedCircle.svg $inscribedCircle | Save-Turtle ./InscribedCirclePattern.svg Pattern From 9098c853c66d49d39b373c5d68ff403953d72d3e Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Mon, 8 Sep 2025 18:23:53 -0700 Subject: [PATCH 122/125] feat: `Turtle.Clear()` steps and Turtles ( Fixes #223, Fixes #224 ) --- Types/Turtle/Clear.ps1 | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Types/Turtle/Clear.ps1 b/Types/Turtle/Clear.ps1 index c88c6d5..2b932ad 100644 --- a/Types/Turtle/Clear.ps1 +++ b/Types/Turtle/Clear.ps1 @@ -1,7 +1,18 @@ +<# +.SYNOPSIS + Clears a Turtle +.DESCRIPTION + Clears the heading, steps, position, minimim, maximum, and any nested Turtles. +.EXAMPLE + turtle square 42 clear circle 21 +#> $this.Heading = 0 -$this.Steps = @() +if ($this.Steps.Clear) { + $this.Steps.Clear() +} $this | Add-Member -MemberType NoteProperty -Force -Name '.Position' -Value ([pscustomobject]@{ X = 0; Y = 0 }) $this | Add-Member -MemberType NoteProperty -Force -Name '.Minimum' -Value ([pscustomobject]@{ X = 0; Y = 0 }) $this | Add-Member -MemberType NoteProperty -Force -Name '.Maximum' -Value ([pscustomobject]@{ X = 0; Y = 0 }) $this.ViewBox = 0 +$this.Turtles.Clear() return $this \ No newline at end of file From 46d0a0f369d0c78e9cb6a597342f47f6926c3e9b Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Tue, 9 Sep 2025 01:24:13 +0000 Subject: [PATCH 123/125] feat: `Turtle.Clear()` steps and Turtles ( Fixes #223, Fixes #224 ) --- Turtle.types.ps1xml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/Turtle.types.ps1xml b/Turtle.types.ps1xml index cb6a164..cd5361c 100644 --- a/Turtle.types.ps1xml +++ b/Turtle.types.ps1xml @@ -486,12 +486,23 @@ return $this Clear From 229755a099d341b89a61164d7b9f43572b513b25 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Mon, 8 Sep 2025 18:32:59 -0700 Subject: [PATCH 124/125] feat: Typecasting to float in tests The joy of double procession comparison --- Turtle.tests.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Turtle.tests.ps1 b/Turtle.tests.ps1 index 7eabdb5..2607e14 100644 --- a/Turtle.tests.ps1 +++ b/Turtle.tests.ps1 @@ -60,7 +60,7 @@ describe Turtle { [Math]::Round($turtle.Position.Y,10) | Should -be 1 $turtle = $turtle.Rotate($turtle.Towards(2,2)) $turtle = $turtle.Forward($turtle.Distance(2,2)) - $turtle.Heading | Should -be 45 + $turtle.Heading -as [float] | Should -be 45 [Math]::Round($turtle.Position.Y,10) | Should -be 2 [Math]::Round($turtle.Position.Y,10) | Should -be 2 } From f60d6ccfbd89775d9b2c10b7d8cb78ea25edb23a Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Mon, 8 Sep 2025 19:00:02 -0700 Subject: [PATCH 125/125] release: Turtle 0.2 Adding note and social links --- Turtle.psd1 | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Turtle.psd1 b/Turtle.psd1 index 22f8116..eb328e7 100644 --- a/Turtle.psd1 +++ b/Turtle.psd1 @@ -66,6 +66,17 @@ Which can contain `.Turtles`... --- Additional details available in the [CHANGELOG](https://github.com/PowerShellWeb/Turtle/blob/main/CHANGELOG.md) + +Please: + +* [Like](https://github.com/PowerShell/Turtle) +* [Share](https://psturtle.com/) +* Subscribe + * [psturtle.com](https://bsky.app/profile/psturtle.com) + * [mrpowershell.com](https://bsky.app/profile/mrpowershell.com) + * [StartAutomating](https://github.com/StartAutomating) + * [PowerShellWeb](https://github.com/PowerShellWeb) +* Sponsor [StartAutomating](https://github.com/sponsors/StartAutomating) '@ } }

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 IKP^uF9~fK_Q~&?~ From ca6b7225accc41162ff473639a75fa555a25a15f Mon Sep 17 00:00:00 2001 From: James Brundage Date: Thu, 4 Sep 2025 03:57:34 +0000 Subject: [PATCH 022/125] feat: `Turtle.get_Canvas` rasterization improvement ( Fixes #210 ) --- Examples/SierpinskiTriangle.png | Bin 29632 -> 29055 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Examples/SierpinskiTriangle.png b/Examples/SierpinskiTriangle.png index 52017004fa218ee3f39df5568d08ea276286f7aa..98169faa4b154cb9b2ac24667510d4b5aa1d264c 100644 GIT binary patch literal 29055 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«Q9vR*u&K$ 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 AYybcN literal 29632 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 MHC@%uDpvmg58V^dnE(I) From e43d289bda22e28f58720439c3bf8b4df68ee683 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Thu, 4 Sep 2025 14:21:56 -0700 Subject: [PATCH 023/125] feat: `Turtle.Towards()` targets ( Fixes #211 ) --- Types/Turtle/Towards.ps1 | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/Types/Turtle/Towards.ps1 b/Types/Turtle/Towards.ps1 index 35af8b5..39a20d9 100644 --- a/Types/Turtle/Towards.ps1 +++ b/Types/Turtle/Towards.ps1 @@ -4,16 +4,36 @@ .DESCRIPTION Determines the angle from the turtle's current heading towards a point. #> -param( -# The X-coordinate -[double]$X = 0, -# The Y-coordinate -[double]$Y = 0 -) +param() + +$towards = $args + +$tx = 0.0 +$ty = 0.0 + +$nCount = 0 +foreach ($toward in $towards) { + if ($toward -is [double] -or $toward -is [float] -or $toward -is [int]) { + if (-not ($nCount % 2)) { + $tx = $toward + } else { + $ty = $toward + } + $nCount++ + } + elseif ($null -ne $toward.X -and $null -ne $toward.Y) { + $tx = $toward.x + $ty = $toward.y + $nCount+= 2 + } +} + +$tx/=($nCount/2) +$ty/=($nCount/2) # Determine the delta from the turtle's current position to the specified point -$deltaX = $X - $this.Position.X -$deltaY = $Y - $this.Position.Y +$deltaX = $tx - $this.Position.X +$deltaY = $ty - $this.Position.Y # Calculate the angle in radians and convert to degrees $angle = [Math]::Atan2($deltaY, $deltaX) * 180 / [Math]::PI # Return the angle minus the current heading (modulo 360) From 7d585004ae53ece621ce8d17c1b8b2b2c23f8b84 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Thu, 4 Sep 2025 21:22:14 +0000 Subject: [PATCH 024/125] feat: `Turtle.Towards()` targets ( Fixes #211 ) --- Turtle.types.ps1xml | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/Turtle.types.ps1xml b/Turtle.types.ps1xml index 27c46b4..3d854ed 100644 --- a/Turtle.types.ps1xml +++ b/Turtle.types.ps1xml @@ -2427,16 +2427,36 @@ return "$($this.SVG.OuterXml)" .DESCRIPTION Determines the angle from the turtle's current heading towards a point. #> -param( -# The X-coordinate -[double]$X = 0, -# The Y-coordinate -[double]$Y = 0 -) +param() + +$towards = $args + +$tx = 0.0 +$ty = 0.0 + +$nCount = 0 +foreach ($toward in $towards) { + if ($toward -is [double] -or $toward -is [float] -or $toward -is [int]) { + if (-not ($nCount % 2)) { + $tx = $toward + } else { + $ty = $toward + } + $nCount++ + } + elseif ($null -ne $toward.X -and $null -ne $toward.Y) { + $tx = $toward.x + $ty = $toward.y + $nCount+= 2 + } +} + +$tx/=($nCount/2) +$ty/=($nCount/2) # Determine the delta from the turtle's current position to the specified point -$deltaX = $X - $this.Position.X -$deltaY = $Y - $this.Position.Y +$deltaX = $tx - $this.Position.X +$deltaY = $ty - $this.Position.Y # Calculate the angle in radians and convert to degrees $angle = [Math]::Atan2($deltaY, $deltaX) * 180 / [Math]::PI # Return the angle minus the current heading (modulo 360) From 345ad3b0b163daff676727d055c2478b817e0f36 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Thu, 4 Sep 2025 14:23:29 -0700 Subject: [PATCH 025/125] feat: `Turtle.Distance()` targets ( Fixes #212 ) --- Types/Turtle/Distance.ps1 | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/Types/Turtle/Distance.ps1 b/Types/Turtle/Distance.ps1 index 87c3b25..01a226a 100644 --- a/Types/Turtle/Distance.ps1 +++ b/Types/Turtle/Distance.ps1 @@ -4,16 +4,36 @@ .DESCRIPTION Determines the distance from the turtle's current position to a point. #> -param( -# The X-coordinate -[double]$X = 0, -# The Y-coordinate -[double]$Y = 0 -) +param() + +$towards = $args + +$tx = 0.0 +$ty = 0.0 + +$nCount = 0 +foreach ($toward in $towards) { + if ($toward -is [double] -or $toward -is [float] -or $toward -is [int]) { + if (-not ($nCount % 2)) { + $tx = $toward + } else { + $ty = $toward + } + $nCount++ + } + elseif ($null -ne $toward.X -and $null -ne $toward.Y) { + $tx = $toward.x + $ty = $toward.y + $nCount+= 2 + } +} + +$tx/=($nCount/2) +$ty/=($nCount/2) # Determine the delta from the turtle's current position to the specified point -$deltaX = $X - $this.Position.X -$deltaY = $Y - $this.Position.Y +$deltaX = $tx - $this.Position.X +$deltaY = $ty - $this.Position.Y # Calculate the distance using the Pythagorean theorem return [Math]::Sqrt($deltaX*$deltaX + $deltaY*$deltaY) \ No newline at end of file From 4130ca5d720b7c88be52fe660be72d5273428866 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Thu, 4 Sep 2025 21:23:48 +0000 Subject: [PATCH 026/125] feat: `Turtle.Distance()` targets ( Fixes #212 ) --- Turtle.types.ps1xml | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/Turtle.types.ps1xml b/Turtle.types.ps1xml index 3d854ed..79502a4 100644 --- a/Turtle.types.ps1xml +++ b/Turtle.types.ps1xml @@ -540,16 +540,36 @@ return $this.LSystem('F+F+F+F', [Ordered]@{ .DESCRIPTION Determines the distance from the turtle's current position to a point. #> -param( -# The X-coordinate -[double]$X = 0, -# The Y-coordinate -[double]$Y = 0 -) +param() + +$towards = $args + +$tx = 0.0 +$ty = 0.0 + +$nCount = 0 +foreach ($toward in $towards) { + if ($toward -is [double] -or $toward -is [float] -or $toward -is [int]) { + if (-not ($nCount % 2)) { + $tx = $toward + } else { + $ty = $toward + } + $nCount++ + } + elseif ($null -ne $toward.X -and $null -ne $toward.Y) { + $tx = $toward.x + $ty = $toward.y + $nCount+= 2 + } +} + +$tx/=($nCount/2) +$ty/=($nCount/2) # Determine the delta from the turtle's current position to the specified point -$deltaX = $X - $this.Position.X -$deltaY = $Y - $this.Position.Y +$deltaX = $tx - $this.Position.X +$deltaY = $ty - $this.Position.Y # Calculate the distance using the Pythagorean theorem return [Math]::Sqrt($deltaX*$deltaX + $deltaY*$deltaY) From 7e2fe151bf080dab479c4e7fc26c2b2c1fe75de1 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Thu, 4 Sep 2025 20:30:13 -0700 Subject: [PATCH 027/125] docs: Follow That Turtle Example ( Fixes #206 ) --- Examples/FollowThatTurtle.turtle.ps1 | 62 ++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 Examples/FollowThatTurtle.turtle.ps1 diff --git a/Examples/FollowThatTurtle.turtle.ps1 b/Examples/FollowThatTurtle.turtle.ps1 new file mode 100644 index 0000000..ed0d2f2 --- /dev/null +++ b/Examples/FollowThatTurtle.turtle.ps1 @@ -0,0 +1,62 @@ +<# +.SYNOPSIS + Follow that Turtle! +.DESCRIPTION + Basic behavior modelling with Turtle. + + A series of turtles will follow the next turtle. +#> +param( +# The size of the square +[double] +$Size = 200, + +# The speed of each turtle +[double] +$Speed = 1, + +# The number of steps +[int] +$StepCount +) + +# If no steps were provided +if (-not $StepCount) { + # double the size and divide by speed + $StepCount = ($size * 2)/$speed +} + +# Set up our turtles. +$followThatTurtle = turtle square $Size turtles ([Ordered]@{ + t1 = turtle teleport 0 0 + t2 = turtle teleport $Size 0 + t3 = turtle teleport $Size $Size + t4 = turtle teleport 0 $Size +}) + +# For each step +foreach ($n in 1..([Math]::Abs($StepCount))) { + # Go to each turtle + for ($turtleNumber = 0; $turtleNumber -lt $followThatTurtle.Turtles.Count; $turtleNumber++) { + $thisTurtle = $followThatTurtle.Turtles[$turtleNumber] + # and find the next turtle + $nextTurtle = if ($turtleNumber -eq $followThatTurtle.Turtles.Count - 1) { + $followThatTurtle.Turtles[0] + } else { + $followThatTurtle.Turtles[$turtleNumber + 1] + } + # If we are more than 1 unit away + if ($thisTurtle.Distance($nextTurtle) -ge 1) { + # rotate towards it + $null = $thisTurtle.Rotate( + $thisTurtle.Towards($nextTurtle) + ).Forward($Speed) # and move forward. + } + } +} + + +$followThatTurtle | turtle save ./FollowThatTurtle.svg +$followThatTurtle.Stroke = 'transparent' +$followThatTurtle | Save-Turtle ./FollowThatTurtlePattern.svg Pattern + From 00f691bda7ca7bc43c15d26e638f0882145c7139 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Fri, 5 Sep 2025 03:31:07 +0000 Subject: [PATCH 028/125] docs: Follow That Turtle Example ( Fixes #206 ) --- Examples/FollowThatTurtle.svg | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Examples/FollowThatTurtle.svg diff --git a/Examples/FollowThatTurtle.svg b/Examples/FollowThatTurtle.svg new file mode 100644 index 0000000..39acb66 --- /dev/null +++ b/Examples/FollowThatTurtle.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file From eb6a66a01401cb833fdecaa7bd744cf7fc0d7698 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Fri, 5 Sep 2025 03:31:07 +0000 Subject: [PATCH 029/125] docs: Follow That Turtle Example ( Fixes #206 ) --- Examples/FollowThatTurtlePattern.svg | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Examples/FollowThatTurtlePattern.svg diff --git a/Examples/FollowThatTurtlePattern.svg b/Examples/FollowThatTurtlePattern.svg new file mode 100644 index 0000000..e63bcdd --- /dev/null +++ b/Examples/FollowThatTurtlePattern.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 320f33af4fab092f3b0f66af6c07753525f3a192 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Thu, 4 Sep 2025 20:38:55 -0700 Subject: [PATCH 030/125] docs: Attack and Evade Example ( Fixes #206 ) --- Examples/AttackAndEvade.turtle.ps1 | 86 ++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 Examples/AttackAndEvade.turtle.ps1 diff --git a/Examples/AttackAndEvade.turtle.ps1 b/Examples/AttackAndEvade.turtle.ps1 new file mode 100644 index 0000000..bd083bb --- /dev/null +++ b/Examples/AttackAndEvade.turtle.ps1 @@ -0,0 +1,86 @@ +<# +.SYNOPSIS + Attack and Evade +.DESCRIPTION + Simple behavior modelling with Turtle. +.NOTES + Imagine we have four carnivorous turtles and four turtles that don't want to be eaten. + + Each carnivorous turtle starts in a corner of a square. + + Each evader starts in the center. + + Each attacker will chase the evader. + + Each evader will run away at an angle (by default 90 degrees). +#> +param( +[double] +$SquareSize = 420, +[double] +$EvaderSpeed = (Get-Random -Min 1 -Max 5), +[double] +$AttackerSpeedRatio = ((1 + [Math]::Sqrt(5))/2), +[double] +$EvadeAngle = 90 +) + +if ($PSScriptRoot) { Push-Location $PSScriptRoot} + +$midpoint = ($squareSize/2), ($squareSize/2) +$attackerSpeed = $evaderSpeed * $AttackerSpeedRatio # (1 + (Get-Random -Min 10 -Max 50)/50) # (Get-Random -Min 1 -Max 5) +$stepCount = $squareSize/2 * (1 + ([Math]::Abs($attackerSpeed - $evaderSpeed))) + +$attackAndEvade = turtle square $squareSize turtles ([Ordered]@{ + a1 = turtle teleport 0 0 # stroke 'red' pathclass 'red-stroke' fill red + a2 = turtle teleport $squareSize 0 # stroke 'yellow' pathclass 'yellow-stroke' fill yellow + a3 = turtle teleport $squareSize $squareSize # stroke 'green' pathclass 'green-stroke' fill green + a4 = turtle teleport 0 $squareSize # stroke 'blue' PathClass 'blue-stroke' fill blue + e1 = turtle teleport $midpoint # stroke 'red' fill 'red' + e2 = turtle teleport $midpoint # stroke 'yellow' fill 'yellow' + e3 = turtle teleport $midpoint # stroke 'green' fill 'green' + e4 = turtle teleport $midpoint # stroke 'blue' fill 'blue' +}) + + + +# Since all attackers and evaders start with equal distances, +# when we have caught one we have caught them all. +:caughtEm foreach ($n in 1..$stepCount) { + + # Get the attacker turtles + $attackers = $attackAndEvade.Turtles[@($attackAndEvade.Turtles.Keys -match '^a')] + # Get the evading turtles + $evaders = $attackAndEvade.Turtles[@($attackAndEvade.Turtles.Keys -match '^e')] + + for ($evaderNumber = 0; $evaderNumber -lt $evaders.Length; $evaderNumber++) { + $thisTurtle = $evaders[$evaderNumber] + $runningAwayFrom = $attackers[$evaderNumber % $attackers.Length] + $null = $thisTurtle.Rotate( + $thisTurtle.Towards($runningAwayFrom) + $evadeAngle # (Get-Random -Minimum 80 -Maximum 100) + ).Forward($evaderSpeed) + } + + for ($attackerNumber = 0; $attackerNumber -lt $attackers.Length; $attackerNumber++) { + $thisTurtle = $attackers[$attackerNumber] + $runningTowards = $evaders[$attackerNumber % $evaders.Length] + $null = $thisTurtle.Rotate( + $thisTurtle.Towards($runningTowards) # + (Get-Random -Minimum -10 -Maximum 10) + ).Forward($attackerSpeed) + } + + for ($attackerNumber = 0; $attackerNumber -lt $attackers.Length; $attackerNumber++) { + $thisTurtle = $attackers[$attackerNumber] + $runningTowards = $evaders[$attackerNumber] + if ($thisTurtle.Distance($runningTowards) -le 1) { + break caughtEm + } + } +} + + +$attackAndEvade | turtle save ./AttackAndEvade.svg +$attackAndEvade.Stroke = 'transparent' +$attackAndEvade | Save-Turtle ./AttackAndEvadePattern.svg Pattern + +if ($PSScriptRoot) { Pop-Location} \ No newline at end of file From 51fe42040233deb7230607287a0c4e057ed14c69 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Fri, 5 Sep 2025 03:39:12 +0000 Subject: [PATCH 031/125] docs: Attack and Evade Example ( Fixes #206 ) --- Examples/AttackAndEvade.svg | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Examples/AttackAndEvade.svg diff --git a/Examples/AttackAndEvade.svg b/Examples/AttackAndEvade.svg new file mode 100644 index 0000000..8f026ba --- /dev/null +++ b/Examples/AttackAndEvade.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 7eec475b2eeac2a65917f0bea22adfafef893e05 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Fri, 5 Sep 2025 03:39:12 +0000 Subject: [PATCH 032/125] docs: Attack and Evade Example ( Fixes #206 ) --- Examples/AttackAndEvadePattern.svg | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Examples/AttackAndEvadePattern.svg diff --git a/Examples/AttackAndEvadePattern.svg b/Examples/AttackAndEvadePattern.svg new file mode 100644 index 0000000..f7c9b04 --- /dev/null +++ b/Examples/AttackAndEvadePattern.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 5a962a697d7222edf243339864822215504556dc Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Fri, 5 Sep 2025 12:15:29 -0700 Subject: [PATCH 033/125] docs: Follow That Turtle (not too close) example ( Fixes #206 ) --- .../FollowThatTurtleNotTooClose.turtle.ps1 | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 Examples/FollowThatTurtleNotTooClose.turtle.ps1 diff --git a/Examples/FollowThatTurtleNotTooClose.turtle.ps1 b/Examples/FollowThatTurtleNotTooClose.turtle.ps1 new file mode 100644 index 0000000..0b54177 --- /dev/null +++ b/Examples/FollowThatTurtleNotTooClose.turtle.ps1 @@ -0,0 +1,78 @@ +<# +.SYNOPSIS + Follow that Turtle! (but not too close) +.DESCRIPTION + Basic behavior modelling with Turtle. + + A series of turtles will follow the next turtle, until they get within a proximity. + + Then, the same turtles will avoid the turtle, until they are outside of the proximity +#> +param( +# The size of the square +[double] +$Size = 200, + +# The speed of each turtle +[double] +$Speed = 1, + +# The number of steps +[int] +$StepCount, + +[double] +$Proximity +) + +# If no steps were provided +if (-not $StepCount) { + # double the size and divide by speed + $StepCount = ($size * 2)/$speed +} + +if (-not $Proximity) { + $Proximity = $size/2 +} + +# Set up our turtles. +$followThatTurtle = turtle square $Size turtles ([Ordered]@{ + t1 = turtle teleport 0 0 + t2 = turtle teleport $Size 0 + t3 = turtle teleport $Size $Size + t4 = turtle teleport 0 $Size +}) + +# For each step +foreach ($n in 1..([Math]::Abs($StepCount))) { + # Go to each turtle + for ($turtleNumber = 0; $turtleNumber -lt $followThatTurtle.Turtles.Count; $turtleNumber++) { + $thisTurtle = $followThatTurtle.Turtles[$turtleNumber] + # and find the next turtle + $nextTurtle = if ($turtleNumber -eq $followThatTurtle.Turtles.Count - 1) { + $followThatTurtle.Turtles[0] + } else { + $followThatTurtle.Turtles[$turtleNumber + 1] + } + # If we are more than the proximity away + if ($thisTurtle.Distance($nextTurtle) -ge $Proximity) { + # rotate towards it + $null = $thisTurtle.Rotate( + $thisTurtle.Towards($nextTurtle) + ).Forward($Speed) # and move forward. + } + # If we within the proxmity + else { + # rotate away + $null = $thisTurtle.Rotate( + $thisTurtle.Towards($nextTurtle) + 90 + ).Forward($Speed) # and move forward. + } + } +} + + +$followThatTurtle | turtle save ./FollowThatTurtleNotTooClose.svg +$followThatTurtle.Stroke = 'transparent' +$followThatTurtle | Save-Turtle ./FollowThatTurtleNotTooClosePattern.svg Pattern + From 057609ebabbbd1c348aabcffa5497fb7ef343262 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Fri, 5 Sep 2025 19:15:49 +0000 Subject: [PATCH 034/125] docs: Follow That Turtle (not too close) example ( Fixes #206 ) --- Examples/AttackAndEvade.svg | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Examples/AttackAndEvade.svg b/Examples/AttackAndEvade.svg index 8f026ba..5d41137 100644 --- a/Examples/AttackAndEvade.svg +++ b/Examples/AttackAndEvade.svg @@ -4,21 +4,21 @@ - + - + - + - + - + - + - + - + From 394e6af0e28b691adabf35f981c864a113fe4f37 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Fri, 5 Sep 2025 19:15:49 +0000 Subject: [PATCH 035/125] docs: Follow That Turtle (not too close) example ( Fixes #206 ) --- Examples/AttackAndEvadePattern.svg | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Examples/AttackAndEvadePattern.svg b/Examples/AttackAndEvadePattern.svg index f7c9b04..3f54e27 100644 --- a/Examples/AttackAndEvadePattern.svg +++ b/Examples/AttackAndEvadePattern.svg @@ -4,21 +4,21 @@ - + - + - + - + - + - + - + - + From 14224e5de9d1a652d06484d40edd127eed1d66eb Mon Sep 17 00:00:00 2001 From: James Brundage Date: Fri, 5 Sep 2025 19:16:18 +0000 Subject: [PATCH 036/125] docs: Follow That Turtle (not too close) example ( Fixes #206 ) --- Examples/FollowThatTurtleNotTooClose.svg | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Examples/FollowThatTurtleNotTooClose.svg diff --git a/Examples/FollowThatTurtleNotTooClose.svg b/Examples/FollowThatTurtleNotTooClose.svg new file mode 100644 index 0000000..c12ac61 --- /dev/null +++ b/Examples/FollowThatTurtleNotTooClose.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file From ada7d193961fe282f78653b7404235594294d6f9 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Fri, 5 Sep 2025 19:16:18 +0000 Subject: [PATCH 037/125] docs: Follow That Turtle (not too close) example ( Fixes #206 ) --- .../FollowThatTurtleNotTooClosePattern.svg | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Examples/FollowThatTurtleNotTooClosePattern.svg diff --git a/Examples/FollowThatTurtleNotTooClosePattern.svg b/Examples/FollowThatTurtleNotTooClosePattern.svg new file mode 100644 index 0000000..992a4b1 --- /dev/null +++ b/Examples/FollowThatTurtleNotTooClosePattern.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 68747e41165847686cb72677a4e2fb571299a672 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Fri, 5 Sep 2025 13:20:06 -0700 Subject: [PATCH 038/125] fix: `Turtle.Step()` uses .Add ( Fixes #213 ) --- Types/Turtle/Step.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Types/Turtle/Step.ps1 b/Types/Turtle/Step.ps1 index 3988b7f..5908ca4 100644 --- a/Types/Turtle/Step.ps1 +++ b/Types/Turtle/Step.ps1 @@ -17,9 +17,9 @@ param( if ($DeltaX -or $DeltaY) { $this.Position = $DeltaX, $DeltaY if ($This.IsPenDown) { - $this.Steps += " l $DeltaX $DeltaY" + $this.Steps.Add(" l $DeltaX $DeltaY") } else { - $this.Steps += " m $DeltaX $DeltaY" + $this.Steps.Add(" m $DeltaX $DeltaY") } } From 7c7f8b52e45ad451af24b068ac25a5b76ef8f3e8 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Fri, 5 Sep 2025 20:20:48 +0000 Subject: [PATCH 039/125] fix: `Turtle.Step()` uses .Add ( Fixes #213 ) --- Turtle.types.ps1xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Turtle.types.ps1xml b/Turtle.types.ps1xml index 79502a4..2bd8769 100644 --- a/Turtle.types.ps1xml +++ b/Turtle.types.ps1xml @@ -2254,9 +2254,9 @@ param( if ($DeltaX -or $DeltaY) { $this.Position = $DeltaX, $DeltaY if ($This.IsPenDown) { - $this.Steps += " l $DeltaX $DeltaY" + $this.Steps.Add(" l $DeltaX $DeltaY") } else { - $this.Steps += " m $DeltaX $DeltaY" + $this.Steps.Add(" m $DeltaX $DeltaY") } } From 6eb80390bd7e185d8d55dbcfa308126f86f8597b Mon Sep 17 00:00:00 2001 From: James Brundage Date: Fri, 5 Sep 2025 20:20:52 +0000 Subject: [PATCH 040/125] fix: `Turtle.Step()` uses .Add ( Fixes #213 ) --- Examples/AttackAndEvade.svg | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Examples/AttackAndEvade.svg b/Examples/AttackAndEvade.svg index 5d41137..8f026ba 100644 --- a/Examples/AttackAndEvade.svg +++ b/Examples/AttackAndEvade.svg @@ -4,21 +4,21 @@ - + - + - + - + - + - + - + - + From 3e3ea06c3f249e68946bb7c5e4bd24318f4e8c52 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Fri, 5 Sep 2025 20:20:52 +0000 Subject: [PATCH 041/125] fix: `Turtle.Step()` uses .Add ( Fixes #213 ) --- Examples/AttackAndEvadePattern.svg | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Examples/AttackAndEvadePattern.svg b/Examples/AttackAndEvadePattern.svg index 3f54e27..f7c9b04 100644 --- a/Examples/AttackAndEvadePattern.svg +++ b/Examples/AttackAndEvadePattern.svg @@ -4,21 +4,21 @@ - + - + - + - + - + - + - + - + From d5f75c4abc6d645e082478dd628e3550c97e41ee Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sat, 6 Sep 2025 13:15:23 -0700 Subject: [PATCH 042/125] docs: Follow That Turtle (hide and seek) example ( Fixes #206 ) --- Examples/AttackAndEvade.svg | 27 ------ Examples/AttackAndEvade.turtle.ps1 | 86 ------------------ Examples/AttackAndEvadePattern.svg | 27 ------ .../FollowThatTurtle-HideAndSeek.turtle.ps1 | 88 +++++++++++++++++++ 4 files changed, 88 insertions(+), 140 deletions(-) delete mode 100644 Examples/AttackAndEvade.svg delete mode 100644 Examples/AttackAndEvade.turtle.ps1 delete mode 100644 Examples/AttackAndEvadePattern.svg create mode 100644 Examples/FollowThatTurtle-HideAndSeek.turtle.ps1 diff --git a/Examples/AttackAndEvade.svg b/Examples/AttackAndEvade.svg deleted file mode 100644 index 8f026ba..0000000 --- a/Examples/AttackAndEvade.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Examples/AttackAndEvade.turtle.ps1 b/Examples/AttackAndEvade.turtle.ps1 deleted file mode 100644 index bd083bb..0000000 --- a/Examples/AttackAndEvade.turtle.ps1 +++ /dev/null @@ -1,86 +0,0 @@ -<# -.SYNOPSIS - Attack and Evade -.DESCRIPTION - Simple behavior modelling with Turtle. -.NOTES - Imagine we have four carnivorous turtles and four turtles that don't want to be eaten. - - Each carnivorous turtle starts in a corner of a square. - - Each evader starts in the center. - - Each attacker will chase the evader. - - Each evader will run away at an angle (by default 90 degrees). -#> -param( -[double] -$SquareSize = 420, -[double] -$EvaderSpeed = (Get-Random -Min 1 -Max 5), -[double] -$AttackerSpeedRatio = ((1 + [Math]::Sqrt(5))/2), -[double] -$EvadeAngle = 90 -) - -if ($PSScriptRoot) { Push-Location $PSScriptRoot} - -$midpoint = ($squareSize/2), ($squareSize/2) -$attackerSpeed = $evaderSpeed * $AttackerSpeedRatio # (1 + (Get-Random -Min 10 -Max 50)/50) # (Get-Random -Min 1 -Max 5) -$stepCount = $squareSize/2 * (1 + ([Math]::Abs($attackerSpeed - $evaderSpeed))) - -$attackAndEvade = turtle square $squareSize turtles ([Ordered]@{ - a1 = turtle teleport 0 0 # stroke 'red' pathclass 'red-stroke' fill red - a2 = turtle teleport $squareSize 0 # stroke 'yellow' pathclass 'yellow-stroke' fill yellow - a3 = turtle teleport $squareSize $squareSize # stroke 'green' pathclass 'green-stroke' fill green - a4 = turtle teleport 0 $squareSize # stroke 'blue' PathClass 'blue-stroke' fill blue - e1 = turtle teleport $midpoint # stroke 'red' fill 'red' - e2 = turtle teleport $midpoint # stroke 'yellow' fill 'yellow' - e3 = turtle teleport $midpoint # stroke 'green' fill 'green' - e4 = turtle teleport $midpoint # stroke 'blue' fill 'blue' -}) - - - -# Since all attackers and evaders start with equal distances, -# when we have caught one we have caught them all. -:caughtEm foreach ($n in 1..$stepCount) { - - # Get the attacker turtles - $attackers = $attackAndEvade.Turtles[@($attackAndEvade.Turtles.Keys -match '^a')] - # Get the evading turtles - $evaders = $attackAndEvade.Turtles[@($attackAndEvade.Turtles.Keys -match '^e')] - - for ($evaderNumber = 0; $evaderNumber -lt $evaders.Length; $evaderNumber++) { - $thisTurtle = $evaders[$evaderNumber] - $runningAwayFrom = $attackers[$evaderNumber % $attackers.Length] - $null = $thisTurtle.Rotate( - $thisTurtle.Towards($runningAwayFrom) + $evadeAngle # (Get-Random -Minimum 80 -Maximum 100) - ).Forward($evaderSpeed) - } - - for ($attackerNumber = 0; $attackerNumber -lt $attackers.Length; $attackerNumber++) { - $thisTurtle = $attackers[$attackerNumber] - $runningTowards = $evaders[$attackerNumber % $evaders.Length] - $null = $thisTurtle.Rotate( - $thisTurtle.Towards($runningTowards) # + (Get-Random -Minimum -10 -Maximum 10) - ).Forward($attackerSpeed) - } - - for ($attackerNumber = 0; $attackerNumber -lt $attackers.Length; $attackerNumber++) { - $thisTurtle = $attackers[$attackerNumber] - $runningTowards = $evaders[$attackerNumber] - if ($thisTurtle.Distance($runningTowards) -le 1) { - break caughtEm - } - } -} - - -$attackAndEvade | turtle save ./AttackAndEvade.svg -$attackAndEvade.Stroke = 'transparent' -$attackAndEvade | Save-Turtle ./AttackAndEvadePattern.svg Pattern - -if ($PSScriptRoot) { Pop-Location} \ No newline at end of file diff --git a/Examples/AttackAndEvadePattern.svg b/Examples/AttackAndEvadePattern.svg deleted file mode 100644 index f7c9b04..0000000 --- a/Examples/AttackAndEvadePattern.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Examples/FollowThatTurtle-HideAndSeek.turtle.ps1 b/Examples/FollowThatTurtle-HideAndSeek.turtle.ps1 new file mode 100644 index 0000000..f040131 --- /dev/null +++ b/Examples/FollowThatTurtle-HideAndSeek.turtle.ps1 @@ -0,0 +1,88 @@ +<# +.SYNOPSIS + Hide and Seek +.DESCRIPTION + Simple behavior modelling with Turtle. +.NOTES + Imagine we have eight turtles playing hide and seek + + Four turtles are seeking. + + Four turtles are hiding. + + Each hiding turtle starts in the center. + + Each seeking turtle will chase a hiding turtle. + + Each hiding turtle will run away at an angle (by default 90 degrees). +#> +param( +[double] +$SquareSize = 420, +[double] +$HiderSpeed = (Get-Random -Min 1 -Max 5), +[double] +$SeekerSpeedRatio = ((1 + [Math]::Sqrt(5))/2), +[double] +$EvadeAngle = 90 +) + +if ($PSScriptRoot) { Push-Location $PSScriptRoot} + +$midpoint = ($squareSize/2), ($squareSize/2) +$seekerSpeed = $HiderSpeed * $SeekerSpeedRatio # (1 + (Get-Random -Min 10 -Max 50)/50) # (Get-Random -Min 1 -Max 5) +$stepCount = $squareSize/2 * (1 + ([Math]::Abs($attackerSpeed - $evaderSpeed))) + +$hideAndSeek = turtle square $squareSize turtles ([Ordered]@{ + s1 = turtle teleport 0 0 # stroke 'red' pathclass 'red-stroke' fill red + s2 = turtle teleport $squareSize 0 # stroke 'yellow' pathclass 'yellow-stroke' fill yellow + s3 = turtle teleport $squareSize $squareSize # stroke 'green' pathclass 'green-stroke' fill green + s4 = turtle teleport 0 $squareSize # stroke 'blue' PathClass 'blue-stroke' fill blue + h1 = turtle teleport $midpoint # stroke 'red' fill 'red' + h2 = turtle teleport $midpoint # stroke 'yellow' fill 'yellow' + h3 = turtle teleport $midpoint # stroke 'green' fill 'green' + h4 = turtle teleport $midpoint # stroke 'blue' fill 'blue' +}) + + + +# Since all attackers and evaders start with equal distances, +# when we have caught one we have caught them all. +:caughtEm foreach ($n in 1..$stepCount) { + + # Get the seeker turtles + $seekers = $hideAndSeek.Turtles[@($hideAndSeek.Turtles.Keys -match '^s')] + # Get the hiding turtles + $hiders = $hideAndSeek.Turtles[@($hideAndSeek.Turtles.Keys -match '^h')] + + for ($hiderNumber = 0; $hiderNumber -lt $hiders.Length; $hiderNumber++) { + $thisTurtle = $hiders[$hiderNumber] + $runningAwayFrom = $seekers[$hiderNumber % $seekers.Length] + $null = $thisTurtle.Rotate( + $thisTurtle.Towards($runningAwayFrom) + $evadeAngle # (Get-Random -Minimum 80 -Maximum 100) + ).Forward($HiderSpeed) + } + + for ($seekerNumber = 0; $seekerNumber -lt $seekers.Length; $seekerNumber++) { + $thisTurtle = $seekers[$seekerNumber] + $runningTowards = $hiders[$seekerNumber % $hiders.Length] + $null = $thisTurtle.Rotate( + $thisTurtle.Towards($runningTowards) # + (Get-Random -Minimum -10 -Maximum 10) + ).Forward($seekerSpeed) + } + + for ($seekerNumber = 0; $seekerNumber -lt $seekers.Length; $seekerNumber++) { + $thisTurtle = $seekers[$seekerNumber] + $runningTowards = $hiders[$seekerNumber % $hiders.Length] + if ($thisTurtle.Distance($runningTowards) -le 1) { + break caughtEm + } + } +} + + +$hideAndSeek | turtle save ./FollowThatTurtle-HideAndSeek.svg +$hideAndSeek.Stroke = 'transparent' +$hideAndSeek | Save-Turtle ./FollowThatTurtle-HideAndSeekPattern.svg Pattern + +if ($PSScriptRoot) { Pop-Location} \ No newline at end of file From 0dced75ed1b077c2ac7b88f11c8afef7e563b316 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sat, 6 Sep 2025 20:16:15 +0000 Subject: [PATCH 043/125] docs: Follow That Turtle (hide and seek) example ( Fixes #206 ) --- Examples/FollowThatTurtle-HideAndSeek.svg | 27 +++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Examples/FollowThatTurtle-HideAndSeek.svg diff --git a/Examples/FollowThatTurtle-HideAndSeek.svg b/Examples/FollowThatTurtle-HideAndSeek.svg new file mode 100644 index 0000000..385a9a6 --- /dev/null +++ b/Examples/FollowThatTurtle-HideAndSeek.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From dc9588c5ef0d669db818f29ab9062eb20fecee0f Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sat, 6 Sep 2025 20:16:16 +0000 Subject: [PATCH 044/125] docs: Follow That Turtle (hide and seek) example ( Fixes #206 ) --- .../FollowThatTurtle-HideAndSeekPattern.svg | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Examples/FollowThatTurtle-HideAndSeekPattern.svg diff --git a/Examples/FollowThatTurtle-HideAndSeekPattern.svg b/Examples/FollowThatTurtle-HideAndSeekPattern.svg new file mode 100644 index 0000000..da79426 --- /dev/null +++ b/Examples/FollowThatTurtle-HideAndSeekPattern.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 3d894c378889dc4f644e73911ea32046a14748b2 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sat, 6 Sep 2025 13:25:51 -0700 Subject: [PATCH 045/125] feat: `Turtle.set_Turtles` accepting ints and arrays ( Fixes #207 ) --- Types/Turtle/set_Turtles.ps1 | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/Types/Turtle/set_Turtles.ps1 b/Types/Turtle/set_Turtles.ps1 index d90d925..89e8a48 100644 --- a/Types/Turtle/set_Turtles.ps1 +++ b/Types/Turtle/set_Turtles.ps1 @@ -28,19 +28,41 @@ } save ./SquaresWithinSquares.svg #> param( +[PSObject] $Value ) +# If we don't already have a turtles dictionary if ($this -and -not $this.'.Turtles') { + # now is the time to create one. $this | Add-Member NoteProperty '.Turtles' ([Ordered]@{}) -Force } -if ($value -is [Collections.IDictionary]) { - foreach ($key in $value.Keys) { - $this.'.Turtles'[$key] = $Value[$key] - } -} elseif ($value.pstypenames -contains 'Turtle') { - $this.'.Turtles'["Turtle$($this.'.Turtles'.Count + 1)"] = $value +# Go over each value +foreach ($v in $value) { + # If the value was a dictionary + if ($v -is [Collections.IDictionary]) { + # merge it into our turtle dictionary + foreach ($key in $v.Keys) { + $this.'.Turtles'[$key] = $V[$key] + } + } elseif ($v.pstypenames -contains 'Turtle') { + # If it was a turtle, just add it + + # If the turtle had an ID, use it + if ($v.ID -ne 'Turtle') { + $this.'.Turtles'[$v.ID] = $v + } else { + # otherwise, provide it an auto incremented ID + $this.'.Turtles'["Turtle$($this.'.Turtles'.Count + 1)"] = $v + } + } elseif ($v -is [int]) { + # If the provided a number, let's create that many turtles. + # Note: the automatic placement of these turtles might be nice, and may be added in the future. + foreach ($n in 1..([Math]::Abs($value))) { + $this.'.Turtles'["Turtle$($this.'.Turtles'.Count + 1)"] = turtle + } + } } return $this.'.Turtles' \ No newline at end of file From e9ea076f71ae41c348209a7f6bf3545367bd33ee Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sat, 6 Sep 2025 20:26:26 +0000 Subject: [PATCH 046/125] feat: `Turtle.set_Turtles` accepting ints and arrays ( Fixes #207 ) --- Turtle.types.ps1xml | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/Turtle.types.ps1xml b/Turtle.types.ps1xml index 2bd8769..1262516 100644 --- a/Turtle.types.ps1xml +++ b/Turtle.types.ps1xml @@ -3884,19 +3884,41 @@ return $this.'.Turtles' } save ./SquaresWithinSquares.svg #> param( +[PSObject] $Value ) +# If we don't already have a turtles dictionary if ($this -and -not $this.'.Turtles') { + # now is the time to create one. $this | Add-Member NoteProperty '.Turtles' ([Ordered]@{}) -Force } -if ($value -is [Collections.IDictionary]) { - foreach ($key in $value.Keys) { - $this.'.Turtles'[$key] = $Value[$key] - } -} elseif ($value.pstypenames -contains 'Turtle') { - $this.'.Turtles'["Turtle$($this.'.Turtles'.Count + 1)"] = $value +# Go over each value +foreach ($v in $value) { + # If the value was a dictionary + if ($v -is [Collections.IDictionary]) { + # merge it into our turtle dictionary + foreach ($key in $v.Keys) { + $this.'.Turtles'[$key] = $V[$key] + } + } elseif ($v.pstypenames -contains 'Turtle') { + # If it was a turtle, just add it + + # If the turtle had an ID, use it + if ($v.ID -ne 'Turtle') { + $this.'.Turtles'[$v.ID] = $v + } else { + # otherwise, provide it an auto incremented ID + $this.'.Turtles'["Turtle$($this.'.Turtles'.Count + 1)"] = $v + } + } elseif ($v -is [int]) { + # If the provided a number, let's create that many turtles. + # Note: the automatic placement of these turtles might be nice, and may be added in the future. + foreach ($n in 1..([Math]::Abs($value))) { + $this.'.Turtles'["Turtle$($this.'.Turtles'.Count + 1)"] = turtle + } + } } return $this.'.Turtles' From a2214b27b1e3d51b2e40ed1665d67d533e09f0df Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sat, 6 Sep 2025 20:26:55 +0000 Subject: [PATCH 047/125] feat: `Turtle.set_Turtles` accepting ints and arrays ( Fixes #207 ) --- Examples/FollowThatTurtle-HideAndSeek.svg | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Examples/FollowThatTurtle-HideAndSeek.svg b/Examples/FollowThatTurtle-HideAndSeek.svg index 385a9a6..1e8f12e 100644 --- a/Examples/FollowThatTurtle-HideAndSeek.svg +++ b/Examples/FollowThatTurtle-HideAndSeek.svg @@ -4,21 +4,21 @@ - + - + - + - + - + - + - + - + From bcfb4ba1eeecaed44a5878728cf3774b306d9dcb Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sat, 6 Sep 2025 20:26:55 +0000 Subject: [PATCH 048/125] feat: `Turtle.set_Turtles` accepting ints and arrays ( Fixes #207 ) --- Examples/FollowThatTurtle-HideAndSeekPattern.svg | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Examples/FollowThatTurtle-HideAndSeekPattern.svg b/Examples/FollowThatTurtle-HideAndSeekPattern.svg index da79426..f5473f0 100644 --- a/Examples/FollowThatTurtle-HideAndSeekPattern.svg +++ b/Examples/FollowThatTurtle-HideAndSeekPattern.svg @@ -4,21 +4,21 @@ - + - + - + - + - + - + - + - + From 0a4c4aa259c52362549406ea367217da16422202 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sat, 6 Sep 2025 13:28:49 -0700 Subject: [PATCH 049/125] fix: `Turtle.set_Steps` initialization fix ( Fixes #214 ) --- Types/Turtle/set_Steps.ps1 | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/Types/Turtle/set_Steps.ps1 b/Types/Turtle/set_Steps.ps1 index 4c7529e..85d69e9 100644 --- a/Types/Turtle/set_Steps.ps1 +++ b/Types/Turtle/set_Steps.ps1 @@ -11,11 +11,8 @@ param( $Steps ) -if (-not $this.'.Steps') { - $this | Add-Member -MemberType NoteProperty -Force -Name '.Steps' -Value @( - [Collections.Generic.List[string]]::new($Steps) - ) -} else { - $this.'.Steps' = $steps +$currentSteps = $this.Steps +foreach ($step in $steps) { + $currentSteps.Add($step) } From faae157708dee8f5dcaf633742e39a339e494128 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sat, 6 Sep 2025 20:29:21 +0000 Subject: [PATCH 050/125] fix: `Turtle.set_Steps` initialization fix ( Fixes #214 ) --- Turtle.types.ps1xml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/Turtle.types.ps1xml b/Turtle.types.ps1xml index 1262516..51ca4e7 100644 --- a/Turtle.types.ps1xml +++ b/Turtle.types.ps1xml @@ -3544,12 +3544,9 @@ param( $Steps ) -if (-not $this.'.Steps') { - $this | Add-Member -MemberType NoteProperty -Force -Name '.Steps' -Value @( - [Collections.Generic.List[string]]::new($Steps) - ) -} else { - $this.'.Steps' = $steps +$currentSteps = $this.Steps +foreach ($step in $steps) { + $currentSteps.Add($step) } From 94a9cad0bff6983c9d2670983fc0e6e721dcfcad Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sat, 6 Sep 2025 20:29:39 +0000 Subject: [PATCH 051/125] fix: `Turtle.set_Steps` initialization fix ( Fixes #214 ) --- Examples/FollowThatTurtle-HideAndSeek.svg | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Examples/FollowThatTurtle-HideAndSeek.svg b/Examples/FollowThatTurtle-HideAndSeek.svg index 1e8f12e..2d45471 100644 --- a/Examples/FollowThatTurtle-HideAndSeek.svg +++ b/Examples/FollowThatTurtle-HideAndSeek.svg @@ -4,21 +4,21 @@ - + - + - + - + - + - + - + - + From 82398a484f7e4f8efdb09c7afd037eb4936b02c3 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sat, 6 Sep 2025 20:29:39 +0000 Subject: [PATCH 052/125] fix: `Turtle.set_Steps` initialization fix ( Fixes #214 ) --- Examples/FollowThatTurtle-HideAndSeekPattern.svg | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Examples/FollowThatTurtle-HideAndSeekPattern.svg b/Examples/FollowThatTurtle-HideAndSeekPattern.svg index f5473f0..ec38804 100644 --- a/Examples/FollowThatTurtle-HideAndSeekPattern.svg +++ b/Examples/FollowThatTurtle-HideAndSeekPattern.svg @@ -4,21 +4,21 @@ - + - + - + - + - + - + - + - + From 03b1d5c49915db230cacd15567d2ff0e33457ffe Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sat, 6 Sep 2025 13:30:47 -0700 Subject: [PATCH 053/125] docs: Follow That Turtle (hide and seek) example ( Fixes #206 ) Removing randomization --- Examples/FollowThatTurtle-HideAndSeek.turtle.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Examples/FollowThatTurtle-HideAndSeek.turtle.ps1 b/Examples/FollowThatTurtle-HideAndSeek.turtle.ps1 index f040131..9d92d62 100644 --- a/Examples/FollowThatTurtle-HideAndSeek.turtle.ps1 +++ b/Examples/FollowThatTurtle-HideAndSeek.turtle.ps1 @@ -20,7 +20,7 @@ param( [double] $SquareSize = 420, [double] -$HiderSpeed = (Get-Random -Min 1 -Max 5), +$HiderSpeed = 2, [double] $SeekerSpeedRatio = ((1 + [Math]::Sqrt(5))/2), [double] From e7382253366105fd705784933368b211c95877c2 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sat, 6 Sep 2025 14:21:01 -0700 Subject: [PATCH 054/125] feat: `Turtle.Morph()` stepwise animation support ( Fixes #215 ) --- Types/Turtle/Morph.ps1 | 46 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/Types/Turtle/Morph.ps1 b/Types/Turtle/Morph.ps1 index 7b3594e..05feb92 100644 --- a/Types/Turtle/Morph.ps1 +++ b/Types/Turtle/Morph.ps1 @@ -4,7 +4,11 @@ .DESCRIPTION Morphs a Turtle by animating its path. - Any two paths with the same number of points can be morphed into each other. + Any two paths with the same number of points can be morphed into each other smoothly. + + Any two paths with a different number of points will become a step-by-step animation. + + Since animations can include multiple complex paths, they can get quite large, and be quite beautiful. .EXAMPLE $sierpinskiTriangle = turtle SierpinskiTriangle 42 4 $SierpinskiTriangleFlipped = turtle rotate 180 SierpinskiTriangle 42 4 @@ -34,6 +38,12 @@ $flowerPetals3, $flowerPetals ) | Save-Turtle ./flowerPetalMorph.svg Pattern +.EXAMPLE + turtle SierpinskiTriangle 42 4 morph | + Save-Turtle ./SierpinskiTriangleConstruction.svg +.EXAMPLE + turtle stroke '#224488' fill '#4488ff' backgroundColor '#112244' rotate 60 SierpinskiTriangle 42 4 SierpinskiTriangle -42 4 morph | + Save-Turtle ./SierpinskiTriangleReflectionConstructionAndFill.svg #> param( [Parameter(ValueFromRemainingArguments)] @@ -41,30 +51,50 @@ $Arguments ) $durationArgument = $null - +$hasPoints = $false +$segmentCount = 0 $newPaths = @(foreach ($arg in $Arguments) { if ($arg -is [string]) { if ($arg -match '^\s{0,}m') { $arg + $hasPoints = $true } } elseif ($arg.PathData) { $arg.PathData + $hasPoints = $true } elseif ($arg.D) { $arg.D + $hasPoints = $true } elseif ($arg -is [TimeSpan]) { $durationArgument = $arg } elseif ($arg -is [double] -or $arg -is [int]) { - $durationArgument = [TimeSpan]::FromSeconds($arg) + if (-not $hasPoints -and $arg -is [int]) { + $segmentCount = [Math]::Abs($arg) + } else { + $durationArgument = [TimeSpan]::FromSeconds($arg) + } } }) if (-not $newPaths) { - return $this - <#$pathSegments = @($this.PathData -split '(?=\p{L})') - $newPaths = @(for ($segmentNumber = 0; $segmentNumber -lt $pathSegments.Count; $segmentNumber++) { - $pathSegments[0..$segmentNumber] -join ' ' - }) -join ';'#> + if ($this.Steps.Count) { + $stepList = @($this.PathData -join ' ' -split '(?=\p{L})' -ne '') + if ($segmentCount) { + $newPaths = @( + for ($n = 1; $n -lt $stepList.Length; $n += ($stepList.Length/$segmentCount)) { + $stepList[0..$n] -join ' ' + } + ) + } else { + $newPaths = @(foreach ($n in 1..($stepList.Length)) { + $stepList[0..$n] -join ' ' + }) + } + + } else { + return $this + } } if ($this.PathAnimation) { From f955fd285fdff967614471f4e82a0fd1c5a40607 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sat, 6 Sep 2025 21:21:24 +0000 Subject: [PATCH 055/125] feat: `Turtle.Morph()` stepwise animation support ( Fixes #215 ) --- Turtle.types.ps1xml | 46 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/Turtle.types.ps1xml b/Turtle.types.ps1xml index 51ca4e7..eec75ab 100644 --- a/Turtle.types.ps1xml +++ b/Turtle.types.ps1xml @@ -1350,7 +1350,11 @@ return $this.LSystem( .DESCRIPTION Morphs a Turtle by animating its path. - Any two paths with the same number of points can be morphed into each other. + Any two paths with the same number of points can be morphed into each other smoothly. + + Any two paths with a different number of points will become a step-by-step animation. + + Since animations can include multiple complex paths, they can get quite large, and be quite beautiful. .EXAMPLE $sierpinskiTriangle = turtle SierpinskiTriangle 42 4 $SierpinskiTriangleFlipped = turtle rotate 180 SierpinskiTriangle 42 4 @@ -1380,6 +1384,12 @@ return $this.LSystem( $flowerPetals3, $flowerPetals ) | Save-Turtle ./flowerPetalMorph.svg Pattern +.EXAMPLE + turtle SierpinskiTriangle 42 4 morph | + Save-Turtle ./SierpinskiTriangleConstruction.svg +.EXAMPLE + turtle stroke '#224488' fill '#4488ff' backgroundColor '#112244' rotate 60 SierpinskiTriangle 42 4 SierpinskiTriangle -42 4 morph | + Save-Turtle ./SierpinskiTriangleReflectionConstructionAndFill.svg #> param( [Parameter(ValueFromRemainingArguments)] @@ -1387,30 +1397,50 @@ $Arguments ) $durationArgument = $null - +$hasPoints = $false +$segmentCount = 0 $newPaths = @(foreach ($arg in $Arguments) { if ($arg -is [string]) { if ($arg -match '^\s{0,}m') { $arg + $hasPoints = $true } } elseif ($arg.PathData) { $arg.PathData + $hasPoints = $true } elseif ($arg.D) { $arg.D + $hasPoints = $true } elseif ($arg -is [TimeSpan]) { $durationArgument = $arg } elseif ($arg -is [double] -or $arg -is [int]) { - $durationArgument = [TimeSpan]::FromSeconds($arg) + if (-not $hasPoints -and $arg -is [int]) { + $segmentCount = [Math]::Abs($arg) + } else { + $durationArgument = [TimeSpan]::FromSeconds($arg) + } } }) if (-not $newPaths) { - return $this - <#$pathSegments = @($this.PathData -split '(?=\p{L})') - $newPaths = @(for ($segmentNumber = 0; $segmentNumber -lt $pathSegments.Count; $segmentNumber++) { - $pathSegments[0..$segmentNumber] -join ' ' - }) -join ';'#> + if ($this.Steps.Count) { + $stepList = @($this.PathData -join ' ' -split '(?=\p{L})' -ne '') + if ($segmentCount) { + $newPaths = @( + for ($n = 1; $n -lt $stepList.Length; $n += ($stepList.Length/$segmentCount)) { + $stepList[0..$n] -join ' ' + } + ) + } else { + $newPaths = @(foreach ($n in 1..($stepList.Length)) { + $stepList[0..$n] -join ' ' + }) + } + + } else { + return $this + } } if ($this.PathAnimation) { From 69cfada63387934e613f25ad90739e9b77c28d42 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sat, 6 Sep 2025 15:39:40 -0700 Subject: [PATCH 056/125] fix: `Turtle.set_Duration` anytime ( Fixes #216 ) --- Types/Turtle/Morph.ps1 | 4 ++-- Types/Turtle/set_Duration.ps1 | 18 +++++++++++++++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Types/Turtle/Morph.ps1 b/Types/Turtle/Morph.ps1 index 05feb92..bd5575f 100644 --- a/Types/Turtle/Morph.ps1 +++ b/Types/Turtle/Morph.ps1 @@ -102,8 +102,8 @@ if ($this.PathAnimation) { @(foreach ($animationXML in $this.PathAnimation -split '(?<=/>)') { $animationXML = $animationXML -as [xml] if (-not $animationXML) { continue } - if ($animationXML.attributeName -eq 'd') { - $animationXML.values = "$($newPaths -join ';')" + if ($animationXML.animate.attributeName -eq 'd') { + $animationXML.animate.values = "$($newPaths -join ';')" } $animationXML.OuterXml }) diff --git a/Types/Turtle/set_Duration.ps1 b/Types/Turtle/set_Duration.ps1 index 9fa5f1b..3cbf349 100644 --- a/Types/Turtle/set_Duration.ps1 +++ b/Types/Turtle/set_Duration.ps1 @@ -10,12 +10,24 @@ $value ) foreach ($v in $value) { - if ($v -is [Timespan]) { - $this | Add-Member NoteProperty '.Duration' $v -Force - } elseif ($v -is [double] -or $v -is [int]) { + if ($v -is [double] -or $v -is [int]) { $this | Add-Member NoteProperty '.Duration' ([TimeSpan]::FromSeconds($v)) -Force + } elseif ($v -as [TimeSpan]) { + $this | Add-Member NoteProperty '.Duration' ($v -as [Timespan]) -Force } else { Write-Warning "'$Value' is not a number or timespan" } } +if (($this.'.Duration' -is [TimeSpan]) -and $this.PathAnimation) { + $updatedAnimations = + @(foreach ($animationXML in $this.PathAnimation -split '(?<=/>)') { + $animationXML = $animationXML -as [xml] + if (-not $animationXML) { continue } + if ($animationXML.animate.attributeName -eq 'd') { + $animationXML.animate.dur = "$(($this.'.Duration').TotalSeconds)s" + } + $animationXML.OuterXml + }) + $this.PathAnimation = $updatedAnimations +} \ No newline at end of file From ddb6a5672b714305f8c19ce2b75e422f844c8d1f Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sat, 6 Sep 2025 22:40:00 +0000 Subject: [PATCH 057/125] fix: `Turtle.set_Duration` anytime ( Fixes #216 ) --- Turtle.types.ps1xml | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/Turtle.types.ps1xml b/Turtle.types.ps1xml index eec75ab..815521c 100644 --- a/Turtle.types.ps1xml +++ b/Turtle.types.ps1xml @@ -1448,8 +1448,8 @@ if ($this.PathAnimation) { @(foreach ($animationXML in $this.PathAnimation -split '(?<=/>)') { $animationXML = $animationXML -as [xml] if (-not $animationXML) { continue } - if ($animationXML.attributeName -eq 'd') { - $animationXML.values = "$($newPaths -join ';')" + if ($animationXML.animate.attributeName -eq 'd') { + $animationXML.animate.values = "$($newPaths -join ';')" } $animationXML.OuterXml }) @@ -2843,16 +2843,27 @@ $value ) foreach ($v in $value) { - if ($v -is [Timespan]) { - $this | Add-Member NoteProperty '.Duration' $v -Force - } elseif ($v -is [double] -or $v -is [int]) { + if ($v -is [double] -or $v -is [int]) { $this | Add-Member NoteProperty '.Duration' ([TimeSpan]::FromSeconds($v)) -Force + } elseif ($v -as [TimeSpan]) { + $this | Add-Member NoteProperty '.Duration' ($v -as [Timespan]) -Force } else { Write-Warning "'$Value' is not a number or timespan" } } - +if (($this.'.Duration' -is [TimeSpan]) -and $this.PathAnimation) { + $updatedAnimations = + @(foreach ($animationXML in $this.PathAnimation -split '(?<=/>)') { + $animationXML = $animationXML -as [xml] + if (-not $animationXML) { continue } + if ($animationXML.animate.attributeName -eq 'd') { + $animationXML.animate.dur = "$(($this.'.Duration').TotalSeconds)s" + } + $animationXML.OuterXml + }) + $this.PathAnimation = $updatedAnimations +} From ddad224686d73824cd580194b774d141f4f5742e Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sun, 7 Sep 2025 13:05:07 -0700 Subject: [PATCH 058/125] feat: `Turtle.get/set_PathTransform` ( Fixes #217 ) --- Types/Turtle/get_PathElement.ps1 | 40 +++++++++++++++++++++++------- Types/Turtle/get_PathTransform.ps1 | 7 ++++++ Types/Turtle/set_PathTransform.ps1 | 22 ++++++++++++++++ 3 files changed, 60 insertions(+), 9 deletions(-) create mode 100644 Types/Turtle/get_PathTransform.ps1 create mode 100644 Types/Turtle/set_PathTransform.ps1 diff --git a/Types/Turtle/get_PathElement.ps1 b/Types/Turtle/get_PathElement.ps1 index 6e36b0e..1cd57f4 100644 --- a/Types/Turtle/get_PathElement.ps1 +++ b/Types/Turtle/get_PathElement.ps1 @@ -1,13 +1,35 @@ +<# +.SYNOPSIS + Gets the Turtle Path Element +.DESCRIPTION + Gets the Path Element of a Turtle. + + This contains the path of the Turtle's motion. +#> + +# Set our core attributes +$coreAttributes = [Ordered]@{ + id="$($this.id)-path" + d="$($this.PathData)" + stroke= + if ($this.Stroke) { $this.Stroke } + else { 'currentColor' } + 'stroke-width'= + if ($this.StrokeWidth) { $this.StrokeWidth } + else { '0.1%' } + fill="$($this.Fill)" + class=$($this.PathClass -join ' ') + 'transform-origin'='50% 50%' +} +# If someone decides to override any of these attributes, they are welcome to (at their own aesthetic risk) +foreach ($pathAttributeName in $this.PathAttribute.Keys) { + $coreAttributes[$pathAttributeName] = $($this.PathAttribute[$pathAttributeName]) +} + @( -"" if ($this.PathAnimation) {$this.PathAnimation} diff --git a/Types/Turtle/get_PathTransform.ps1 b/Types/Turtle/get_PathTransform.ps1 new file mode 100644 index 0000000..8bede1b --- /dev/null +++ b/Types/Turtle/get_PathTransform.ps1 @@ -0,0 +1,7 @@ +<# +.SYNOPSIS + Gets any Path Transforms +.DESCRIPTION + Gets any transforms that will apply to this Turtle's path. +#> +return $this.PathAttribute['transform'] \ No newline at end of file diff --git a/Types/Turtle/set_PathTransform.ps1 b/Types/Turtle/set_PathTransform.ps1 new file mode 100644 index 0000000..bb59bb8 --- /dev/null +++ b/Types/Turtle/set_PathTransform.ps1 @@ -0,0 +1,22 @@ +<# +.SYNOPSIS + Sets Path Transforms +.DESCRIPTION + Sets any transforms that apply to the turtle path. +.EXAMPLE + turtle width 100 height 100 teleport 25 25 square 50 pathTransform @{skewX=45} +#> +param($value) +$value = $value | . { process { $_ }} +$transformString = foreach ($v in $value) { + if ($v -is [Collections.IDictionary]) { + foreach ($k in $v.Keys) { + "$k($($v[$k]))" + } + } else { + "$v" + } +} + + +return $this.PathAttribute['transform'] = "$transformString" \ No newline at end of file From 455cebc7ca348612139f7d7319481d43477da9ad Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sun, 7 Sep 2025 20:05:26 +0000 Subject: [PATCH 059/125] feat: `Turtle.get/set_PathTransform` ( Fixes #217 ) --- Turtle.types.ps1xml | 78 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 68 insertions(+), 10 deletions(-) diff --git a/Turtle.types.ps1xml b/Turtle.types.ps1xml index 815521c..86755a0 100644 --- a/Turtle.types.ps1xml +++ b/Turtle.types.ps1xml @@ -3313,16 +3313,38 @@ $this | Add-Member -MemberType NoteProperty -Force -Name '.PathClass' -Value @( PathElement - @( -"<path id='$($this.id)-path' d='$($this.PathData)' stroke='$( - if ($this.Stroke) { $this.Stroke } else { 'currentColor' } -)' stroke-width='$( - if ($this.StrokeWidth) { $this.StrokeWidth } else { '0.1%' } -)' fill='$($this.Fill)' class='$( - $this.PathClass -join ' ' -)' transform-origin='50% 50%' $( - foreach ($pathAttributeName in $this.PathAttribute.Keys) { - " $pathAttributeName='$($this.PathAttribute[$pathAttributeName])'" + <# +.SYNOPSIS + Gets the Turtle Path Element +.DESCRIPTION + Gets the Path Element of a Turtle. + + This contains the path of the Turtle's motion. +#> + +# Set our core attributes +$coreAttributes = [Ordered]@{ + id="$($this.id)-path" + d="$($this.PathData)" + stroke= + if ($this.Stroke) { $this.Stroke } + else { 'currentColor' } + 'stroke-width'= + if ($this.StrokeWidth) { $this.StrokeWidth } + else { '0.1%' } + fill="$($this.Fill)" + class=$($this.PathClass -join ' ') + 'transform-origin'='50% 50%' +} +# If someone decides to override any of these attributes, they are welcome to (at their own aesthetic risk) +foreach ($pathAttributeName in $this.PathAttribute.Keys) { + $coreAttributes[$pathAttributeName] = $($this.PathAttribute[$pathAttributeName]) +} + +@( +"<path$( + foreach ($attributeName in $coreAttributes.Keys) { + " $attributeName='$($coreAttributes[$attributeName])'" } )>" if ($this.PathAnimation) {$this.PathAnimation} @@ -3330,6 +3352,42 @@ if ($this.PathAnimation) {$this.PathAnimation} ) -as [xml] + + PathTransform + + <# +.SYNOPSIS + Gets any Path Transforms +.DESCRIPTION + Gets any transforms that will apply to this Turtle's path. +#> +return $this.PathAttribute['transform'] + + + <# +.SYNOPSIS + Sets Path Transforms +.DESCRIPTION + Sets any transforms that apply to the turtle path. +.EXAMPLE + turtle width 100 height 100 teleport 25 25 square 50 pathTransform @{skewX=45} +#> +param($value) +$value = $value | . { process { $_ }} +$transformString = foreach ($v in $value) { + if ($v -is [Collections.IDictionary]) { + foreach ($k in $v.Keys) { + "$k($($v[$k]))" + } + } else { + "$v" + } +} + + +return $this.PathAttribute['transform'] = "$transformString" + + Pattern From 0d8756962f61d6e599c1f56d907becc6538c281c Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sun, 7 Sep 2025 13:15:25 -0700 Subject: [PATCH 060/125] feat: `Turtle.get_SVG` empty viewbox support ( Fixes #218 ) --- Types/Turtle/get_SVG.ps1 | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/Types/Turtle/get_SVG.ps1 b/Types/Turtle/get_SVG.ps1 index 3d6b74c..5cf96d1 100644 --- a/Types/Turtle/get_SVG.ps1 +++ b/Types/Turtle/get_SVG.ps1 @@ -1,6 +1,26 @@ +<# +.SYNOPSIS + The Turtle's SVG +.DESCRIPTION + Gets this turtle and any nested turtles as a single Scalable Vector Graphic. +#> param() @( -"" +$svgAttributes = [Ordered]@{ + xmlns='http://www.w3.org/2000/svg' + viewBox="$($this.ViewBox)" + 'transform-origin'='50% 50%' + width='100%' + height='100%' +} +# If the viewbox would have zero width or height +if ($this.ViewBox[-1] -eq 0 -or $this.ViewBox[-2] -eq 0) { + # It's not much of a viewbox at all, and we will omit the attribute. + $svgAttributes.Remove('viewBox') +} +"" # Output our own path $this.PathElement.OuterXml # Followed by any text elements From 887873bfb83c1432ee28130a11edda5affe0cc21 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sun, 7 Sep 2025 20:15:44 +0000 Subject: [PATCH 061/125] feat: `Turtle.get_SVG` empty viewbox support ( Fixes #218 ) --- Turtle.types.ps1xml | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/Turtle.types.ps1xml b/Turtle.types.ps1xml index 86755a0..05380c6 100644 --- a/Turtle.types.ps1xml +++ b/Turtle.types.ps1xml @@ -3684,9 +3684,29 @@ $this | Add-Member -MemberType NoteProperty -Force -Name '.StrokeWidth' -Value $ SVG - param() + <# +.SYNOPSIS + The Turtle's SVG +.DESCRIPTION + Gets this turtle and any nested turtles as a single Scalable Vector Graphic. +#> +param() @( -"<svg xmlns='http://www.w3.org/2000/svg' viewBox='$($this.ViewBox)' transform-origin='50% 50%' width='100%' height='100%'>" +$svgAttributes = [Ordered]@{ + xmlns='http://www.w3.org/2000/svg' + viewBox="$($this.ViewBox)" + 'transform-origin'='50% 50%' + width='100%' + height='100%' +} +# If the viewbox would have zero width or height +if ($this.ViewBox[-1] -eq 0 -or $this.ViewBox[-2] -eq 0) { + # It's not much of a viewbox at all, and we will omit the attribute. + $svgAttributes.Remove('viewBox') +} +"<svg $(@(foreach ($attributeName in $svgAttributes.Keys) { + " $attributeName='$($svgAttributes[$attributeName])'" +}) -join '')>" # Output our own path $this.PathElement.OuterXml # Followed by any text elements From e1a02dd291d7cef7f57bf80d362cb896d6a6591a Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sun, 7 Sep 2025 13:31:29 -0700 Subject: [PATCH 062/125] feat: `Turtle.get/set_SVGAttribute` ( Fixes #219 ) --- Types/Turtle/get_SVG.ps1 | 8 ++++++++ Types/Turtle/get_SVGAttribute.ps1 | 4 ++++ Types/Turtle/set_SVGAttribute.ps1 | 11 +++++++++++ 3 files changed, 23 insertions(+) create mode 100644 Types/Turtle/get_SVGAttribute.ps1 create mode 100644 Types/Turtle/set_SVGAttribute.ps1 diff --git a/Types/Turtle/get_SVG.ps1 b/Types/Turtle/get_SVG.ps1 index 5cf96d1..50edb33 100644 --- a/Types/Turtle/get_SVG.ps1 +++ b/Types/Turtle/get_SVG.ps1 @@ -6,6 +6,7 @@ #> param() @( + $svgAttributes = [Ordered]@{ xmlns='http://www.w3.org/2000/svg' viewBox="$($this.ViewBox)" @@ -13,11 +14,18 @@ $svgAttributes = [Ordered]@{ width='100%' height='100%' } + # If the viewbox would have zero width or height if ($this.ViewBox[-1] -eq 0 -or $this.ViewBox[-2] -eq 0) { # It's not much of a viewbox at all, and we will omit the attribute. $svgAttributes.Remove('viewBox') } + +# Any explicitly provided attributes should override any automatic attributes. +foreach ($key in $this.SVGAttribute.Keys) { + $svgAttributes[$key] = $this.SVGAttribute[$key] +} + "" diff --git a/Types/Turtle/get_SVGAttribute.ps1 b/Types/Turtle/get_SVGAttribute.ps1 new file mode 100644 index 0000000..d490f2f --- /dev/null +++ b/Types/Turtle/get_SVGAttribute.ps1 @@ -0,0 +1,4 @@ +if (-not $this.'.SVGAttribute') { + $this | Add-Member NoteProperty '.SVGAttribute' ([Ordered]@{}) -Force +} +return $this.'.SVGAttribute' \ No newline at end of file diff --git a/Types/Turtle/set_SVGAttribute.ps1 b/Types/Turtle/set_SVGAttribute.ps1 new file mode 100644 index 0000000..cf6d406 --- /dev/null +++ b/Types/Turtle/set_SVGAttribute.ps1 @@ -0,0 +1,11 @@ +param( +[Collections.IDictionary] +$PathAttribute = [Ordered]@{} +) + +if (-not $this.'.PathAttribute') { + $this | Add-Member -MemberType NoteProperty -Name '.PathAttribute' -Value ([Ordered]@{}) -Force +} +foreach ($key in $PathAttribute.Keys) { + $this.'.PathAttribute'[$key] = $PathAttribute[$key] +} \ No newline at end of file From 106025db0d0739e7070651db0bef393e61df6f04 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sun, 7 Sep 2025 20:31:50 +0000 Subject: [PATCH 063/125] feat: `Turtle.get/set_SVGAttribute` ( Fixes #219 ) --- Turtle.types.ps1xml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/Turtle.types.ps1xml b/Turtle.types.ps1xml index 05380c6..30e06ad 100644 --- a/Turtle.types.ps1xml +++ b/Turtle.types.ps1xml @@ -3692,6 +3692,7 @@ $this | Add-Member -MemberType NoteProperty -Force -Name '.StrokeWidth' -Value $ #> param() @( + $svgAttributes = [Ordered]@{ xmlns='http://www.w3.org/2000/svg' viewBox="$($this.ViewBox)" @@ -3699,11 +3700,18 @@ $svgAttributes = [Ordered]@{ width='100%' height='100%' } + # If the viewbox would have zero width or height if ($this.ViewBox[-1] -eq 0 -or $this.ViewBox[-2] -eq 0) { # It's not much of a viewbox at all, and we will omit the attribute. $svgAttributes.Remove('viewBox') } + +# Any explicitly provided attributes should override any automatic attributes. +foreach ($key in $this.SVGAttribute.Keys) { + $svgAttributes[$key] = $this.SVGAttribute[$key] +} + "<svg $(@(foreach ($attributeName in $svgAttributes.Keys) { " $attributeName='$($svgAttributes[$attributeName])'" }) -join '')>" @@ -3738,6 +3746,28 @@ if ($this.ViewBox[-1] -eq 0 -or $this.ViewBox[-2] -eq 0) { ) -join '' -as [xml] + + SVGAttribute + + if (-not $this.'.SVGAttribute') { + $this | Add-Member NoteProperty '.SVGAttribute' ([Ordered]@{}) -Force +} +return $this.'.SVGAttribute' + + + param( +[Collections.IDictionary] +$PathAttribute = [Ordered]@{} +) + +if (-not $this.'.PathAttribute') { + $this | Add-Member -MemberType NoteProperty -Name '.PathAttribute' -Value ([Ordered]@{}) -Force +} +foreach ($key in $PathAttribute.Keys) { + $this.'.PathAttribute'[$key] = $PathAttribute[$key] +} + + Symbol From 64ea61ffe85270204e8a06dd4ea754875ba5e089 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sun, 7 Sep 2025 13:35:25 -0700 Subject: [PATCH 064/125] feat: `Turtle.get/set_SVGAnimation` ( Fixes #220 ) --- Types/Turtle/get_SVG.ps1 | 5 ++- Types/Turtle/get_SVGAnimation.ps1 | 3 ++ Types/Turtle/set_SVGAnimation.ps1 | 59 +++++++++++++++++++++++++++++++ 3 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 Types/Turtle/get_SVGAnimation.ps1 create mode 100644 Types/Turtle/set_SVGAnimation.ps1 diff --git a/Types/Turtle/get_SVG.ps1 b/Types/Turtle/get_SVG.ps1 index 50edb33..9b90740 100644 --- a/Types/Turtle/get_SVG.ps1 +++ b/Types/Turtle/get_SVG.ps1 @@ -28,7 +28,10 @@ foreach ($key in $this.SVGAttribute.Keys) { "" +}) -join '')>" + # Declare any SVG animations + if ($this.SVGAnimation) {$this.SVGAnimation} + # Output our own path $this.PathElement.OuterXml # Followed by any text elements diff --git a/Types/Turtle/get_SVGAnimation.ps1 b/Types/Turtle/get_SVGAnimation.ps1 new file mode 100644 index 0000000..b1aef2e --- /dev/null +++ b/Types/Turtle/get_SVGAnimation.ps1 @@ -0,0 +1,3 @@ +if ($this.'.PathAnimation') { + return $this.'.PathAnimation' +} diff --git a/Types/Turtle/set_SVGAnimation.ps1 b/Types/Turtle/set_SVGAnimation.ps1 new file mode 100644 index 0000000..d9a1e75 --- /dev/null +++ b/Types/Turtle/set_SVGAnimation.ps1 @@ -0,0 +1,59 @@ +<# +.SYNOPSIS + Sets the Turtle SVG Animation +.DESCRIPTION + Sets an animation for the Turtle's SVG. +.EXAMPLE + turtle flower SVGAnimation ([Ordered]@{ + attributeName = 'fill' ; values = "#4488ff;#224488;#4488ff" ; repeatCount = 'indefinite'; dur = "4.2s" # ; additive = 'sum' + }, [Ordered]@{ + attributeName = 'stroke' ; values = "#224488;#4488ff;#224488" ; repeatCount = 'indefinite'; dur = "2.1s" # ; additive = 'sum' + }, [Ordered]@{ + type = 'rotate' ; values = 0, 360 ;repeatCount = 'indefinite'; dur = "41s" + }) save ./AnimatedFlower.svg +#> +param( +# The path animation object. +# This may be a string containing animation XML, XML, or a dictionary containing animation settings. +[PSObject] +$PathAnimation +) + +$newAnimation = @(foreach ($animation in $PathAnimation) { + if ($animation -is [Collections.IDictionary]) { + $animationCopy = [Ordered]@{} + $animation + if (-not $animationCopy['attributeType']) { + $animationCopy['attributeType'] = 'XML' + } + if (-not $animationCopy['attributeName']) { + $animationCopy['attributeName'] = 'transform' + } + if ($animationCopy.values -is [object[]]) { + $animationCopy['values'] = $animationCopy['values'] -join ';' + } + + $elementName = 'animate' + if ($animationCopy['attributeName'] -eq 'transform') { + $elementName = 'animateTransform' + } + + + if (-not $animationCopy['dur'] -and $this.Duration) { + $animationCopy['dur'] = "$($this.Duration.TotalSeconds)s" + } + + "<$elementName $( + @(foreach ($key in $animationCopy.Keys) { + " $key='$([Web.HttpUtility]::HtmlAttributeEncode($animationCopy[$key]))'" + }) -join '' + )/>" + } + if ($animation -is [string]) { + $animation + } + if ($animation.OuterXml) { + $animation.OuterXml + } +}) + +$this | Add-Member -MemberType NoteProperty -Force -Name '.PathAnimation' -Value $newAnimation From b3e7a722a95b158fb77dcbfb740021a7f342ad89 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sun, 7 Sep 2025 20:35:49 +0000 Subject: [PATCH 065/125] feat: `Turtle.get/set_SVGAnimation` ( Fixes #220 ) --- Turtle.types.ps1xml | 76 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 75 insertions(+), 1 deletion(-) diff --git a/Turtle.types.ps1xml b/Turtle.types.ps1xml index 30e06ad..e7805f0 100644 --- a/Turtle.types.ps1xml +++ b/Turtle.types.ps1xml @@ -3714,7 +3714,10 @@ foreach ($key in $this.SVGAttribute.Keys) { "<svg $(@(foreach ($attributeName in $svgAttributes.Keys) { " $attributeName='$($svgAttributes[$attributeName])'" -}) -join '')>" +}) -join '')>" + # Declare any SVG animations + if ($this.SVGAnimation) {$this.SVGAnimation} + # Output our own path $this.PathElement.OuterXml # Followed by any text elements @@ -3746,6 +3749,77 @@ foreach ($key in $this.SVGAttribute.Keys) { ) -join '' -as [xml] + + SVGAnimation + + if ($this.'.PathAnimation') { + return $this.'.PathAnimation' +} + + + + <# +.SYNOPSIS + Sets the Turtle SVG Animation +.DESCRIPTION + Sets an animation for the Turtle's SVG. +.EXAMPLE + turtle flower SVGAnimation ([Ordered]@{ + attributeName = 'fill' ; values = "#4488ff;#224488;#4488ff" ; repeatCount = 'indefinite'; dur = "4.2s" # ; additive = 'sum' + }, [Ordered]@{ + attributeName = 'stroke' ; values = "#224488;#4488ff;#224488" ; repeatCount = 'indefinite'; dur = "2.1s" # ; additive = 'sum' + }, [Ordered]@{ + type = 'rotate' ; values = 0, 360 ;repeatCount = 'indefinite'; dur = "41s" + }) save ./AnimatedFlower.svg +#> +param( +# The path animation object. +# This may be a string containing animation XML, XML, or a dictionary containing animation settings. +[PSObject] +$PathAnimation +) + +$newAnimation = @(foreach ($animation in $PathAnimation) { + if ($animation -is [Collections.IDictionary]) { + $animationCopy = [Ordered]@{} + $animation + if (-not $animationCopy['attributeType']) { + $animationCopy['attributeType'] = 'XML' + } + if (-not $animationCopy['attributeName']) { + $animationCopy['attributeName'] = 'transform' + } + if ($animationCopy.values -is [object[]]) { + $animationCopy['values'] = $animationCopy['values'] -join ';' + } + + $elementName = 'animate' + if ($animationCopy['attributeName'] -eq 'transform') { + $elementName = 'animateTransform' + } + + + if (-not $animationCopy['dur'] -and $this.Duration) { + $animationCopy['dur'] = "$($this.Duration.TotalSeconds)s" + } + + "<$elementName $( + @(foreach ($key in $animationCopy.Keys) { + " $key='$([Web.HttpUtility]::HtmlAttributeEncode($animationCopy[$key]))'" + }) -join '' + )/>" + } + if ($animation -is [string]) { + $animation + } + if ($animation.OuterXml) { + $animation.OuterXml + } +}) + +$this | Add-Member -MemberType NoteProperty -Force -Name '.PathAnimation' -Value $newAnimation + + + SVGAttribute From cf0a566f3d4354f993c9a5eefa2506b309fc9f1a Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sun, 7 Sep 2025 20:36:14 +0000 Subject: [PATCH 066/125] feat: `Turtle.get/set_SVGAnimation` ( Fixes #220 ) --- Examples/TurtlesOnATextPath-Morph.svg | 1 + 1 file changed, 1 insertion(+) diff --git a/Examples/TurtlesOnATextPath-Morph.svg b/Examples/TurtlesOnATextPath-Morph.svg index 94b3c48..16cbd55 100644 --- a/Examples/TurtlesOnATextPath-Morph.svg +++ b/Examples/TurtlesOnATextPath-Morph.svg @@ -1,6 +1,7 @@ + From 791d90df33c94c5b12c997a2e2ceb9acb1032e42 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sun, 7 Sep 2025 14:49:13 -0700 Subject: [PATCH 067/125] feat: `Turtle.Towards/Forwards` ( Fixes #211 ) Unrolling targets --- Types/Turtle/Distance.ps1 | 4 ++-- Types/Turtle/Towards.ps1 | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Types/Turtle/Distance.ps1 b/Types/Turtle/Distance.ps1 index 01a226a..afda565 100644 --- a/Types/Turtle/Distance.ps1 +++ b/Types/Turtle/Distance.ps1 @@ -6,7 +6,7 @@ #> param() -$towards = $args +$towards = $args | . { process { $_ } } $tx = 0.0 $ty = 0.0 @@ -24,7 +24,7 @@ foreach ($toward in $towards) { elseif ($null -ne $toward.X -and $null -ne $toward.Y) { $tx = $toward.x $ty = $toward.y - $nCount+= 2 + $nCount+= 2 } } diff --git a/Types/Turtle/Towards.ps1 b/Types/Turtle/Towards.ps1 index 39a20d9..e3460f4 100644 --- a/Types/Turtle/Towards.ps1 +++ b/Types/Turtle/Towards.ps1 @@ -6,7 +6,7 @@ #> param() -$towards = $args +$towards = $args | . { process { $_ } } $tx = 0.0 $ty = 0.0 From 754420b15342caa59115cadc0acb3e52138b4bc5 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sun, 7 Sep 2025 21:49:35 +0000 Subject: [PATCH 068/125] feat: `Turtle.Towards/Forwards` ( Fixes #211 ) Unrolling targets --- Turtle.types.ps1xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Turtle.types.ps1xml b/Turtle.types.ps1xml index e7805f0..f732a99 100644 --- a/Turtle.types.ps1xml +++ b/Turtle.types.ps1xml @@ -542,7 +542,7 @@ return $this.LSystem('F+F+F+F', [Ordered]@{ #> param() -$towards = $args +$towards = $args | . { process { $_ } } $tx = 0.0 $ty = 0.0 @@ -560,7 +560,7 @@ foreach ($toward in $towards) { elseif ($null -ne $toward.X -and $null -ne $toward.Y) { $tx = $toward.x $ty = $toward.y - $nCount+= 2 + $nCount+= 2 } } @@ -2479,7 +2479,7 @@ return "$($this.SVG.OuterXml)" #> param() -$towards = $args +$towards = $args | . { process { $_ } } $tx = 0.0 $ty = 0.0 From 448f73ccbcad7305c9db70ea92540fefba5055fb Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sun, 7 Sep 2025 14:50:49 -0700 Subject: [PATCH 069/125] feat: `Turtle.get/set_PathTransform` ( Fixes #217 ) --- Types/Turtle/set_PathTransform.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Types/Turtle/set_PathTransform.ps1 b/Types/Turtle/set_PathTransform.ps1 index bb59bb8..9987156 100644 --- a/Types/Turtle/set_PathTransform.ps1 +++ b/Types/Turtle/set_PathTransform.ps1 @@ -4,7 +4,7 @@ .DESCRIPTION Sets any transforms that apply to the turtle path. .EXAMPLE - turtle width 100 height 100 teleport 25 25 square 50 pathTransform @{skewX=45} + turtle width 100 height 100 teleport 25 25 square 50 pathTransform @{skewX=45} save ./skewSquare.svg #> param($value) $value = $value | . { process { $_ }} From 9c12806531f1db8b5922e17f1ac49b6e337726fd Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sun, 7 Sep 2025 21:51:17 +0000 Subject: [PATCH 070/125] feat: `Turtle.get/set_PathTransform` ( Fixes #217 ) --- Turtle.types.ps1xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Turtle.types.ps1xml b/Turtle.types.ps1xml index f732a99..0cfd1bb 100644 --- a/Turtle.types.ps1xml +++ b/Turtle.types.ps1xml @@ -3370,7 +3370,7 @@ return $this.PathAttribute['transform'] .DESCRIPTION Sets any transforms that apply to the turtle path. .EXAMPLE - turtle width 100 height 100 teleport 25 25 square 50 pathTransform @{skewX=45} + turtle width 100 height 100 teleport 25 25 square 50 pathTransform @{skewX=45} save ./skewSquare.svg #> param($value) $value = $value | . { process { $_ }} From c98bdf6cfef2ac8a80ea6268cf0ef43458f61a76 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sun, 7 Sep 2025 14:52:06 -0700 Subject: [PATCH 071/125] feat: `Turtle.get/set_SVGAttribute` ( Fixes #219 ) --- Types/Turtle/set_SVGAttribute.ps1 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Types/Turtle/set_SVGAttribute.ps1 b/Types/Turtle/set_SVGAttribute.ps1 index cf6d406..1e531ef 100644 --- a/Types/Turtle/set_SVGAttribute.ps1 +++ b/Types/Turtle/set_SVGAttribute.ps1 @@ -1,11 +1,11 @@ param( [Collections.IDictionary] -$PathAttribute = [Ordered]@{} +$SVGAttribute = [Ordered]@{} ) -if (-not $this.'.PathAttribute') { - $this | Add-Member -MemberType NoteProperty -Name '.PathAttribute' -Value ([Ordered]@{}) -Force +if (-not $this.'.SVGAttribute') { + $this | Add-Member -MemberType NoteProperty -Name '.SVGAttribute' -Value ([Ordered]@{}) -Force } -foreach ($key in $PathAttribute.Keys) { - $this.'.PathAttribute'[$key] = $PathAttribute[$key] +foreach ($key in $SVGAttribute.Keys) { + $this.'.SVGAttribute'[$key] = $SVGAttribute[$key] } \ No newline at end of file From d59aa86b2af326960caf355ce4d3000ad4e43bd2 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sun, 7 Sep 2025 21:52:26 +0000 Subject: [PATCH 072/125] feat: `Turtle.get/set_SVGAttribute` ( Fixes #219 ) --- Turtle.types.ps1xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Turtle.types.ps1xml b/Turtle.types.ps1xml index 0cfd1bb..eee80af 100644 --- a/Turtle.types.ps1xml +++ b/Turtle.types.ps1xml @@ -3831,14 +3831,14 @@ return $this.'.SVGAttribute' param( [Collections.IDictionary] -$PathAttribute = [Ordered]@{} +$SVGAttribute = [Ordered]@{} ) -if (-not $this.'.PathAttribute') { - $this | Add-Member -MemberType NoteProperty -Name '.PathAttribute' -Value ([Ordered]@{}) -Force +if (-not $this.'.SVGAttribute') { + $this | Add-Member -MemberType NoteProperty -Name '.SVGAttribute' -Value ([Ordered]@{}) -Force } -foreach ($key in $PathAttribute.Keys) { - $this.'.PathAttribute'[$key] = $PathAttribute[$key] +foreach ($key in $SVGAttribute.Keys) { + $this.'.SVGAttribute'[$key] = $SVGAttribute[$key] } From 74801b7ae7809fec524f540ec012d5eda2d110b0 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sun, 7 Sep 2025 14:53:58 -0700 Subject: [PATCH 073/125] feat: `Turtle.get/set_SVGAnimation` ( Fixes #220 ) --- Types/Turtle/get_SVGAnimation.ps1 | 4 ++-- Types/Turtle/set_SVGAnimation.ps1 | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Types/Turtle/get_SVGAnimation.ps1 b/Types/Turtle/get_SVGAnimation.ps1 index b1aef2e..ecc13d2 100644 --- a/Types/Turtle/get_SVGAnimation.ps1 +++ b/Types/Turtle/get_SVGAnimation.ps1 @@ -1,3 +1,3 @@ -if ($this.'.PathAnimation') { - return $this.'.PathAnimation' +if ($this.'.SVGAnimation') { + return $this.'.SVGAnimation' } diff --git a/Types/Turtle/set_SVGAnimation.ps1 b/Types/Turtle/set_SVGAnimation.ps1 index d9a1e75..e7d0a84 100644 --- a/Types/Turtle/set_SVGAnimation.ps1 +++ b/Types/Turtle/set_SVGAnimation.ps1 @@ -16,10 +16,10 @@ param( # The path animation object. # This may be a string containing animation XML, XML, or a dictionary containing animation settings. [PSObject] -$PathAnimation +$SVGAnimation ) -$newAnimation = @(foreach ($animation in $PathAnimation) { +$newAnimation = @(foreach ($animation in $SVGAnimation) { if ($animation -is [Collections.IDictionary]) { $animationCopy = [Ordered]@{} + $animation if (-not $animationCopy['attributeType']) { @@ -56,4 +56,4 @@ $newAnimation = @(foreach ($animation in $PathAnimation) { } }) -$this | Add-Member -MemberType NoteProperty -Force -Name '.PathAnimation' -Value $newAnimation +$this | Add-Member -MemberType NoteProperty -Force -Name '.SVGAnimation' -Value $newAnimation From 9b9f86419abeb414b00981bac3b5a62848526551 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sun, 7 Sep 2025 21:54:18 +0000 Subject: [PATCH 074/125] feat: `Turtle.get/set_SVGAnimation` ( Fixes #220 ) --- Turtle.types.ps1xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Turtle.types.ps1xml b/Turtle.types.ps1xml index eee80af..d28ead1 100644 --- a/Turtle.types.ps1xml +++ b/Turtle.types.ps1xml @@ -3752,8 +3752,8 @@ foreach ($key in $this.SVGAttribute.Keys) { SVGAnimation - if ($this.'.PathAnimation') { - return $this.'.PathAnimation' + if ($this.'.SVGAnimation') { + return $this.'.SVGAnimation' } @@ -3776,10 +3776,10 @@ param( # The path animation object. # This may be a string containing animation XML, XML, or a dictionary containing animation settings. [PSObject] -$PathAnimation +$SVGAnimation ) -$newAnimation = @(foreach ($animation in $PathAnimation) { +$newAnimation = @(foreach ($animation in $SVGAnimation) { if ($animation -is [Collections.IDictionary]) { $animationCopy = [Ordered]@{} + $animation if (-not $animationCopy['attributeType']) { @@ -3816,7 +3816,7 @@ $newAnimation = @(foreach ($animation in $PathAnimation) { } }) -$this | Add-Member -MemberType NoteProperty -Force -Name '.PathAnimation' -Value $newAnimation +$this | Add-Member -MemberType NoteProperty -Force -Name '.SVGAnimation' -Value $newAnimation From f2f8bf6851d3bbd5ef2d6788b94216d4d57d899f Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sun, 7 Sep 2025 21:54:48 +0000 Subject: [PATCH 075/125] feat: `Turtle.get/set_SVGAnimation` ( Fixes #220 ) --- Examples/TurtlesOnATextPath-Morph.svg | 1 - 1 file changed, 1 deletion(-) diff --git a/Examples/TurtlesOnATextPath-Morph.svg b/Examples/TurtlesOnATextPath-Morph.svg index 16cbd55..94b3c48 100644 --- a/Examples/TurtlesOnATextPath-Morph.svg +++ b/Examples/TurtlesOnATextPath-Morph.svg @@ -1,7 +1,6 @@ - From 243cee156dad153039d87664a6e30e8dd1448e86 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sun, 7 Sep 2025 15:59:11 -0700 Subject: [PATCH 076/125] feat: Removing rounding on `Turtle.Forward()` ( Fixes #221 ) --- Types/Turtle/Forward.ps1 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Types/Turtle/Forward.ps1 b/Types/Turtle/Forward.ps1 index 6391d1f..9a2a4b2 100644 --- a/Types/Turtle/Forward.ps1 +++ b/Types/Turtle/Forward.ps1 @@ -12,6 +12,7 @@ param( $Distance = 10 ) -$x = $Distance * ([math]::round([math]::cos($this.Heading * [Math]::PI / 180),15)) -$y = $Distance * ([math]::round([math]::sin($this.Heading * [Math]::PI / 180),15)) +$x = $Distance * ([math]::cos($this.Heading * [Math]::PI / 180)) +$y = $Distance * ([math]::sin($this.Heading * [Math]::PI / 180)) + return $this.Step($x, $y) \ No newline at end of file From 0093ada09014060d25580b4502ea14c4e5fb472c Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Sun, 7 Sep 2025 22:59:32 +0000 Subject: [PATCH 077/125] feat: Removing rounding on `Turtle.Forward()` ( Fixes #221 ) --- Turtle.types.ps1xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Turtle.types.ps1xml b/Turtle.types.ps1xml index d28ead1..cb6a164 100644 --- a/Turtle.types.ps1xml +++ b/Turtle.types.ps1xml @@ -681,8 +681,9 @@ param( $Distance = 10 ) -$x = $Distance * ([math]::round([math]::cos($this.Heading * [Math]::PI / 180),15)) -$y = $Distance * ([math]::round([math]::sin($this.Heading * [Math]::PI / 180),15)) +$x = $Distance * ([math]::cos($this.Heading * [Math]::PI / 180)) +$y = $Distance * ([math]::sin($this.Heading * [Math]::PI / 180)) + return $this.Step($x, $y) From 0320267f31f61e5154b5061f78cb5c25d549749e Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sun, 7 Sep 2025 22:59:54 +0000 Subject: [PATCH 078/125] feat: Removing rounding on `Turtle.Forward()` ( Fixes #221 ) --- Examples/BoxFractal.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Examples/BoxFractal.svg b/Examples/BoxFractal.svg index 032383e..f8299f2 100644 --- a/Examples/BoxFractal.svg +++ b/Examples/BoxFractal.svg @@ -1,7 +1,7 @@ - + From 4ceb4530ee4bc8855a3929200a1ca988289cbc52 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sun, 7 Sep 2025 22:59:55 +0000 Subject: [PATCH 079/125] feat: Removing rounding on `Turtle.Forward()` ( Fixes #221 ) --- Examples/EndlessBoxFractal.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Examples/EndlessBoxFractal.svg b/Examples/EndlessBoxFractal.svg index 2346aba..8c9385f 100644 --- a/Examples/EndlessBoxFractal.svg +++ b/Examples/EndlessBoxFractal.svg @@ -6,7 +6,7 @@ - + From 36d78cbac1909f1fda92b858ffbe1de06c5f5c3f Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sun, 7 Sep 2025 22:59:55 +0000 Subject: [PATCH 080/125] feat: Removing rounding on `Turtle.Forward()` ( Fixes #221 ) --- Examples/EndlessHilbert.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Examples/EndlessHilbert.svg b/Examples/EndlessHilbert.svg index 387fd1e..46b0869 100644 --- a/Examples/EndlessHilbert.svg +++ b/Examples/EndlessHilbert.svg @@ -6,7 +6,7 @@ - + From 6ea7aaa388671787cb73e502e4b4624a5c3baa6a Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sun, 7 Sep 2025 22:59:55 +0000 Subject: [PATCH 081/125] feat: Removing rounding on `Turtle.Forward()` ( Fixes #221 ) --- Examples/EndlessScissorPoly.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Examples/EndlessScissorPoly.svg b/Examples/EndlessScissorPoly.svg index e3d4a29..13d9c58 100644 --- a/Examples/EndlessScissorPoly.svg +++ b/Examples/EndlessScissorPoly.svg @@ -6,7 +6,7 @@ - + From b8f120bdd6bf323a2183ec4b1a9eee9947738d8f Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sun, 7 Sep 2025 22:59:55 +0000 Subject: [PATCH 082/125] feat: Removing rounding on `Turtle.Forward()` ( Fixes #221 ) --- Examples/EndlessSierpinskiTrianglePattern.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Examples/EndlessSierpinskiTrianglePattern.svg b/Examples/EndlessSierpinskiTrianglePattern.svg index 10dce5d..c7f09fa 100644 --- a/Examples/EndlessSierpinskiTrianglePattern.svg +++ b/Examples/EndlessSierpinskiTrianglePattern.svg @@ -6,7 +6,7 @@ - + From be325043771e0f3c6fa899f1cfff8d81435e6ea7 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sun, 7 Sep 2025 22:59:55 +0000 Subject: [PATCH 083/125] feat: Removing rounding on `Turtle.Forward()` ( Fixes #221 ) --- Examples/EndlessSnowflake.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Examples/EndlessSnowflake.svg b/Examples/EndlessSnowflake.svg index fec0dac..c03eb0a 100644 --- a/Examples/EndlessSnowflake.svg +++ b/Examples/EndlessSnowflake.svg @@ -1,12 +1,12 @@ - + - + From 5f696bd2d94e3fb9285ab9455f46aaa4f245638b Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sun, 7 Sep 2025 22:59:55 +0000 Subject: [PATCH 084/125] feat: Removing rounding on `Turtle.Forward()` ( Fixes #221 ) --- Examples/EndlessSpirolateral.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Examples/EndlessSpirolateral.svg b/Examples/EndlessSpirolateral.svg index ac35a1a..9a2c580 100644 --- a/Examples/EndlessSpirolateral.svg +++ b/Examples/EndlessSpirolateral.svg @@ -6,7 +6,7 @@ - + From 05616c92e589969e15b87b1f49345fa2e07ed653 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sun, 7 Sep 2025 22:59:55 +0000 Subject: [PATCH 085/125] feat: Removing rounding on `Turtle.Forward()` ( Fixes #221 ) --- Examples/EndlessStepSpiral.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Examples/EndlessStepSpiral.svg b/Examples/EndlessStepSpiral.svg index 5a63bf6..08ff440 100644 --- a/Examples/EndlessStepSpiral.svg +++ b/Examples/EndlessStepSpiral.svg @@ -1,10 +1,10 @@ - + - + From 5f93a3de3b25a17c21211dc2400f6177e6274d9a Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sun, 7 Sep 2025 22:59:56 +0000 Subject: [PATCH 086/125] feat: Removing rounding on `Turtle.Forward()` ( Fixes #221 ) --- Examples/FollowThatTurtle-HideAndSeek.svg | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Examples/FollowThatTurtle-HideAndSeek.svg b/Examples/FollowThatTurtle-HideAndSeek.svg index 2d45471..5c1655a 100644 --- a/Examples/FollowThatTurtle-HideAndSeek.svg +++ b/Examples/FollowThatTurtle-HideAndSeek.svg @@ -1,24 +1,24 @@ - + - + - + - + - + - + - + - + - + From 326ba3cd942b0ec92183b1f8eb09e8189963736e Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sun, 7 Sep 2025 22:59:56 +0000 Subject: [PATCH 087/125] feat: Removing rounding on `Turtle.Forward()` ( Fixes #221 ) --- .../FollowThatTurtle-HideAndSeekPattern.svg | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Examples/FollowThatTurtle-HideAndSeekPattern.svg b/Examples/FollowThatTurtle-HideAndSeekPattern.svg index ec38804..535cb03 100644 --- a/Examples/FollowThatTurtle-HideAndSeekPattern.svg +++ b/Examples/FollowThatTurtle-HideAndSeekPattern.svg @@ -1,24 +1,24 @@ - + - + - + - + - + - + - + - + - + From 7fdaf5d06897f2b4e72cf969e47fff36f54477e4 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sun, 7 Sep 2025 22:59:56 +0000 Subject: [PATCH 088/125] feat: Removing rounding on `Turtle.Forward()` ( Fixes #221 ) --- Examples/FollowThatTurtle.svg | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Examples/FollowThatTurtle.svg b/Examples/FollowThatTurtle.svg index 39acb66..6438ca2 100644 --- a/Examples/FollowThatTurtle.svg +++ b/Examples/FollowThatTurtle.svg @@ -1,16 +1,16 @@ - + - + - + - + - + From d9a52f6122c1bbcec00c6e8e99626afe72a07a4b Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sun, 7 Sep 2025 22:59:56 +0000 Subject: [PATCH 089/125] feat: Removing rounding on `Turtle.Forward()` ( Fixes #221 ) --- Examples/FollowThatTurtlePattern.svg | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Examples/FollowThatTurtlePattern.svg b/Examples/FollowThatTurtlePattern.svg index e63bcdd..e134eed 100644 --- a/Examples/FollowThatTurtlePattern.svg +++ b/Examples/FollowThatTurtlePattern.svg @@ -1,16 +1,16 @@ - + - + - + - + - + From cc3be542e3d23a30db5900942b5382f03693e918 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sun, 7 Sep 2025 22:59:57 +0000 Subject: [PATCH 090/125] feat: Removing rounding on `Turtle.Forward()` ( Fixes #221 ) --- Examples/FollowThatTurtleNotTooClose.svg | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Examples/FollowThatTurtleNotTooClose.svg b/Examples/FollowThatTurtleNotTooClose.svg index c12ac61..cc1f86a 100644 --- a/Examples/FollowThatTurtleNotTooClose.svg +++ b/Examples/FollowThatTurtleNotTooClose.svg @@ -1,16 +1,16 @@ - + - + - + - + - + From 332a39df4fa02d3c5c8785f6788cc9ce40707ff8 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sun, 7 Sep 2025 22:59:57 +0000 Subject: [PATCH 091/125] feat: Removing rounding on `Turtle.Forward()` ( Fixes #221 ) --- Examples/FollowThatTurtleNotTooClosePattern.svg | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Examples/FollowThatTurtleNotTooClosePattern.svg b/Examples/FollowThatTurtleNotTooClosePattern.svg index 992a4b1..281b314 100644 --- a/Examples/FollowThatTurtleNotTooClosePattern.svg +++ b/Examples/FollowThatTurtleNotTooClosePattern.svg @@ -1,16 +1,16 @@ - + - + - + - + - + From cd541efcc95d0bf5c32f4d6bfca7e6738203b6bd Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sun, 7 Sep 2025 22:59:58 +0000 Subject: [PATCH 092/125] feat: Removing rounding on `Turtle.Forward()` ( Fixes #221 ) --- Examples/SierpinskiTriangle.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Examples/SierpinskiTriangle.svg b/Examples/SierpinskiTriangle.svg index ccd5965..0132c8f 100644 --- a/Examples/SierpinskiTriangle.svg +++ b/Examples/SierpinskiTriangle.svg @@ -1,7 +1,7 @@ - + From a42bccd51ad966632f54b2ecd555ed086dbc1bc4 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sun, 7 Sep 2025 22:59:59 +0000 Subject: [PATCH 093/125] feat: Removing rounding on `Turtle.Forward()` ( Fixes #221 ) --- Examples/TurtlesOnATextPath.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Examples/TurtlesOnATextPath.svg b/Examples/TurtlesOnATextPath.svg index 511833c..58553aa 100644 --- a/Examples/TurtlesOnATextPath.svg +++ b/Examples/TurtlesOnATextPath.svg @@ -1,7 +1,7 @@ - + turtles on a text path From 352cc1666e8497adb6c372cbe863165af9032cce Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sun, 7 Sep 2025 22:59:59 +0000 Subject: [PATCH 094/125] feat: Removing rounding on `Turtle.Forward()` ( Fixes #221 ) --- Examples/TurtlesOnATextPath-Morph.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Examples/TurtlesOnATextPath-Morph.svg b/Examples/TurtlesOnATextPath-Morph.svg index 94b3c48..215deb5 100644 --- a/Examples/TurtlesOnATextPath-Morph.svg +++ b/Examples/TurtlesOnATextPath-Morph.svg @@ -1,8 +1,8 @@ - - + + turtles on a text path From fe5cc073a19198fa228c1d980fe50f8e6a6cbe37 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sun, 7 Sep 2025 22:59:59 +0000 Subject: [PATCH 095/125] feat: Removing rounding on `Turtle.Forward()` ( Fixes #221 ) --- Examples/TurtlesOnATextPath-ATurtleCircle.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Examples/TurtlesOnATextPath-ATurtleCircle.svg b/Examples/TurtlesOnATextPath-ATurtleCircle.svg index 9861dee..3f02c65 100644 --- a/Examples/TurtlesOnATextPath-ATurtleCircle.svg +++ b/Examples/TurtlesOnATextPath-ATurtleCircle.svg @@ -1,7 +1,7 @@ - + a turtle circle From 97e93309199aab2b11ce10ca9d86a95ed15de10b Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Mon, 8 Sep 2025 11:43:24 -0700 Subject: [PATCH 096/125] docs: Get-Turtle additional examples Adding bar graph, moore curve rotations, and construction animation. --- Commands/Get-Turtle.ps1 | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/Commands/Get-Turtle.ps1 b/Commands/Get-Turtle.ps1 index 0a8bb61..9accf6b 100644 --- a/Commands/Get-Turtle.ps1 +++ b/Commands/Get-Turtle.ps1 @@ -333,7 +333,23 @@ function Get-Turtle { .EXAMPLE turtle spirolateral 23 144 8 .EXAMPLE - turtle spirolateral 23 72 8 + turtle spirolateral 23 72 8 + .EXAMPLE + # Lets get practical. Turtle can easily make a bar graph. + turtle BarGraph 200 300 (1..10) + .EXAMPLE + # Want a vertical bar graph? Rotate first. + turtle rotate 90 BarGraph 200 300 (1..10) + .EXAMPLE + # Let's provide more random points: + turtle rotate 90 BarGraph 200 300 (1..20 | Get-Random -Count 20) + .EXAMPLE + # We can draw pretty pictures by connecting and rotating graphs + turtle @( + 'BarGraph', 200, 300, (1..10), + 'BarGraph', 200, 300, (10..1), + 'rotate',180 * 2 + ) .EXAMPLE # Turtle can draw a number of fractals turtle BoxFractal 42 4 @@ -370,6 +386,9 @@ function Get-Turtle { .EXAMPLE # We can use a Moore Curve to fill a space with a bit more density. turtle MooreCurve 42 4 + .EXAMPLE + # We can rotate and repeat moore curves, giving us even Moore. + turtle @('MooreCurve', 42, 4, 'Rotate', 90 * 4) .EXAMPLE # We can show a binary tree turtle BinaryTree 42 4 @@ -382,6 +401,9 @@ function Get-Turtle { .EXAMPLE # The SierpinskiTriangle is a Fractal classic turtle SierpinskiTriangle 42 4 + .EXAMPLE + # We can morph a SierpinskiTriangle to show it step by step + turtle SierpinskiTriangle 42 4 morph .EXAMPLE # Let's draw two reflected Sierpinski Triangles turtle @( From 2c4c2e231cb035a3322c365293ba5dba257d48d2 Mon Sep 17 00:00:00 2001 From: StartAutomating Date: Mon, 8 Sep 2025 13:35:09 -0700 Subject: [PATCH 097/125] docs: Adding Turtles All The Way Down to README ( Fixes #206 ) Also colorizing FollowThatTurtle examples and fixing names. --- Examples/FollowThatTurtle-HideAndSeek.svg | 27 --- .../FollowThatTurtle-HideAndSeekPattern.svg | 27 --- ...=> FollowThatTurtleHideAndSeek.turtle.ps1} | 22 +- .../FollowThatTurtleNotTooClose.turtle.ps1 | 12 +- README.md | 213 ++++++++++++++++-- README.md.ps1 | 111 +++++++-- 6 files changed, 313 insertions(+), 99 deletions(-) delete mode 100644 Examples/FollowThatTurtle-HideAndSeek.svg delete mode 100644 Examples/FollowThatTurtle-HideAndSeekPattern.svg rename Examples/{FollowThatTurtle-HideAndSeek.turtle.ps1 => FollowThatTurtleHideAndSeek.turtle.ps1} (70%) diff --git a/Examples/FollowThatTurtle-HideAndSeek.svg b/Examples/FollowThatTurtle-HideAndSeek.svg deleted file mode 100644 index 5c1655a..0000000 --- a/Examples/FollowThatTurtle-HideAndSeek.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Examples/FollowThatTurtle-HideAndSeekPattern.svg b/Examples/FollowThatTurtle-HideAndSeekPattern.svg deleted file mode 100644 index 535cb03..0000000 --- a/Examples/FollowThatTurtle-HideAndSeekPattern.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Examples/FollowThatTurtle-HideAndSeek.turtle.ps1 b/Examples/FollowThatTurtleHideAndSeek.turtle.ps1 similarity index 70% rename from Examples/FollowThatTurtle-HideAndSeek.turtle.ps1 rename to Examples/FollowThatTurtleHideAndSeek.turtle.ps1 index 9d92d62..df2b8c6 100644 --- a/Examples/FollowThatTurtle-HideAndSeek.turtle.ps1 +++ b/Examples/FollowThatTurtleHideAndSeek.turtle.ps1 @@ -33,15 +33,15 @@ $midpoint = ($squareSize/2), ($squareSize/2) $seekerSpeed = $HiderSpeed * $SeekerSpeedRatio # (1 + (Get-Random -Min 10 -Max 50)/50) # (Get-Random -Min 1 -Max 5) $stepCount = $squareSize/2 * (1 + ([Math]::Abs($attackerSpeed - $evaderSpeed))) -$hideAndSeek = turtle square $squareSize turtles ([Ordered]@{ - s1 = turtle teleport 0 0 # stroke 'red' pathclass 'red-stroke' fill red - s2 = turtle teleport $squareSize 0 # stroke 'yellow' pathclass 'yellow-stroke' fill yellow - s3 = turtle teleport $squareSize $squareSize # stroke 'green' pathclass 'green-stroke' fill green - s4 = turtle teleport 0 $squareSize # stroke 'blue' PathClass 'blue-stroke' fill blue - h1 = turtle teleport $midpoint # stroke 'red' fill 'red' - h2 = turtle teleport $midpoint # stroke 'yellow' fill 'yellow' - h3 = turtle teleport $midpoint # stroke 'green' fill 'green' - h4 = turtle teleport $midpoint # stroke 'blue' fill 'blue' +$hideAndSeek = turtle square $squareSize stroke '#4488ff' turtles ([Ordered]@{ + s1 = turtle teleport 0 0 stroke '#4488ff' # stroke 'red' pathclass 'red-stroke' fill red + s2 = turtle teleport $squareSize stroke '#4488ff' 0 # stroke 'yellow' pathclass 'yellow-stroke' fill yellow + s3 = turtle teleport $squareSize $squareSize stroke '#4488ff' # stroke 'green' pathclass 'green-stroke' fill green + s4 = turtle teleport 0 $squareSize stroke '#4488ff' # stroke 'blue' PathClass 'blue-stroke' fill blue + h1 = turtle teleport $midpoint stroke '#4488ff' # stroke 'red' fill 'red' + h2 = turtle teleport $midpoint stroke '#4488ff' # stroke 'yellow' fill 'yellow' + h3 = turtle teleport $midpoint stroke '#4488ff' # stroke 'green' fill 'green' + h4 = turtle teleport $midpoint stroke '#4488ff' # stroke 'blue' fill 'blue' }) @@ -81,8 +81,8 @@ $hideAndSeek = turtle square $squareSize turtles ([Ordered]@{ } -$hideAndSeek | turtle save ./FollowThatTurtle-HideAndSeek.svg +$hideAndSeek | turtle save ./FollowThatTurtleHideAndSeek.svg $hideAndSeek.Stroke = 'transparent' -$hideAndSeek | Save-Turtle ./FollowThatTurtle-HideAndSeekPattern.svg Pattern +$hideAndSeek | Save-Turtle ./FollowThatTurtleHideAndSeekPattern.svg Pattern if ($PSScriptRoot) { Pop-Location} \ No newline at end of file diff --git a/Examples/FollowThatTurtleNotTooClose.turtle.ps1 b/Examples/FollowThatTurtleNotTooClose.turtle.ps1 index 0b54177..54b6065 100644 --- a/Examples/FollowThatTurtleNotTooClose.turtle.ps1 +++ b/Examples/FollowThatTurtleNotTooClose.turtle.ps1 @@ -6,7 +6,7 @@ A series of turtles will follow the next turtle, until they get within a proximity. - Then, the same turtles will avoid the turtle, until they are outside of the proximity + Then, the same turtles will avoid the turtle, until they are outside of the proximity. #> param( # The size of the square @@ -36,11 +36,11 @@ if (-not $Proximity) { } # Set up our turtles. -$followThatTurtle = turtle square $Size turtles ([Ordered]@{ - t1 = turtle teleport 0 0 - t2 = turtle teleport $Size 0 - t3 = turtle teleport $Size $Size - t4 = turtle teleport 0 $Size +$followThatTurtle = turtle square $Size stroke '#4488ff' turtles ([Ordered]@{ + t1 = turtle teleport 0 0 stroke '#4488ff' + t2 = turtle teleport $Size 0 stroke '#4488ff' + t3 = turtle teleport $Size $Size stroke '#4488ff' + t4 = turtle teleport 0 $Size stroke '#4488ff' }) # For each step diff --git a/README.md b/README.md index 4bbd539..f443ae7 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,6 @@ - - ## Turtles in a PowerShell [Turtle Graphics](https://en.wikipedia.org/wiki/Turtle_graphics) are a great way to learn programming and describe shapes. @@ -90,6 +88,9 @@ The turtle is represented as an object, and any number of commands can make or m Last but not least: Get-Turtle lets you run multiple steps of turtle, and is aliased to urtle. +Get-Turtle is the command we will use most often, and we will almost always just call it by the alias urtle. + +If you want to get a sense of all that Turtle can do, check out the [Get-Turtle examples](https://psturtle.com/Commands/Get-Turtle) ### Drawing Squares @@ -102,15 +103,10 @@ Let's start simple, by drawing a square with a series of commands. ~~~PowerShell -New-Turtle | - Move-Turtle Forward 10 | - Move-Turtle Rotate 90 | - Move-Turtle Forward 10 | - Move-Turtle Rotate 90 | - Move-Turtle Forward 10 | - Move-Turtle Rotate 90 | - Move-Turtle Forward 10 | - Move-Turtle Rotate 90 | +turtle Forward 10 Rotate 90 | + turtle Forward 10 Rotate 90 | + turtle Forward 10 Rotate 90 | + turtle Forward 10 Rotate 90 | Save-Turtle "./Square.svg" ~~~ @@ -198,7 +194,7 @@ Because this Turtle generates SVG, we can also use it to create patterns. ### Drawing Fractals -Turtle is often used to draw fractals. +Turtle is can be used to draw fractals. Many fractals can be described in something called a [L-System](https://en.wikipedia.org/wiki/L-system) (short for Lindenmayer system) @@ -290,6 +286,192 @@ Pop-Location