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