# Arcs of circles and ellipses#

class sage.plot.arc.Arc(x, y, r1, r2, angle, s1, s2, options)#

Primitive class for the Arc graphics type. See arc? for information about actually plotting an arc of a circle or an ellipse.

INPUT:

• x,y - coordinates of the center of the arc

• r1, r2 - lengths of the two radii

• angle - angle of the horizontal with width

• sector - sector of angle

• options - dict of valid plot options to pass to constructor

EXAMPLES:

Note that the construction should be done using arc:

sage: from math import pi
sage: from sage.plot.arc import Arc
sage: print(Arc(0,0,1,1,pi/4,pi/4,pi/2,{}))
Arc with center (0.0,0.0) radii (1.0,1.0) angle 0.78539816339... inside the sector (0.78539816339...,1.5707963267...)

bezier_path()#

Return self as a Bezier path.

This is needed to concatenate arcs, in order to create hyperbolic polygons.

EXAMPLES:

sage: from sage.plot.arc import Arc
sage: op = {'alpha':1,'thickness':1,'rgbcolor':'blue','zorder':0,
....:     'linestyle':'--'}
sage: Arc(2,3,2.2,2.2,0,2,3,op).bezier_path()
Graphics object consisting of 1 graphics primitive

sage: from math import pi
sage: a = arc((0,0),2,1,0,(pi/5,pi/2+pi/12), linestyle="--", color="red")
sage: b = a.bezier_path()
sage: b
Bezier path from (1.133..., 0.8237...) to (-0.2655..., 0.9911...)

get_minmax_data()#

Return a dictionary with the bounding box data.

The bounding box is computed as minimal as possible.

EXAMPLES:

An example without angle:

sage: p = arc((-2, 3), 1, 2)
sage: d = p.get_minmax_data()
sage: d['xmin']
-3.0
sage: d['xmax']
-1.0
sage: d['ymin']
1.0
sage: d['ymax']
5.0


The same example with a rotation of angle $$\pi/2$$:

sage: from math import pi
sage: p = arc((-2, 3), 1, 2, pi/2)
sage: d = p.get_minmax_data()
sage: d['xmin']
-4.0
sage: d['xmax']
0.0
sage: d['ymin']
2.0
sage: d['ymax']
4.0

plot3d()#
sage.plot.arc.arc(center, r1, r2=None, angle=0.0, sector=(0.0, 6.283185307179586), alpha=1, thickness=1, linestyle='solid', zorder=5, rgbcolor='blue', aspect_ratio=1.0, **options)#

An arc (that is a portion of a circle or an ellipse)

Type arc.options to see all options.

INPUT:

• center - 2-tuple of real numbers - position of the center.

• r1, r2 - positive real numbers - radii of the ellipse. If only r1 is set, then the two radii are supposed to be equal and this function returns an arc of circle.

• angle - real number - angle between the horizontal and the axis that corresponds to r1.

• sector - 2-tuple (default: (0,2*pi))- angles sector in which the arc will be drawn.

OPTIONS:

• alpha - float (default: 1) - transparency

• thickness - float (default: 1) - thickness of the arc

• color, rgbcolor - string or 2-tuple (default: ‘blue’) - the color of the arc

• linestyle - string (default: 'solid') - The style of the line, which is one of 'dashed', 'dotted', 'solid', 'dashdot', or '--', ':', '-', '-.', respectively.

EXAMPLES:

Plot an arc of circle centered at (0,0) with radius 1 in the sector $$(\pi/4,3*\pi/4)$$:

sage: from math import pi
sage: arc((0,0), 1, sector=(pi/4,3*pi/4))
Graphics object consisting of 1 graphics primitive


Plot an arc of an ellipse between the angles 0 and $$\pi/2$$:

sage: arc((2,3), 2, 1, sector=(0,pi/2))
Graphics object consisting of 1 graphics primitive


Plot an arc of a rotated ellipse between the angles 0 and $$\pi/2$$:

sage: arc((2,3), 2, 1, angle=pi/5, sector=(0,pi/2))
Graphics object consisting of 1 graphics primitive


Plot an arc of an ellipse in red with a dashed linestyle:

sage: arc((0,0), 2, 1, 0, (0,pi/2), linestyle="dashed", color="red")
Graphics object consisting of 1 graphics primitive
sage: arc((0,0), 2, 1, 0, (0,pi/2), linestyle="--", color="red")
Graphics object consisting of 1 graphics primitive


The default aspect ratio for arcs is 1.0:

sage: arc((0,0), 1, sector=(pi/4,3*pi/4)).aspect_ratio()
1.0


It is not possible to draw arcs in 3D:

sage: A = arc((0,0,0), 1)
Traceback (most recent call last):
...
NotImplementedError