Skip to content

Commit 5652186

Browse files
author
James Brundage
committed
feat: Turtle.SierpinskiArrowheadCurve ( Fixes #40 )
1 parent 4c8a55e commit 5652186

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<#
2+
.SYNOPSIS
3+
Generates a Sierpinski Arrowhead Curve.
4+
.DESCRIPTION
5+
Generates a Sierpinski Arrowhead Curve using turtle graphics.
6+
.LINK
7+
https://en.wikipedia.org/wiki/Sierpi%C5%84ski_curve#Representation_as_Lindenmayer_system_2
8+
.EXAMPLE
9+
$turtle.SierpinskiArrowheadCurve().Pattern.Save("$pwd/SierpinskiArrowhead.svg")
10+
.EXAMPLE
11+
$turtle.Clear()
12+
$turtle.SierpinskiArrowheadCurve(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/SierpinskiArrowhead2.svg")
22+
#>
23+
24+
param(
25+
[double]$Size = 30,
26+
[int]$Order = 8,
27+
[double]$Angle = 60
28+
)
29+
return $this.L('XF', [Ordered]@{
30+
X = 'YF + XF + Y'
31+
Y = 'XF - YF - X'
32+
}, $Order, [Ordered]@{
33+
'\+' = { $this.Rotate($Angle) }
34+
'-' = { $this.Rotate($Angle * -1) }
35+
'F' = { $this.Forward($Size) }
36+
})

0 commit comments

Comments
 (0)