Skip to content

Commit 4c8a55e

Browse files
StartAutomatingStartAutomating
authored andcommitted
feat: Turtle.SierpinskiCurve ( Fixes #39 )
1 parent 36bb4d6 commit 4c8a55e

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

Turtle.types.ps1xml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,46 @@ $this.Heading += $Angle
221221
return $this
222222
</Script>
223223
</ScriptMethod>
224+
<ScriptMethod>
225+
<Name>SierpinskiCurve</Name>
226+
<Script>
227+
&lt;#
228+
.SYNOPSIS
229+
Generates a Sierpinski Curve.
230+
.DESCRIPTION
231+
Generates a Sierpinski Curve using turtle graphics.
232+
.LINK
233+
https://en.wikipedia.org/wiki/Sierpi%C5%84ski_curve#Representation_as_Lindenmayer_system
234+
.EXAMPLE
235+
$turtle.SierpinskiCurve().Pattern.Save("$pwd/SierpinskiCurve.svg")
236+
.EXAMPLE
237+
$turtle.Clear()
238+
$turtle.SierpinskiCurve(10,4)
239+
$turtle.PatternTransform = @{
240+
'scale' = 0.9
241+
}
242+
$turtle.PatternAnimation = "
243+
&lt;animateTransform attributeName='patternTransform' attributeType='XML' type='scale' values='1;0.9;1' dur='19s' repeatCount='indefinite' additive='sum' /&gt;
244+
&lt;animateTransform attributeName='patternTransform' attributeType='XML' type='skewY' values='0;-30;30;-30;0' dur='67s' repeatCount='indefinite' additive='sum' /&gt;
245+
&lt;animateTransform attributeName='patternTransform' attributeType='XML' type='skewX' values='0;-30;30;-30;0' dur='83s' repeatCount='indefinite' additive='sum' /&gt;
246+
"
247+
$turtle.Pattern.Save("$pwd/SierpinskiCurve2.svg")
248+
#&gt;
249+
param(
250+
[double]$Size = 20,
251+
[int]$Order = 4,
252+
[double]$Angle = 45
253+
)
254+
return $this.L('F--XF--F--XF', [Ordered]@{
255+
X ='XF+G+XF--F--XF+G+X'
256+
}, $Order, [Ordered]@{
257+
'\+' = { $this.Rotate($Angle) }
258+
'-' = { $this.Rotate($Angle * -1) }
259+
'[FG]' = { $this.Forward($Size) }
260+
})
261+
262+
</Script>
263+
</ScriptMethod>
224264
<ScriptMethod>
225265
<Name>SierpinskiTriangle</Name>
226266
<Script>

0 commit comments

Comments
 (0)