-
Notifications
You must be signed in to change notification settings - Fork 9
/
grid.jl
51 lines (48 loc) · 1.86 KB
/
grid.jl
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
function rootsofunity(n::Integer)
[cos(i*2pi/n)+im*sin(i*2pi/n) for i=0:n-1]
end
function grid(xpts, ypts, xrange, yrange, xres=0.25, yres=0.25)
thickness = 1
color = "grey"
offsetx = -10
offsety = 10
origo = true
scalex(p) = (p-xrange[1])/(xrange[2]-xrange[1])*xpts
scaley(p) = ypts - (p-yrange[1])/(yrange[2]-yrange[1])*ypts
svx = ceil(xrange[1]/xres)*xres
evx = floor(xrange[2]/xres)*xres
svy = ceil(yrange[1]/yres)*yres
evy = floor(yrange[2]/yres)*yres
style = Dict(:stroke=>color, :strokeWidth=>"$thickness")
styleorigo = Dict(:stroke=>color, :strokeWidth=>"$(2*thickness)")
linesx = [dom"svg:line[x1=$(scalex(i)),
y1=0,
x2=$(scalex(i)),
y2=$ypts]"(style=style)
for i in svx:xres:evx]
textx_ypos = ypts/2+offsetx
textx = [dom"svg:text[x=$(scalex(i)),
y=$textx_ypos]"("$i")
for i in svx:xres:evx]
linesy = [dom"svg:line[y1=$(scaley(i)),
x1=0,
y2=$(scaley(i)),
x2=$xpts]"(style=style)
for i in svy:yres:evy]
texty_xpos = xpts/2+offsety
texty = [dom"svg:text[y=$(scaley(i)),
x=$texty_xpos]"("$i")
for i in svy:yres:evy]
origos = []
if origo
origos = [dom"svg:line[x1=$(scalex(0)),
y1=0,
x2=$(scalex(0)),
y2=$ypts]"(style=styleorigo),
dom"svg:line[y1=$(scaley(0)),
x1=0,
y2=$(scaley(0)),
x2=$xpts]"(style=styleorigo)]
end
[linesx;textx;linesy;texty;origos]
end