2 import sys
;sys
.path
.insert(0, "..")
5 # File for invalid parametrisations of Bezier curves
6 # Draws a sketch of the areas where invalid params are to be expected
11 g
= graph
.graphxy(width
=10,
12 x
=graph
.axis
.lin(title
=r
"$\Delta x$", min=xmin
, max=xmax
),
13 y
=graph
.axis
.lin(title
=r
"$\Delta y$", min=ymin
, max=ymax
),
14 key
=graph
.key
.key(pos
="tr"),
16 g
.plot(graph
.data
.function("y(x)=-1", title
=None), [graph
.style
.line([style
.linestyle
.dotted
])])
17 d1
= g
.plot(graph
.data
.function("x(y)=(-1-2*y-sqrt((1+2*y)**2+3))/3.0", title
=r
"cusp ($-$)"), [graph
.style
.line()])
18 d2
= g
.plot(graph
.data
.function("x(y)=(-1-2*y+sqrt((1+2*y)**2+3))/3.0", title
=r
"cusp ($+$)", max=-1), [graph
.style
.line([color
.rgb
.red
])])
19 d3
= g
.plot(graph
.data
.function("x(y)=1.0/(3.0*(y+1))", title
=r
"passes through $(0,0)$", max=-1), [graph
.style
.line([color
.rgb
.green
])])
20 d4
= g
.plot(graph
.data
.function("x(y)=(1+y**3)/(3.0*(1+y))", title
=r
"passes through $(1,0)$", max=-1), [graph
.style
.line([color
.rgb
.blue
])])
23 p
= d1
.path
<< d3
.path
.reversed()
24 p
.append(path
.closepath())
25 g
.layers
["filldata"].fill(p
, [color
.gray(0.8)])
27 p
= d2
.path
<< d4
.path
.reversed()
28 p
.append(path
.closepath())
29 g
.layers
["filldata"].fill(p
, [color
.gray(0.8)])