forked from JuliaDiff/ChainRulesCore.jl
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmake_logo.jl
More file actions
84 lines (67 loc) · 1.73 KB
/
make_logo.jl
File metadata and controls
84 lines (67 loc) · 1.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
using Pkg: @pkg_str
# For reproducability only dependency this has is Luxor,
# and it was created with Luxor v1.6.0
pkg"add Luxor@v1.6"
using Luxor
using Random
const bridge_len = 50
function chain(jiggle=0)
shaky_rotate(θ) = rotate(θ + jiggle * (rand() - 0.5))
### 1
shaky_rotate(0)
sethue(Luxor.julia_red)
link()
m1 = getmatrix()
### 2
sethue(Luxor.julia_green)
translate(-50, 130)
shaky_rotate(π / 3)
link()
m2 = getmatrix()
setmatrix(m1)
sethue(Luxor.julia_red)
overlap(-1.3π)
setmatrix(m2)
### 3
shaky_rotate(-π / 3)
translate(-120, 80)
sethue(Luxor.julia_purple)
link()
setmatrix(m2)
setcolor(Luxor.julia_green)
return overlap(-1.5π)
end
function link()
sector(50, 90, π, 0, :fill)
sector(Point(0, bridge_len), 50, 90, 0, -π, :fill)
rect(50, -3, 40, bridge_len + 6, :fill)
rect(-50 - 40, -3, 40, bridge_len + 6, :fill)
sethue("black")
move(Point(-50, bridge_len))
arc(Point(0, 0), 50, π, 0, :stoke)
arc(Point(0, bridge_len), 50, 0, -π, :stroke)
move(Point(-90, bridge_len))
arc(Point(0, 0), 90, π, 0, :stoke)
arc(Point(0, bridge_len), 90, 0, -π, :stroke)
return strokepath()
end
function overlap(ang_end)
sector(Point(0, bridge_len), 50, 90, -0.0, ang_end, :fill)
sethue("black")
arc(Point(0, bridge_len), 50, 0, ang_end, :stoke)
move(Point(90, bridge_len))
arc(Point(0, bridge_len), 90, 0, ang_end, :stoke)
return strokepath()
end
# Actually draw it
function save_logo(filename)
Random.seed!(16)
Drawing(450, 450, filename)
origin()
translate(50, -130)
chain(0.5)
finish()
return preview()
end
save_logo("logo.svg")
save_logo("logo.png")