Turtle
0.2.1
Turtle Graphics in PowerShell
Installation Options
Owners
Copyright
2025 Start-Automating
Package Details
Author(s)
- James Brundage
 
Tags
PowerShell Turtle Graphics TurtleGraphics SVG Drawing L-System Fractal
Functions
Get-Turtle Move-Turtle New-Turtle Save-Turtle Set-Turtle Show-Turtle
Dependencies
This module has no dependencies.
Release Notes
## Turtle 0.2.1:
* New Documentation:
  * Over 130 examples!
  * A Brief History of Turtles (#249)
* Website improvements
  * Copy Code Button! (#331)
  * Improved layout and new backgrounds (#333)
  * Improving build (#344)
  * Defaulting palette selection (#346)
* Major improvements
  * A turtle can now be any element!
  * Support for CSS keyframes, styles, and variables!
  * Vastly expanded SVG support, including bezier curves!
  * CircleArcs and Pie Graphs!  Improvements to circles.
* `Turtle` command improvements:
  * `Get-Turtle`
    * `Get-Turtle` help (#273) ( `turtle flower help` `turtle flower help examples`)
    * `Get-Turtle` now tracks commands (#250)
    * `Get-Turtle` now supports brackets (#255) and prebalances them (#262)
    * `Get-Turtle -AsJob` (#268)
    * `Get-Turtle` improved set errors (#252)
  * `Save-Turtle`
    * `Save-Turtle` saves as SVG by default (#259)
    * `Save-Turtle` autosaves by name (#269)
  * `Show-Turtle` will show the turtle (#257)  
* New methods:
  * `Turtle.a/Arc` (#231)
  * `Turtle.b/BezierCurve` (#228)
  * `Turtle.CircleArc` (#235)
  * `Turtle.c/CubicBezierCurve` (#230)
  * `Turtle.FractalShrub` (#332)
  * `Turtle.Leg` (#288)  
  * `Turtle.Pie/PieGraph` (#239)
  * `Turtle.q/QuadraticBezierCurve` (#229)
  * `Turtle.Repeat` (#256)
  * `Turtle.Spider` (#289)
  * `Turtle.Spiderweb` (#290)
  * `Turtle.Spokes` (#291)
  * `Turtle.Sun` (#297)
  * `Turtle.Show` (#258)  
* New properties:
  * `Turtle.get_ArgumentList` (#296)
  * `Turtle.get/set_Attribute` (#247)
  * `Turtle.get/set_Class` (#237)
  * `Turtle.get_Commands` (#250)
  * `Turtle.get_DataBlock` (#284)
  * `Turtle.get/set_Element` (#248)  
  * `Turtle.get/set_Defines` (#243)
  * `Turtle.get_ScriptBlock` (#253)   
  * `Turtle.get/set_Defines` (#243)
  * `Turtle.get/set_Keyframe(s)` (#251)
  * `Turtle.get_History` (#279)
  * `Turtle.get/set_Link/Href` (#241)
  * `Turtle.get/set_Locale` (#300)
  * `Turtle.get_Marker` (#227)
  * `Turtle.get/set_MarkerEnd` (#233)
  * `Turtle.get/set_MarkerMiddle` (#234)
  * `Turtle.get/set_MarkerStart` (#232)  
  * `Turtle.get/set_Opacity` (#293)
  * `Turtle.get/set_Precision` (#225)
  * `Turtle.ResizeViewBox` (#238)
  * `Turtle.get/set_Start` (#245)        
  * `Turtle.get/set_Style` (#254)
  * `Turtle.get/set_Variable` (#263)
  * `Turtle.get/set_Title` (#285)
* New pseudo type:
  * `Turtle.History`
    * `Turtle.History.ToString()` (#282)
    * `Turtle.History.DefaultDisplay` (#283)
  * `Turtle.js` (experimental)
    * Javascript version of turtle (#302)    
    * Initial Core Operations:
      * `Turtle.js.heading` (#303)
      * `Turtle.js.rotate` (#304)
      * `Turtle.js.forward` (#305) (#337) (#338)
      * `Turtle.js.isPenDown` (#306)
      * `Turtle.js.goTo` (#307)
      * `Turtle.js.step` (#308)
      * `Turtle.js.teleport` (#309) (#334)
      * `Turtle.js.steps` (#310)
      * `Turtle.js.min` (#311)
      * `Turtle.js.max` (#312)
      * `Turtle.js.resize` (#313)
      * `Turtle.js.x` (#314)
      * `Turtle.js.y` (#315)
      * `Turtle.js.width` (#316)
      * `Turtle.js.height` (#317)
      * `Turtle.js.pathData` (#318) (#339)
      * `Turtle.js.polygon` (#319) (#336) (#338)
      * `Turtle.js.penUp` (#322)
      * `Turtle.js.penDown` (#323)
      * `Turtle.js.parse` (#327)
      * `Turtle.js.go` (#330)
      * `Turtle.js.ToString.ps1()` (#320)
      * `Turtle.js.get_JavaScript.ps1` (#324)
    * Thanks @ninmonkey for early testing!
* Improved methods:
  * `Turtle.ArcLeft/ArcRight` allows StepCount (#272)
  * `Turtle.Circle` optimization (#287)
  * `Turtle.FractalPlant` improvement (#271)
  * `Turtle.HorizontalLine` is mapped to SVG `h` (#280)
  * `Turtle.VerticalLine` is mapped to SVG `v` (#281)  
* Improvemented Properties:
  * Adding `[OutputType([xml])]` to properties that output XML (#266)
  * `Turtle.get_Duration` defaults (#270)
  * `Turtle.get_Mask/PatternMask` returns only the mask (#261)  
  * `Turtle.set_BackgroundColor` applies to SVG directly (#260)  
  * `Turtle.get_Maximum` is a vector (#275)
  * `Turtle.get_Minimum` is a vector (#276)
  * `Turtle.get_Position` is a vector (#274)
  * `Turtle.set_Stroke` supports gradients (#295)
  * `Turtle.set_Fill` supports gradients (#294)
  * `Turtle.set_PathAnimation` will not overwrite a morph (#244)
  * `Turtle.get/set_PatternAnimation` uses duration (#299) and improved docs (#298)
  * `Turtle.get_TextElement` defaults to centered text (#265)
  * `Turtle.get_TextElement` improved color support (#292)
  * `Turtle.get_ViewBox` negative bounds (#286)
* More aliases:
  * Added Internationalized Aliases (i.e. `Turtle.BackgroundColour`) (#236)
  * SVG syntax aliases (#240)
* Fixed extra output in `Turtle.Pop` (#264)
---
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)
FileList
- Turtle.nuspec
 - Types\Turtle.History\ToString.ps1
 - Types\Turtle\set_Text.ps1
 - Types\Turtle\StarFlower.ps1
 - CHANGELOG.md
 - Types\Turtle.History\DefaultDisplay.txt
 - Types\Turtle\KochSnowflake.ps1
 - Types\Turtle\set_AnimateMotionDuration.ps1
 - LICENSE
 - Types\Turtle.js\penDown.js
 - Types\Turtle\LSystem.ps1
 - Types\Turtle\MooreCurve.ps1
 - CONTRIBUTING.md
 - Types\Turtle.js\isPenDown.js
 - Types\Turtle\get_Pattern.ps1
 - Types\Turtle\BinaryTree.ps1
 - Turtle.psm1
 - Types\Turtle.js\polygon.js
 - Types\Turtle\set_Style.ps1
 - Types\Turtle\get_TextAttribute.ps1
 - Turtle.psd1
 - Types\Turtle.js\forward.js
 - Types\Turtle\GoTo.ps1
 - Types\Turtle\Spiderweb.ps1
 - action.yml
 - Types\Turtle.js\teleport.js
 - Types\Turtle\set_Fill.ps1
 - Types\Turtle\get_PathClass.ps1
 - README.md
 - Types\Turtle.js\x.js
 - Types\Turtle\get_Maximum.ps1
 - Types\Turtle\get_Title.ps1
 - Turtle.tests.ps1
 - Types\Turtle.js\go.js
 - Types\Turtle\ToString.ps1
 - Types\Turtle\Distance.ps1
 - CNAME
 - Types\Turtle.js\get_heading.js
 - Types\Turtle\get_Duration.ps1
 - Types\Turtle\Spokes.ps1
 - README.md.ps1
 - Types\Turtle.js\ToString.ps1
 - Types\Turtle\BoxFractal.ps1
 - Types\Turtle\get_Fill.ps1
 - CODE_OF_CONDUCT.md
 - Types\Turtle.js\step.js
 - Types\Turtle\ycor.ps1
 - Types\Turtle\set_PathAttribute.ps1
 - Turtle.types.ps1xml
 - Types\Turtle.js\resize.js
 - Types\Turtle\get_Text.ps1
 - Types\Turtle\set_MarkerStart.ps1
 - SECURITY.md
 - Types\Turtle.js\height.js
 - Types\Turtle\ArcLeft.ps1
 - Types\Turtle\get_X.ps1
 - Examples\BoxFractal2.svg
 - Types\Turtle.js\steps.js
 - Types\Turtle\set_TextAnimation.ps1
 - Types\Turtle\get_Points.ps1
 - Examples\EndlessStepSpiral.svg
 - Types\Turtle.js\get_JavaScript.ps1
 - Types\Turtle\Polygon.ps1
 - Types\Turtle\VerticalLine.ps1
 - Examples\TurtlesOnATextPath.turtle.ps1
 - Types\Turtle.js\goto.js
 - Types\Turtle\StepSpiral.ps1
 - Types\Turtle\get_TextElement.ps1
 - Examples\InscribedCircle.svg
 - Types\Turtle.js\y.js
 - Types\Turtle\get_Minimum.ps1
 - Types\Turtle\GosperCurve.ps1
 - Examples\EndlessStepSpiral.turtle.ps1
 - Types\Turtle.js\parse.js
 - Types\Turtle\get_ViewBox.ps1
 - Types\Turtle\get_Symbol.ps1
 - Examples\EndlessScissorPoly.svg
 - Types\Turtle.js\set_heading.js
 - Types\Turtle\FlowerPetal.ps1
 - Types\Turtle\set_Attribute.ps1
 - Examples\EndlessBoxFractal.turtle.ps1
 - Types\Turtle.js\max.js
 - Types\Turtle\get_SVGAttribute.ps1
 - Types\Turtle\get_Canvas.ps1
 - Examples\EndlessHilbert.svg
 - Types\Turtle.js\min.js
 - Types\Turtle\TwinDragonCurve.ps1
 - Types\Turtle\set_Element.ps1
 - Examples\TurtlesOnATextPath-ATurtleCircle.svg
 - Types\Turtle.js\get_pathData.js
 - Types\Turtle\get_SVGAnimation.ps1
 - Types\Turtle\get_Locale.ps1
 - Examples\FollowThatTurtleHideAndSeek.svg
 - Types\Turtle.js\width.js
 - Types\Turtle\set_Height.ps1
 - Types\Turtle\get_DataURL.ps1
 - Examples\EndlessSnowflake.turtle.ps1
 - Types\Turtle.js\penUp.js
 - Types\Turtle\get_PathElement.ps1
 - Types\Turtle\set_Variable.ps1
 - Examples\FollowThatTurtleHideAndSeekPattern.svg
 - Types\Turtle.js\rotate.js
 - Types\Turtle\get_WEBP.ps1
 - Types\Turtle\DefaultDisplay.txt
 - Examples\Keyframes.turtle.ps1
 - Types\Turtle\get_History.ps1
 - Types\Turtle\Repeat.ps1
 - Types\Turtle\Triplexity.ps1
 - Examples\FollowThatTurtlePattern.svg
 - Types\Turtle\Morph.ps1
 - Types\Turtle\get_PNG.ps1
 - Types\Turtle\Circle.ps1
 - Examples\FollowThatTurtle.svg
 - Types\Turtle\Home.ps1
 - Types\Turtle\Leg.ps1
 - Types\Turtle\get_Style.ps1
 - Examples\FollowThatTurtle.turtle.ps1
 - Types\Turtle\Left.ps1
 - Types\Turtle\PieGraph.ps1
 - Types\Turtle\Pentaplexity.ps1
 - Examples\TurtlesOnATextPath-BendMorph.svg
 - Types\Turtle\Backward.ps1
 - Types\Turtle\PenUp.ps1
 - Types\Turtle\set_BackgroundColor.ps1
 - Examples\TurtlesOnATextPath-Morph.svg
 - Types\Turtle\set_Defines.ps1
 - Types\Turtle\Towards.ps1
 - Types\Turtle\RingFractal.ps1
 - Examples\EndlessSpirolateral.svg
 - Types\Turtle\Arc.ps1
 - Types\Turtle\get_Position.ps1
 - Types\Turtle\Scissor.ps1
 - Examples\BoxFractal3.svg
 - Types\Turtle\get_MarkerEnd.ps1
 - Types\Turtle\get_Mask.ps1
 - Types\Turtle\get_Height.ps1
 - Examples\FollowThatTurtleNotTooClose.svg
 - Types\Turtle\Show.ps1
 - Types\Turtle\Clear.ps1
 - Types\Turtle\xcor.ps1
 - Examples\SierpinskiTriangle.turtle.ps1
 - Types\Turtle\set_MarkerEnd.ps1
 - Types\Turtle\LevyCurve.ps1
 - Types\Turtle\set_Keyframe.ps1
 - Examples\Square.svg
 - Types\Turtle\get_MarkerStart.ps1
 - Types\Turtle\Flower.ps1
 - Types\Turtle\Alias.psd1
 - Examples\Keyframes-Wow.svg
 - Types\Turtle\set_Class.ps1
 - Types\Turtle\Teleport.ps1
 - Types\Turtle\get_Opacity.ps1
 - Examples\EndlessSpirolateral.turtle.ps1
 - Types\Turtle\get_Precision.ps1
 - Types\Turtle\SierpinskiArrowheadCurve.ps1
 - Types\Turtle\Rotate.ps1
 - Examples\InscribedCirclePattern.svg
 - Types\Turtle\get_Keyframe.ps1
 - Types\Turtle\PeanoCurve.ps1
 - Types\Turtle\KochCurve.ps1
 - Examples\EndlessSnowflake.svg
 - Types\Turtle\set_SVGAnimation.ps1
 - Types\Turtle\get_Steps.ps1
 - Types\Turtle\set_ViewBox.ps1
 - Examples\BoxFractal.turtle.ps1
 - Types\Turtle\get_Y.ps1
 - Types\Turtle\TurtleMonotile.ps1
 - Types\Turtle\get_Heading.ps1
 - Examples\KochSnowflakePattern.svg
 - Types\Turtle\set_SVGAttribute.ps1
 - Types\Turtle\set_IsPenDown.ps1
 - Types\Turtle\set_Start.ps1
 - Examples\FollowThatTurtleHideAndSeek.turtle.ps1
 - Types\Turtle\get_JPEG.ps1
 - Types\Turtle\set_Link.ps1
 - Types\Turtle\get_Turtles.ps1
 - Examples\Keyframes-Moving-Square.svg
 - Types\Turtle\ResizeViewBox.ps1
 - Types\Turtle\get_AnimateMotionDuration.ps1
 - Types\Turtle\get_Stroke.ps1
 - Examples\FollowThatTurtleNotTooClose.turtle.ps1
 - Types\Turtle\get_Attribute.ps1
 - Types\Turtle\get_Defines.ps1
 - Types\Turtle\set_PathTransform.ps1
 - Examples\EndlessSierpinski.turtle.ps1
 - Types\Turtle\get_PathAttribute.ps1
 - Types\Turtle\get_TextAnimation.ps1
 - Types\Turtle\BarGraph.ps1
 - Examples\TurtlesOnATextPath.svg
 - Types\Turtle\Spider.ps1
 - Types\Turtle\GoldenFlower.ps1
 - Types\Turtle\Rectangle.ps1
 - Examples\Hexagon.svg
 - Types\Turtle\Star.ps1
 - Types\Turtle\CircleArc.ps1
 - Types\Turtle\set_TextAttribute.ps1
 - Examples\SierpinskiTriangle.svg
 - Types\Turtle\CrystalFractal.ps1
 - Types\Turtle\get_AnimateMotion.ps1
 - Types\Turtle\set_Duration.ps1
 - Examples\EndlessScissorPoly.turtle.ps1
 - Types\Turtle\KochIsland.ps1
 - Types\Turtle\get_Element.ps1
 - Types\Turtle\TileFractal.ps1
 - Examples\EndlessSierpinskiTrianglePattern.svg
 - Types\Turtle\set_ID.ps1
 - Types\Turtle\BezierCurve.ps1
 - Types\Turtle\set_PathAnimation.ps1
 - Examples\FollowThatTurtleNotTooClosePattern.svg
 - Types\Turtle\Sun.ps1
 - Types\Turtle\get_PatternAnimation.ps1
 - Types\Turtle\get_ClipPath.ps1
 - Examples\InscribedCircle.turtle.ps1
 - Types\Turtle\get_ID.ps1
 - Types\Turtle\set_Stroke.ps1
 - Types\Turtle\get_PatternTransform.ps1
 - Examples\BoxFractal.svg
 - Types\Turtle\get_Width.ps1
 - Types\Turtle\Right.ps1
 - Types\Turtle\set_StrokeWidth.ps1
 - Examples\EndlessBoxFractal.svg
 - Types\Turtle\get_OffsetPath.ps1
 - Types\Turtle\set_Precision.ps1
 - Types\Turtle\set_Steps.ps1
 - Examples\Keyframes-Wiggle-Square.svg
 - Types\Turtle\set_Title.ps1
 - Types\Turtle\Jump.ps1
 - Types\Turtle\set_Width.ps1
 - Examples\EndlessHilbert.turtle.ps1
 - Types\Turtle\set_Heading.ps1
 - Types\Turtle\get_Marker.ps1
 - Types\Turtle\get_PathTransform.ps1
 - Examples\HexagonPattern.svg
 - Types\Turtle\QuadraticBezierCurve.ps1
 - Types\Turtle\get_PathAnimation.ps1
 - Types\Turtle\PenDown.ps1
 - Examples\BoxFractal1.svg
 - Types\Turtle\SierpinskiCurve.ps1
 - Types\Turtle\FractalShrub.ps1
 - Types\Turtle\set_Locale.ps1
 - Build\Turtle.GitHubAction.PSDevOps.ps1
 - Types\Turtle\get_Stack.ps1
 - Types\Turtle\get_PatternMask.ps1
 - Types\Turtle\FillColor.ps1
 - Build\Turtle.GitHubWorkflow.PSDevOps.ps1
 - Types\Turtle\PenColor.ps1
 - Types\Turtle\TerdragonCurve.ps1
 - psturtle.com\_includes\LastBuild.json.ps1
 - Build\Turtle.ezout.ps1
 - Types\Turtle\Push.ps1
 - Types\Turtle\get_Start.ps1
 - psturtle.com\_includes\Feather.ps1
 - Commands\Move-Turtle.ps1
 - Types\Turtle\get_Variable.ps1
 - Types\Turtle\FractalPlant.ps1
 - psturtle.com\_includes\Robots.txt.ps1
 - Commands\New-Turtle.ps1
 - Types\Turtle\set_MarkerMiddle.ps1
 - Types\Turtle\HilbertCurve.ps1
 - psturtle.com\_includes\Index.rss.ps1
 - Commands\Get-Turtle.ps1
 - Types\Turtle\get_IsPenDown.ps1
 - Types\Turtle\Petal.ps1
 - psturtle.com\_includes\SelectPalette.ps1
 - Commands\Show-Turtle.ps1
 - Types\Turtle\ArcRight.ps1
 - Types\Turtle\set_FillRule.ps1
 - psturtle.com\_includes\GetRandomPalette.ps1
 - Commands\Save-Turtle.ps1
 - Types\Turtle\get_MarkerMiddle.ps1
 - Types\Turtle\Spirolateral.ps1
 - psturtle.com\_includes\Help.ps1
 - Commands\Set-Turtle.ps1
 - Types\Turtle\Save.ps1
 - Types\Turtle\get_ScriptBlock.ps1
 - psturtle.com\_includes\Sitemap.xml.ps1
 - Demos\Turtle_101-Intro-To-Turtles.demo.ps1
 - Types\Turtle\SierpinskiSquareCurve.ps1
 - Types\Turtle\BoardFractal.ps1
 - psturtle.com\_includes\Index.json.ps1
 - psturtle.com\CHANGELOG.html.ps1
 - Types\Turtle\get_FillRule.ps1
 - Types\Turtle\Square.ps1
 - psturtle.com\_includes\BlueSky.svg
 - psturtle.com\History.html.ps1
 - Types\Turtle\set_PathClass.ps1
 - Types\Turtle\CubicBezierCurve.ps1
 - psturtle.com\Commands\Save-Turtle.html.ps1
 - psturtle.com\SECURITY.html.ps1
 - Types\Turtle\HorizontalLine.ps1
 - Types\Turtle\Step.ps1
 - psturtle.com\Commands\New-Turtle.html.ps1
 - psturtle.com\buildPage.ps1
 - Types\Turtle\get_DataBlock.ps1
 - Types\Turtle\set_PatternTransform.ps1
 - psturtle.com\Commands\Get-Turtle.html.ps1
 - psturtle.com\index.html.ps1
 - Types\Turtle\SierpinskiTriangle.ps1
 - Types\Turtle\Forward.ps1
 - psturtle.com\Commands\Move-Turtle.html.ps1
 - psturtle.com\CONTRIBUTING.html.ps1
 - Types\Turtle\get_PathData.ps1
 - Types\Turtle\ScissorPoly.ps1
 - psturtle.com\Commands\Set-Turtle.html.ps1
 - psturtle.com\layout.ps1
 - Types\Turtle\get_ArgumentList.ps1
 - Types\Turtle\get_BackgroundColor.ps1
 - psturtle.com\History\Turtles-2.md
 - psturtle.com\build.ps1
 - Types\Turtle\get_SVG.ps1
 - Types\Turtle\HatMonotile.ps1
 - psturtle.com\History\Turtles-3.md
 - psturtle.com\Commands.html.ps1
 - Types\Turtle\set_PatternAnimation.ps1
 - Types\Turtle\set_Position.ps1
 - psturtle.com\History\Turtles-1.md
 - psturtle.com\CODE_OF_CONDUCT.html.ps1
 - Types\Turtle\get_Class.ps1
 - Types\Turtle\get_Link.ps1
 - Build\GitHub\Actions\TurtleAction.ps1
 - psturtle.com\filters.ps1
 - Types\Turtle\set_Turtles.ps1
 - Types\Turtle\get_StrokeWidth.ps1
 - Build\GitHub\Jobs\BuildTurtle.psd1
 - psturtle.com\config.ps1
 - Types\Turtle\get_PatternDataURL.ps1
 - Types\Turtle\set_Opacity.ps1
 - Build\GitHub\Steps\PublishTestResults.psd1
 - psturtle.com\LICENSE.html.ps1
 - Types\Turtle\Pop.ps1