Skip to content

Commit 77d9f24

Browse files
author
James Brundage
committed
feat: Turtle.SierpinskiSquareCurve ( Fixes PoshWeb#41 )
1 parent 0cc63de commit 77d9f24

1 file changed

Lines changed: 34 additions & 0 deletions

File tree

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<#
2+
.SYNOPSIS
3+
Generates a Sierpinski Square Curve.
4+
.DESCRIPTION
5+
Generates a Sierpinski Square Curve using turtle graphics.
6+
.LINK
7+
https://en.wikipedia.org/wiki/Sierpi%C5%84ski_curve#Representation_as_Lindenmayer_system
8+
.EXAMPLE
9+
$turtle.SierpinskiSquareCurve().Pattern.Save("$pwd/SierpinskiSquareCurve.svg")
10+
.EXAMPLE
11+
$turtle.Clear()
12+
$turtle.SierpinskiSquareCurve(10,4)
13+
$turtle.PatternTransform = @{
14+
'scale' = 0.9
15+
}
16+
$turtle.PatternAnimation = "
17+
<animateTransform attributeName='patternTransform' attributeType='XML' type='scale' values='1;0.9;1' dur='19s' repeatCount='indefinite' additive='sum' />
18+
<animateTransform attributeName='patternTransform' attributeType='XML' type='skewY' values='0;-30;30;-30;0' dur='67s' repeatCount='indefinite' additive='sum' />
19+
<animateTransform attributeName='patternTransform' attributeType='XML' type='skewX' values='0;-30;30;-30;0' dur='83s' repeatCount='indefinite' additive='sum' />
20+
"
21+
$turtle.Pattern.Save("$pwd/SierpinskiSquareCurve2.svg")
22+
#>
23+
param(
24+
[double]$Size = 20,
25+
[int]$Order = 5,
26+
[double]$Angle = 90
27+
)
28+
return $this.L('X', [Ordered]@{
29+
X = 'XF-F+F-XF+F+XF-F+F-X'
30+
}, $Order, [Ordered]@{
31+
'\+' = { $this.Rotate($Angle) }
32+
'-' = { $this.Rotate($Angle * -1) }
33+
'[FG]' = { $this.Forward($Size) }
34+
})

0 commit comments

Comments
 (0)