7 t
= c
.insert(tex
.tex())
8 c
.stroke(path
.line(0, 0, 4, 2), canvas
.earrow
.Large
)
9 graph
.textbox(t
, r
"$\vec p$").linealign(0.1, -2/math
.sqrt(20), 4/math
.sqrt(20)).printtext(2, 1)
10 c
.stroke(path
.line(0, 0, 1, 1), canvas
.earrow
.Large
)
11 graph
.textbox(t
, r
"$\vec a$").linealign(0.1, -1/math
.sqrt(2), 1/math
.sqrt(2)).printtext(0.5, 0.5)
12 c
.stroke(path
.line(-1, 3, 3, -1), canvas
.linestyle
.dotted
)
13 c
.stroke(path
.line(1, 1, 1-1/math
.sqrt(2), 1+1/math
.sqrt(2)), canvas
.earrow
.Large
)
14 graph
.textbox(t
, r
"$\vec b$").linealign(0.1, 1/math
.sqrt(2), 1/math
.sqrt(2)).printtext(1-1/math
.sqrt(8), 1+1/math
.sqrt(8))
15 c
.writetofile("boxalignpal")
17 ###############################################################################
20 t
= c
.insert(tex
.tex())
21 c
.stroke(path
.line(0, 0, 4, 2), canvas
.earrow
.Large
)
22 graph
.textbox(t
, r
"$\vec p$").linealign(0.1, -2/math
.sqrt(20), 4/math
.sqrt(20)).printtext(2, 1)
23 c
.stroke(path
.line(0, 0, -1, 1), canvas
.earrow
.Large
)
24 graph
.textbox(t
, r
"$\vec a$").linealign(0.1, -1/math
.sqrt(2), -1/math
.sqrt(2)).printtext(-0.5, 0.5)
25 c
.stroke(path
.path(path
.arc(0, 0, math
.sqrt(2), 0, 360), path
.closepath()), canvas
.linestyle
.dotted
)
26 c
.writetofile("boxalignpac")
28 ###############################################################################
31 t
= c
.insert(tex
.tex())
32 c
.stroke(path
.line(0, 0, 4, 2), canvas
.earrow
.Large
)
33 graph
.textbox(t
, r
"$\vec e$").linealign(0.1, -2/math
.sqrt(20), 4/math
.sqrt(20)).printtext(2, 1)
34 c
.stroke(path
.line(0, 0, 6, 2), canvas
.earrow
.Large
)
35 graph
.textbox(t
, r
"$\vec f$").linealign(0.1, 2/math
.sqrt(60), -6/math
.sqrt(60)).printtext(3, 1)
36 c
.stroke(path
.line(6, 2, 4, 2), canvas
.earrow
.Large
)
37 graph
.textbox(t
, r
"$\vec g$").linealign(0.1, 0, 1).printtext(5, 2)
38 c
.stroke(path
.line(0, 0, -1, 1), canvas
.earrow
.Large
)
39 graph
.textbox(t
, r
"$\vec a$").linealign(0.1, -1/math
.sqrt(2), -1/math
.sqrt(2)).printtext(-0.5, 0.5)
40 c
.stroke(path
.path(path
.arc(0, 0, math
.sqrt(2), 0, 360), path
.closepath()), canvas
.linestyle
.dotted
)
41 c
.stroke(path
.line(0, 0, 0, math
.sqrt(2)), canvas
.earrow
.Large
)
42 graph
.textbox(t
, r
"$\vec b$").linealign(0.1, -1, 0).printtext(0, 1/math
.sqrt(2))
43 c
.writetofile("boxalignlac")
45 ###############################################################################
47 def drawexample(canvas
, corner
, linealign
):
49 b
= graph
.alignbox((0, 0), (0, 0), (1, 0), (0.5, math
.sqrt(3)/2))
51 b
= graph
.alignbox((0.5, math
.sqrt(3)/6), (0, 0), (1, 0), (0.5, math
.sqrt(3)/2))
53 canvas
.stroke(path
.path(path
.arc(0, 0, r
, 0, 360)))
55 while phi
< 2 * math
.pi
+ 1e-10:
57 b
.linealign(r
, math
.cos(phi
), math
.sin(phi
))
59 b
.circlealign(r
, math
.cos(phi
), math
.sin(phi
))
60 if round(phi
/ math
.pi
* 2 * 100) % 100:
61 canvas
.stroke(b
.path())
63 canvas
.stroke(b
.path(), color
.rgb
.red
)
68 sc
= c
.insert(canvas
.canvas(trafo
.translation(0, d
)))
70 sc
= c
.insert(canvas
.canvas(trafo
.translation(d
, d
)))
72 sc
= c
.insert(canvas
.canvas(trafo
.translation(0, 0)))
74 sc
= c
.insert(canvas
.canvas(trafo
.translation(d
, 0)))
76 t
= c
.insert(tex
.tex())
77 t
.text(0, 1.5*d
, "align at a circle", tex
.halign
.center
)
78 t
.text(d
, 1.5*d
, "align at tangents", tex
.halign
.center
)
79 t
.text(-0.5*d
, d
, "reference point at the triangle center", tex
.halign
.center
, tex
.direction
.vertical
)
80 t
.text(-0.5*d
, 0, "reference point at a triangle corner", tex
.halign
.center
, tex
.direction
.vertical
)
81 c
.writetofile("boxalignexample")