Index of geometry

## Contents

List of Anonymous functions
List of structures
List of constants
List of variables
List of functions
List of operators

## List of Anonymous functions

##### typedef real abs(pair)
typedef real abs(pair);
Function type to calculate modulus of pair.
##### typedef real centerfunction(real, real, real)
typedef real centerfunction(real, real, real);
##### typedef pair convert(pair)
typedef pair convert(pair);
Function type to convert pair in an other coordinate system.
##### typedef real dot(pair, pair)
typedef real dot(pair, pair);
Function type to calculate dot product.
##### typedef pair polar(real, real)
typedef pair polar(real, real);
Function type to calculate the coordinates from the polar coordinates.
##### typedef path polarconicroutine(conic, real, real, int, bool)
typedef path polarconicroutine(conic co, real angle1, real angle2, int n, bool direction);
Routine type used to draw conics from 'angle1' to 'angle2'

## List of structures

##### abscissa
struct abscissa

Provide abscissa structure on a curve used in the routine-like 'point(object, abscissa)' where object can be 'line','segment','ellipse','circle','conic'...
[Browse code]
  real x;
The abscissa value.

  int system;
0 = relativesystem; 1 = curvilinearsystem; 2 = angularsystem; 3 = nodesystem

  polarconicroutine polarconicroutine = fromCenter;
The routine used with angular system and two foci conic section. Possible values are 'formCenter' and 'formFocus'.

  abscissa copy()

Return a copy of this abscissa.

##### arc
struct arc {

Implement oriented ellipse (included circle) arcs. All the calculus with this structure will be as exact as Asymptote can do. For a full precision, you must not cast 'arc' to 'path' excepted for drawing routines.
[Browse code]
  ellipse el;
The support of the arc.

  restricted real angle0 = 0;
Internal use: rotating a circle does not modify the origin point,this variable stocks the eventual angle rotation. This value is not used for ellipses which are not circles.

  restricted  real angle1, angle2;
Values (in degrees) in ]-360, 360[.

  bool direction = CCW;
The arc will be drawn from 'angle1' to 'angle2' rotating in the direction 'direction'.

  polarconicroutine polarconicroutine = currentpolarconicroutine;
The routine to which the angles refer. If 'el' is a circle 'fromCenter' is always used.

  void setangles(real a0, real a1, real a2)

Set the angles.

  void init(ellipse el, real angle0 = 0, real angle1, real angle2,
polarconicroutine polarconicroutine,
bool direction = CCW)

Constructor.

  arc copy()

Copy the arc.

##### bqe
struct bqe

[Browse code]
  real[] a;
a[0] * x^2 + a[1] * x * y + a[2] * y^2 + a[3] * x + a[4] * y + a[5] = 0

  coordsys coordsys;

##### circle
struct circle

All the calculus with this structure will be as exact as Asymptote can do. For a full precision, you must not cast 'circle' to 'path' excepted for drawing routines.
[Browse code]
  point C;
Center

  real r;

  line l;
If the radius is infinite, this line is used instead of circle.

##### conic
struct conic

[Browse code]
  real e, p, h;
BE CAREFUL: h = distance(F, D) and p = h * e (http://en.wikipedia.org/wiki/Ellipse) While http://mathworld.wolfram.com/ takes p = distance(F,D).

  point F;
Focus.

  line D;
Directrix.

  line[] l;
Case of degenerated conic (not yet implemented !).

##### coordsys
struct coordsys

This structure represents a coordinate system in the plane.
[Browse code]
  restricted pair O = (0, 0), i = (1, 0), j = (0, 1);
Origin and units vector.

  restricted convert relativetodefault = new pair(pair m){return m;};
Convert a pair given relatively to this coordinate system to the pair relatively to the default coordinate system.

  restricted convert defaulttorelative = new pair(pair m){return m;};
Convert a pair given relatively to the default coordinate system to the pair relatively to this coordinate system.

  restricted dot dot = new real(pair m, pair n){return dot(m, n);};
Return the dot product of this coordinate system.

  restricted abs abs = new real(pair m){return abs(m);};
Return the modulus of a pair in this coordinate system.

  restricted polar polar = new pair(real r, real a){return (r * cos(a), r * sin(a));};
Polar coordinates routine of this coordinate system.

  void init(convert rtd, convert dtr,
polar polar, dot dot)

The default constructor of the coordinate system.

##### ellipse
struct ellipse

[Browse code]
  restricted point F1,F2,C;
Foci and center.

  restricted real a,b,c,e,p;

  restricted real angle;
Value is degrees(F1 - F2).

  restricted line D1,D2;
Directrices.

  line l;
If one axis is infinite, this line is used instead of ellipse.

  void init(point f1, point f2, real a)

Ellipse given by foci and semimajor axis

##### hyperbola
struct hyperbola

[Browse code]
  restricted point F1,F2;
Foci.

  restricted point C,V1,V2;
Center and vertices.

  restricted real a,b,c,e,p;

  restricted real angle;
Angle,in degrees,of the line (F1F2).

  restricted line D1,D2,A1,A2;
Directrices and asymptotes.

  pair bmin, bmax;
The (left, bottom) and (right, top) coordinates of region bounding box for drawing the hyperbola. If unset the current picture bounding box is used instead.

  void init(point f1, point f2, real a)

Hyperbola given by foci and semimajor axis.

##### inversion
struct inversion

http://mathworld.wolfram.com/Inversion.html
[Browse code]
##### line
struct line

This structure provides the objects line, semi - line and segment oriented from A to B. All the calculus with this structure will be as exact as Asymptote can do. For a full precision, you must not cast 'line' to 'path' excepted for drawing routines.
[Browse code]
  restricted point A,B;
Two line's points with same coordinate system.

  bool extendA,extendB;
If true,extend 'l' in direction of A (resp. B).

  restricted vector u,v;
u = unit(AB) = direction vector,v = normal vector.

  restricted real a,b,c;
Coefficients of the equation ax + by + c = 0 in the coordinate system of 'A'.

  restricted real slope, origin;
Slope and ordinate at the origin.

  line copy()

Copy a line in a new instance.

  void init(point A, bool extendA = true, point B, bool extendB = true)

Initialize line. If 'extendA' is true, the "line" is infinite in the direction of A.

##### mass
struct mass
[Browse code]
  point M;

  real m;

##### parabola
struct parabola

[Browse code]
  restricted point F,V;
Focus and vertex

  restricted real a,p,e = 1;

  restricted real angle;
Angle, in degrees, of the line (FV).

  restricted line D;
Directrix

  pair bmin, bmax;
The (left, bottom) and (right, top) coordinates of region bounding box for drawing the parabola. If unset the current picture bounding box is used instead.

  void init(point F, line directrix)

Parabola given by focus and directrix.

##### point
struct point

This structure replaces the pair to embed its coordinate system. For example, if 'P = point(cartesiansystem((1, 2), i, j), (0, 0))', P is equal to the pair (1, 2).
[Browse code]
  coordsys coordsys;
The coordinate system of this point.

  restricted pair coordinates;
The coordinates of this point relatively to the coordinate system 'coordsys'.

  restricted real x, y;
The xpart and the ypart of 'coordinates'.

  real m = 1;
Used to cast mass<->point.


real m = 1;Used to cast mass<->point.
void init(coordsys R, pair coordinates, real mass)

  real m = 1;
Used to cast mass<->point.
The constructor.

##### segment
struct segment

.
[Browse code]
##### side
  struct side

Structure used to communicate the side of a triangle.
[Browse code]
    int n;
1 or 0 means [AB],-1 means [BA],2 means [BC],-2 means [CB] etc.

    triangle t;
The triangle to which the side refers.

##### triangle
struct triangle
[Browse code]
    int n;
1 means VA,2 means VB,3 means VC,4 means VA etc...

    triangle t;
The triangle to which the vertex refers.

  restricted point A, B, C;
The vertices of the triangle (as point).

  restricted vertex VA, VB, VC;
The vertices of the triangle (as vertex). Note that the vertex structure contains the triangle to wish it refers.

    int n;
1 or 0 means [AB],-1 means [BA],2 means [BC],-2 means [CB] etc.

    triangle t;
The triangle to which the side refers.

  side AB;
For the routines using the structure 'side', triangle.AB means 'side AB'. BA, AC, CA etc are also defined.

  vertex vertex(int n)

Return numbered vertex. 'n' is 1 means VA, 2 means VB, 3 means VC, 4 means VA etc...

  point point(int n)

Return numbered point. n is 1 means A, 2 means B, 3 means C, 4 means A etc...

  void init(point A, point B, point C)

Constructor.

  void operator init(point A, point B, point C)

For backward compatibility. Provide the routine 'triangle(point A, point B, point C)'.

  void operator init(real b, real alpha, real c, real angle = 0, point A = (0, 0))

For backward compatibility. Provide the routine 'triangle(real b, real alpha, real c, real angle = 0, point A = (0, 0)) which returns the triangle ABC rotated by 'angle' (in degrees) and where b = AC, degrees(A) = alpha, AB = c.

  real a()

Return the length BC. b() and c() are also defined and return the length AC and AB respectively.

  real area()


  real alpha()

Return the measure (in degrees) of the angle A. beta() and gamma() are also defined and return the measure of the angles B and C respectively.

  path Path()

The path of the triangle.

  side side(int n)

Return numbered side. n is 1 means AB, -1 means BA, 2 means BC, -2 means CB, etc.

  line line(int n)

Return the numbered line.

##### trilinear
struct trilinear

Trilinear coordinates 'a:b:c' relative to triangle 't'. http://mathworld.wolfram.com/TrilinearCoordinates.html
[Browse code]
  real a,b,c;
The trilinear coordinates.

  triangle t;
The reference triangle.

##### vector
struct vector

Like a point but casting to pair, adding etc does not take account of the origin of the coordinate system.
[Browse code]
  point v;
Coordinates as a point (embed coordinate system and pair).

##### vertex
  struct vertex
Structure used to communicate the vertex of a triangle.
[Browse code]
    int n;
1 means VA,2 means VB,3 means VC,4 means VA etc...

    triangle t;
The triangle to which the vertex refers.

## List of constants

##### byfoci,byvertices
restricted bool byfoci = true, byvertices = false;
Constants useful for the routine 'hyperbola(point P1, point P2, real ae, bool byfoci = byfoci)'
[Browse code]
##### defaultcoordsys
restricted coordsys defaultcoordsys = cartesiansystem(0, (1, 0), (0, 1));
One can always refer to the default coordinate system using this constant.
[Browse code]
##### relativesystem,curvilinearsystem,angularsystem,nodesystem
restricted int relativesystem = 0, curvilinearsystem = 1, angularsystem = 2, nodesystem = 3;
Constant used to set the abscissa system.
[Browse code]
##### Ox
restricted line Ox = Ox();
the x-axis of the default coordinate system.
[Browse code]
##### Oy
restricted line Oy = Oy();
the y-axis of the default coordinate system.
[Browse code]
##### hline
line hline = hline();
The horizontal line in the current coordinate system passing through the origin of this system.
[Browse code]
##### vline
restricted line vline = vline();
The vertical line in the current coordinate system passing through the origin of this system.
[Browse code]
##### fromCenter
restricted polarconicroutine fromCenter = arcfromcenter;
[Browse code]
##### fromFocus
restricted polarconicroutine fromFocus = arcfromfocus;
[Browse code]

## List of variables

##### currentcoordsys
coordsys currentcoordsys = defaultcoordsys;
The coordinate system used by default.
[Browse code]
##### circlenodesnumberfactor
int circlenodesnumberfactor = 100;
Factor for the node number of circles.
[Browse code]
##### conicnodesfactor
int conicnodesfactor = 1;
Factor for the node number of all conics.
[Browse code]
##### ellispenodesnumberfactor
int ellipsenodesnumberfactor = 250;
Factor for the node number of ellispe (non-circle).
[Browse code]
##### hyperbolanodesnumberfactor
int hyperbolanodesnumberfactor = 100;
Factor for the number of nodes of hyperbolas.
[Browse code]
##### parabolanodesnumberfactor
int parabolanodesnumberfactor = 100;
Factor for the number of nodes of parabolas.
[Browse code]
pen addpenarc = squarecap;
Add this property to the drawing pen of arcs.
[Browse code]
pen addpenline = squarecap;
Add this property to the drawing pen of "finish" lines.
[Browse code]
##### origin
point origin = point(defaultcoordsys, (0, 0));
The origin of the current coordinate system.
[Browse code]
##### currentpolarconicroutine
polarconicroutine currentpolarconicroutine = arcfromfocus;
Default routine used to cast conic section to path.
[Browse code]
##### epsgeo
real epsgeo = 10 * sqrt(realEpsilon);
Variable used in the approximate calculations.
[Browse code]
##### linemargin
real linemargin = 0;
Margin used to draw lines.
[Browse code]
##### perpfactor
real perpfactor = 1;
Factor for drawing perpendicular symbol.
[Browse code]
##### defaultmassformat
string defaultmassformat = "$\left(%L;%.4g\right)$";
Format used to construct the default label of masses.
[Browse code]

## List of functions

##### angabscissa(arc,point)
abscissa angabscissa(arc a, point M)

Return the angular abscissa of 'M' according to the arc 'a'.
[Browse code] Example 0094 Example 0095
##### angabscissa(circle,point)
abscissa angabscissa(circle c, point M)

Return the angular abscissa of 'M' on the circle 'c'.
[Browse code] Example 0073
##### angabscissa(conic,point)
abscissa angabscissa(explicit conic co, point M)

Return the angular abscissa of 'M' on the conic 'co'.
[Browse code]
##### angabscissa(ellipse,point,polarconicroutine)
abscissa angabscissa(ellipse el, point M,
polarconicroutine polarconicroutine = currentpolarconicroutine)

Return the angular abscissa of 'M' on the ellipse 'el' according to 'polarconicroutine'.
[Browse code] Example 0074
##### angabscissa(hyperbola,point,polarconicroutine)
abscissa angabscissa(hyperbola h, point M,
polarconicroutine polarconicroutine = currentpolarconicroutine)

Return the angular abscissa of 'M' on the hyperbola 'h' according to 'polarconicroutine'.
[Browse code]
##### angabscissa(parabola,point)
abscissa angabscissa(parabola p, point M)

Return the angular abscissa of 'M' on the parabola 'p'.
[Browse code] Example 0075
##### angabscissa(real,polarconicroutine)
abscissa angabscissa(real x, polarconicroutine polarconicroutine = currentpolarconicroutine)

Return a angular abscissa.
[Browse code] Example 0063 Example 0064 Example 0065
##### curabscissa(arc,point)
abscissa curabscissa(arc a, point M)

Return the curvilinear abscissa according to the arc 'a'.
[Browse code] Example 0094 Example 0095
##### curabscissa(circle,point)
abscissa curabscissa(circle c, point M)

Return the curvilinear abscissa of 'M' on the circle 'c'.
[Browse code] Example 0073
##### curabscissa(conic,point)
abscissa curabscissa(conic co, point M)

Return the curvilinear abscissa of 'M' on the conic 'co'.
[Browse code]
##### curabscissa(ellipse,point)
abscissa curabscissa(ellipse el, point M)

Return the curvilinear abscissa of 'M' on the ellipse 'el'.
[Browse code] Example 0074
##### curabscissa(line,point)
abscissa curabscissa(line l, point M)

Return the curvilinear abscissa of 'M' on the line 'l'.
[Browse code] Example 0056
##### curabscissa(parabola,point)
abscissa curabscissa(parabola p, point M)

Return the curvilinear abscissa of 'M' on the parabola 'p'.
[Browse code] Example 0075
##### curabscissa(real)
abscissa curabscissa(real x)

Return a curvilinear abscissa.
[Browse code] Example 0060 Example 0061
##### nodabscissa(arc,point)
abscissa nodabscissa(arc a, point M)

Return the node abscissa according to the arc 'a'.
[Browse code] Example 0094 Example 0095
##### nodabscissa(circle,point)
abscissa nodabscissa(circle c, point M)

Return the node abscissa of 'M' on the circle 'c'.
[Browse code] Example 0073
##### nodabscissa(conic,point)
abscissa nodabscissa(conic co, point M)

Return the node abscissa of 'M' on the conic 'co'.
[Browse code]
##### nodabscissa(ellipse,point)
abscissa nodabscissa(ellipse el, point M)

Return the node abscissa of 'M' on the ellipse 'el'.
[Browse code] Example 0074
##### nodabscissa(line,point)
abscissa nodabscissa(line l, point M)

Return the node abscissa of 'M' on the line 'l'.
[Browse code]
##### nodabscissa(parabola,point)
abscissa nodabscissa(parabola p, point M)

Return the node abscissa OF 'M' on the parabola 'p'.
[Browse code] Example 0075
##### nodabscissa(real)
abscissa nodabscissa(real x)

Return an abscissa as time on the path.
[Browse code] Example 0069 Example 0070 Example 0071 Example 0072
##### point(conic,point)
point point(explicit conic co, abscissa l)

Return the curvilinear abscissa of 'M' on the conic 'co'.
[Browse code]
##### relabscissa(arc,point)
abscissa relabscissa(arc a, point M)

Return the relative abscissa according to the arc 'a'.
[Browse code] Example 0094 Example 0095
##### relabscissa(circle,point)
abscissa relabscissa(circle c, point M)

Return the relative abscissa of 'M' on the circle 'c'.
[Browse code] Example 0073
##### relabscissa(conic,point)
abscissa relabscissa(conic co, point M)

Return the relative abscissa of 'M' on the conic 'co'.
[Browse code]
##### relabscissa(ellipse,point)
abscissa relabscissa(ellipse el, point M)

Return the relative abscissa of 'M' on the ellipse 'el'.
[Browse code] Example 0074
##### relabscissa(line,point)
abscissa relabscissa(line l, point M)

Return the relative abscissa of 'M' on the line 'l'.
[Browse code] Example 0056
##### relabscissa(real)
abscissa relabscissa(real x)

Return a relative abscissa.
[Browse code]
##### arc(ellipse,abscissa,abscissa,bool)
arc arc(ellipse el, explicit abscissa x1, explicit abscissa x2, bool direction = CCW)

Return the arc from 'point(c, x1)' to 'point(c, x2)' in the direction 'direction'.
[Browse code] Example 0077 Example 0078
##### arc(ellipse,point,point,bool)
arc arc(ellipse el, point M, point N, bool direction = CCW)

Return the arc from 'M' to 'N' in the direction 'direction'. The points 'M' and 'N' must belong to the ellipse 'el'.
[Browse code] Example 0077 Example 0078
##### arc(ellipse,real,real,polarconicroutine,bool)
arc arc(ellipse el, real angle1, real angle2,
polarconicroutine polarconicroutine = polarconicroutine(el),
bool direction = CCW)

Return the ellipse arc from 'angle1' to 'angle2' with respect to 'polarconicroutine' and rotating in the direction 'direction'.
[Browse code] Example 0080
##### arc(explicit arc,abscissa,abscissa)
arc arc(explicit arc a, abscissa x1, abscissa x2)

Return the arc from 'point(a, x1)' to 'point(a, x2)' traversed in the direction of the arc direction.
[Browse code] Example 0096 Example 0097 Example 0098 Example 0099
##### arc(explicit arc,point,point)
arc arc(explicit arc a, point M, point N)

Return the arc from 'M' to 'N'. The points 'M' and 'N' must belong to the arc 'a'.
[Browse code] Example 0096 Example 0097
##### arccircle(point,point,point)
arc arccircle(point A, point M, point B)

Return the CCW arc circle 'AB' passing through 'M'.
[Browse code] Example 0100
##### arccircle(point,point,real,bool)
arc arccircle(point A, point B, real angle, bool direction = CCW)

Return the arc circle centered on A from B to rotate(angle, A) * B in the direction 'direction'.
[Browse code]
##### arcsubtended(point,point,real)
arc arcsubtended(point A, point B, real angle)

Return the arc circle from which the segment AB is saw with the angle 'angle'. If the point 'M' is on this arc, the oriented angle (MA, MB) is equal to 'angle'.
[Browse code] Example 0106
##### complementary(arc)
arc complementary(arc a)

Return the complementary of 'a'.
[Browse code] Example 0080 Example 0081
##### inverse(real,point,segment)
arc inverse(real k, point A, segment s)

Return the inverse arc circle of 's' with respect to point A and inversion radius 'k'.
[Browse code]
##### reverse(arc)
arc reverse(arc a)

Return arc 'a' oriented in reverse direction.
[Browse code] Example 0080 Example 0081 Example 0091
##### between(point,point,point)
bool between(point M, point O, point N)

Return 'true' iff 'O' is between 'M' and 'N'.
[Browse code]
##### bool samecoordsys(bool...point[])
bool samecoordsys(bool warn = true ... point[] M)

Return true iff all the points have the same coordinate system. If 'warn' is true and the coordinate systems are different, a warning is sent.
[Browse code]
##### collinear(vector,vector)
bool collinear(vector u, vector v)

Return 'true' iff the vectors 'u' and 'v' are collinear.
[Browse code]
##### concurrent(...line[])
bool concurrent(... line[] l)

Returns true if all the lines 'l' are concurrent.
[Browse code] Example 0022
##### defined(pair)
bool defined(point P)

Return true iff the coordinates of 'P' are finite.
[Browse code] Example 0023
##### finite(explicit point)
bool finite(explicit point p)

Avoid to compute 'finite((pair)(infinite_point))'.
[Browse code]
##### inside(ellipse,point)
bool inside(ellipse el, point M)

Return 'true' iff 'M' is inside 'el'.
[Browse code]
##### inside(parabola,point)
bool inside(parabola p, point M)

Return 'true' if 'M' is inside 'p'.
[Browse code]
##### isparabola(bqe)
bool isparabola(bqe bqe)

Return true iff 'bqe' is the equation of a parabola.
[Browse code]
##### onpath(picture,path,point,pen)
bool onpath(picture pic = currentpicture, path g, point M, pen p = currentpen)

Return true iff 'M' is on the path drawn with the pen 'p' in 'pic'.
[Browse code] Example 0026
##### parallel(line,line)
bool parallel(line l1, line l2, bool strictly = false)

Return 'true' if 'l1' and 'l2' are (strictly ?) parallel.
[Browse code]
##### perpendicular(line,line)
bool perpendicular(line l1, line l2)

Return 'true' if 'l1' and 'l2' are perpendicular.
[Browse code]
##### samecoordsys(bool...bqe[])
bool samecoordsys(bool warn = true ... bqe[] bqes)

Return true if all the bivariate quadratic equations have the same coordinate system.
[Browse code]
##### sameside(point,point,line)
bool sameside(point M, point P, line l)

Return 'true' iff 'M' and 'N' are same side of the line (or on the line) 'l'.
[Browse code]
##### sameside(point,point,point)
bool sameside(point M, point N, point O)

Return 'true' iff 'M' and 'N' are same side of the point 'O'.
[Browse code]
##### simeq(point,point,real)
bool simeq(point A, point B, real fuzz = epsgeo)

Return true iff abs(A - B) < fuzz. This routine is used internally to know if two points are equal, in particular by the operator == in 'point == point'.
[Browse code]
##### bqe(coordsys,real,real,real,real,real,real)
bqe bqe(coordsys R = currentcoordsys,
real a, real b, real c, real d, real e, real f)

Return the bivariate quadratic equation a[0] * x^2 + a[1] * x * y + a[2] * y^2 + a[3] * x + a[4] * y + a[5] = 0 relatively to the coordinate system R.
[Browse code]
##### bqe(point,point,point,point,point)
bqe bqe(point M1, point M2, point M3, point M4, point M5)

Return the bqe of conic passing through the five points (if possible).
[Browse code]
##### canonical(bqe)
bqe canonical(bqe bqe)

Return the bivariate quadratic equation relative to the canonical coordinate system of the conic section represented by 'bqe'.
[Browse code]
##### changecoordsys(coordsys,bqe)
bqe changecoordsys(coordsys R, bqe bqe)

Returns the bivariate quadratic equation relatively to 'R'.
[Browse code]
##### equation(ellipse)
bqe equation(ellipse el)

Return the coefficients of the equation of the ellipse in its coordinate system: bqe.a[0] * x^2 + bqe.a[1] * x * y + bqe.a[2] * y^2 + bqe.a[3] * x + bqe.a[4] * y + bqe.a[5] = 0. One can change the coordinate system of 'bqe' using the routine 'changecoordsys'.
[Browse code]
##### equation(explicit conic)
bqe equation(explicit conic co)

Return the coefficients of the equation of conic section in its coordinate system: bqe.a[0] * x^2 + bqe.a[1] * x * y + bqe.a[2] * y^2 + bqe.a[3] * x + bqe.a[4] * y + bqe.a[5] = 0. One can change the coordinate system of 'bqe' using the routine 'changecoordsys'.
[Browse code]
##### equation(hyperbola)
bqe equation(hyperbola h)

Return the coefficients of the equation of the hyperbola in its coordinate system. bqe.a[0] * x^2 + bqe.a[1] * x * y + bqe.a[2] * y^2 + bqe.a[3] * x + bqe.a[4] * y + bqe.a[5] = 0 One can change the coordinate system of 'bqe' using the routine 'changecoordsys'.
[Browse code]
##### equation(parabola)
bqe equation(parabola p)

Return the coefficients of the equation of the parabola in its coordinate system. bqe.a[0] * x^2 + bqe.a[1] * x * y + bqe.a[2] * y^2 + bqe.a[3] * x + bqe.a[4] * y + bqe.a[5] = 0 One can change the coordinate system of 'bqe' using the routine 'changecoordsys'.
[Browse code]
##### circle(explicit point,real)
circle circle(explicit point C, real r)

Circle given by center and radius.
[Browse code]
##### circle(inversion)
circle circle(inversion i)

Return the inversion circle of 'i'.
[Browse code]
##### circle(point,point)
circle circle(point A, point B)

Return the circle of diameter AB.
[Browse code] Example 0050
##### circle(point,point,point)
circle circle(point A, point B, point C)

Return the circumcircle of the triangle ABC.
[Browse code] Example 0028 Example 0053
##### circle(segment)
circle circle(segment s)

Return the circle of diameter 's'.
[Browse code]
##### circle(triangle)
circle circle(triangle t)

Return the circumcircle of the triangle 't'.
[Browse code] Example 0111
##### circumcircle(point,point,point)
circle circumcircle(point A, point B, point C)

Return the circumcircle of the triangle ABC.
[Browse code]
##### circumcircle(triangle)
circle circumcircle(triangle t)

Return the circumcircle of the triangle 't'.
[Browse code]
##### excircle(point,point,point)
circle excircle(point A, point B, point C)

Return the excircle of the triangle ABC tangent with (AB).
[Browse code] Example 0028
##### excircle(side,triangle)
circle excircle(side side)

Return the excircle tangent with the side 'side' of its triangle. side = 0 means AB, 1 means AC, other means BC. One must use the predefined sides t.AB, t.AC where 't' is a triangle....
[Browse code] Example 0111
##### incircle(point,point,point)
circle incircle(point A, point B, point C)

Return the incircle of the triangle ABC.
[Browse code] Example 0028
##### incircle(triangle)
circle incircle(triangle t)

Return the the incircle of the triangle 't'.
[Browse code] Example 0111
##### inverse(real,point,circle)
circle inverse(real k, point A, circle c)

Return the inverse circle of 'c' with respect to point A and inversion radius 'k'.
[Browse code]
##### inverse(real,point,line)
circle inverse(real k, point A, line l)

Return the inverse circle of 'l' with respect to point 'A' and inversion radius 'k'.
[Browse code]
##### point(explicit circle,explicit real)
point point(explicit circle c, explicit real x)

Return the point between node floor(x) and floor(x) + 1.
[Browse code] Example 0069
##### changecoordsys(coordsys,conic)
conic changecoordsys(coordsys R, conic co)

Change the coordinate system of 'co' to 'R'
[Browse code]
##### conic(bqe)
conic conic(bqe bqe)

Return the conic section represented by the bivariate quartic equation 'bqe'.
[Browse code]
##### conic(point,point,point,point,point)
conic conic(point M1, point M2, point M3, point M4, point M5)

Return the conic passing through 'M1', 'M2', 'M3', 'M4' and 'M5' if the conic is not degenerated.
[Browse code]
##### canonicalcartesiansystem(ellipse)
coordsys canonicalcartesiansystem(ellipse el)

Return the canonical cartesian system of the ellipse 'el'.
[Browse code] Example 0054
##### canonicalcartesiansystem(hyperbola)
coordsys canonicalcartesiansystem(hyperbola h)

Return the canonical cartesian system of an hyperbola.
[Browse code]
##### canonicalcartesiansystem(hyperbola)
coordsys canonicalcartesiansystem(explicit conic co)

Return the canonical cartesian system of the conic 'co'.
[Browse code]
##### canonicalcartesiansystem(parabola)
coordsys canonicalcartesiansystem(parabola p)

Return the canonical cartesian system of a parabola, so that Origin = vertex of 'p' and directrix: x = -a.
[Browse code]
##### cartesiansystem(pair,pair,pair)
coordsys cartesiansystem(pair O = (0, 0), pair i, pair j)

Return the Cartesian coordinate system (O, i, j).
[Browse code] Example 0002 Example 0003
##### coordsys(conic)
coordsys coordsys(conic co)

Return the coordinate system of 'co'.
[Browse code]
##### coordsys(ellipse)
coordsys coordsys(ellipse el)

Return the coordinate system of 'el'.
[Browse code]
##### coordsys(line)
coordsys coordsys(line l)

Return the coordinate system in which 'l' is defined.
[Browse code]
##### ellipse(bqe)
ellipse ellipse(bqe bqe)

Return the ellipse a[0] * x^2 + a[1] * xy + a[2] * y^2 + a[3] * x + a[4] * y + a[5] = 0 given in the coordinate system of 'bqe' with a[i] = bque.a[i]. http://mathworld.wolfram.com/QuadraticCurve.html http://mathworld.wolfram.com/Ellipse.html.
[Browse code]
##### ellipse(point,point,point)
ellipse ellipse(point F1, point F2, point M)

Return the ellipse passing through 'M' whose the foci are 'F1' and 'F2'.
[Browse code]
##### ellipse(point,point,point,point,point)
ellipse ellipse(point M1, point M2, point M3, point M4, point M5)

Return the ellipse passing through the five points (if possible)
[Browse code] Example 0054
##### ellipse(point,point,real)
ellipse ellipse(point F1, point F2, real a)

Return the ellipse whose the foci are 'F1' and 'F2' and the semimajor axis is 'a'.
[Browse code]
##### ellipse(point,real,real,real)
ellipse ellipse(point C, real a, real b, real angle = 0)

Return the ellipse centered at 'C' with semimajor axis 'a' along C--C + dir(angle), semiminor axis 'b' along the perpendicular.
[Browse code]
##### conj(hyperbola)
hyperbola conj(hyperbola h)

Conjugate.
[Browse code] Example 0034
##### hyperbola(bqe)
hyperbola hyperbola(bqe bqe)

Return the hyperbola a[0]x^2 + a[1]xy + a[2]y^2 + a[3]x + a[4]y + a[5]] = 0 (a[n] means bqe.a[n]). http://mathworld.wolfram.com/QuadraticCurve.html http://mathworld.wolfram.com/Hyperbola.html
[Browse code] Example 0034
##### hyperbola(point,point,point,point,point)
hyperbola hyperbola(point M1, point M2, point M3, point M4, point M5)

Return the hyperbola passing through the five points (if possible).
[Browse code]
##### hyperbola(point,point,real,bool)
hyperbola hyperbola(point P1, point P2, real ae, bool byfoci = byfoci)

if 'byfoci = true': return the hyperbola whose the foci are 'P1' and 'P2' and the semimajor axis is 'ae'. else return the hyperbola whose vertexes are 'P1' and 'P2' with eccentricity 'ae'.
[Browse code] Example 0034
##### hyperbola(point,real,real,real)
hyperbola hyperbola(point C, real a, real b, real angle = 0)

Return the hyperbola centered at 'C' with semimajor axis 'a' along C--C + dir(angle), semiminor axis 'b' along the perpendicular.
[Browse code] Example 0034
##### arcnodesnumber(explicit arc)
int arcnodesnumber(explicit arc a)

Return the number of nodes to draw the arc 'a'.
[Browse code] Example 0092 Example 0093
##### circlenodesnumber(real)
int circlenodesnumber(real r)

Return the number of nodes for drawing a circle of radius 'r'.
[Browse code] Example 0069 Example 0070
##### circlenodesnumber(real,real,real)
int circlenodesnumber(real r, real angle1, real angle2)

Return the number of nodes to draw a circle arc.
[Browse code]
##### conicnodesnumber(conic,real,real)
int conicnodesnumber(conic co, real angle1, real angle2, bool dir = CCW)

Return the number of node to draw a conic arc.
[Browse code]
##### ellipsenodesnumber(real,real)
int ellipsenodesnumber(real a, real b)

Return the number of nodes to draw a ellipse of axis 'a' and 'b'.
[Browse code]
##### ellipsenodesnumber(real,real,real)
int ellipsenodesnumber(real a, real b, real angle1, real angle2, bool dir)

Return the number of nodes to draw an ellipse arc.
[Browse code]
##### hyperbolanodesnumber(hyperbola,real,real)
int hyperbolanodesnumber(hyperbola h, real angle1, real angle2)

Return the number of nodes for drawing an hyperbola.
[Browse code]
##### parabolanodesnumber(parabola,real,real)
int parabolanodesnumber(parabola p, real angle1, real angle2)

Return the number of nodes for drawing a parabola.
[Browse code] Example 0071
##### sgnd(real)
int sgnd(real x)

Return the -1 if x < 0, 1 if x >= 0.
[Browse code]
##### tricoef(side)
int[] tricoef(side side)

Return an array of integer (values are 0 or 1) which represents 'side'. For example, side = t.BC will be represented by {0, 1, 1}.
[Browse code]
##### inversion(circle)
inversion inversion(circle c)

Return the inversion represented by the circle of 'c'.
[Browse code]
##### inversion(circle,circle)
inversion inversion(circle c1, circle c2, real sgn = 1)

Return the inversion which transforms 'c1' to . 'c2' and positive inversion radius if 'sgn > 0'; . 'c2' and negative inversion radius if 'sgn < 0'; . 'c1' and 'c2' to 'c2' if 'sgn = 0'.
[Browse code]
##### inversion(circle,circle,circle)
inversion inversion(circle c1, circle c2, circle c3)

Return the inversion which transform 'c1' to 'c1', 'c2' to 'c2' and 'c3' to 'c3'.
[Browse code]
##### inversion(real,point)
inversion inversion(real k, point C)

Return the inversion with respect to 'C' having inversion radius 'k'.
[Browse code]
##### inversion(real,point)
inversion inversion(point C, real k)

Return the inversion with respect to 'C' having inversion radius 'k'.
[Browse code]
##### Ox(coordsys)
line Ox(coordsys R = currentcoordsys)

Return the x-axis of 'R'.
[Browse code]
##### Oy(coordsys)
line Oy(coordsys R = currentcoordsys)

Return the y-axis of 'R'.
[Browse code]
##### altitude(vertex)
line altitude(vertex V)

Return the altitude passing through 'V'.
[Browse code]
##### altitude(vertex)
line altitude(side side)

Return the altitude cutting 'side'.
[Browse code]
##### bisector(line,line,real,bool)
line bisector(line l1, line l2, real angle = 0, bool sharp = true)

Return the bisector of the angle formed by 'l1' and 'l2' rotated by the angle 'angle' (in degrees) around intersection point of 'l1' with 'l2'. If 'sharp' is true (the default), this routine returns the bisector of the sharp angle. Note that the returned line inherit of coordinate system of 'l1'.
[Browse code] Example 0022
##### bisector(point,point,point,point,real)
line bisector(point A, point B, point C, point D, real angle = 0, bool sharp = true)

Return the bisector of the angle formed by the lines (AB) and (CD). Look at bisector(line, line, real, bool).
[Browse code]
##### bisector(point,point,real)
line bisector(point A, point B, real angle = 0)

Return the bisector of the segment line [AB] rotated by 'angle' (in degrees) around the midpoint of [AB].
[Browse code]
##### bisector(segment,real)
line bisector(segment s, real angle = 0)

Return the bisector of the segment line 's' rotated by 'angle' (in degrees) around the midpoint of 's'.
[Browse code] Example 0025
##### bisector(side)
line bisector(side side)

Return the bisector of the line segment 'side'.
[Browse code]
##### bisector(vertex,real)
line bisector(vertex V, real angle = 0)

Return the interior bisector passing through 'V' rotated by angle (in degrees) around 'V'.
[Browse code] Example 0112
##### cevian(vertex,point)
line cevian(vertex V, point P)

Return line passing through 'V' and its Cevian image with respect of 'P'.
[Browse code]
##### changecoordsys(coordsys,line)
line changecoordsys(coordsys R, line l)

Return the line 'l' in the coordinate system 'R'.
[Browse code]
##### complementary(explicit line)
line complementary(explicit line l)

Return the complementary of a half-line with respect of the full line 'l'.
[Browse code] Example 0023
##### extend(line)
line extend(line l)

Return the infinite line passing through 'l.A' and 'l.B'.
[Browse code]
##### hline(coordsys)
line hline(coordsys R = currentcoordsys)

Return a horizontal line in 'R' passing through the origin of 'R'.
[Browse code]
##### isogonal(vertex,point)
line isogonal(vertex V, point M)

http://mathworld.wolfram.com/IsogonalConjugate.html
[Browse code]
##### isotomic(vertex,point)
line isotomic(vertex V, point M)

[Browse code]
##### line(coordsys,real,real)
line line(coordsys R = currentcoordsys, real slope, real origin)

Return the line defined by slope and y-intercept relative to 'R'.
[Browse code]
##### line(coordsys,real,real,real)
line line(coordsys R = currentcoordsys, real a, real b, real c)

Retrun the line defined by equation relative to 'R'.
[Browse code]
##### line(explicit side)
line line(explicit side side)

Return 'side' as line.
[Browse code]
##### line(point,bool,point,bool)
line line(point A, bool extendA = true, point B, bool extendB = true)

Return the line passing through 'A' and 'B'. If 'extendA' is true, the "line" is infinite in the direction of A. A "line" can be half-line or segment.
[Browse code] Example 0016
##### line(real,point)
line line(real a, point A = point(currentcoordsys, (0, 0)))

Return the line passing through 'A' with an angle (in the coordinate system of A) 'a' in degrees. line(point, real) is also defined.
[Browse code] Example 0019
##### line(segment)
line line(segment s)

Return the line passing through 's.A' and 's.B'.
[Browse code]
##### median(side)
line median(side side)

Return median from the opposite vertex of 'side'.
[Browse code]
##### median(vertex)
line median(vertex V)

Return median from 'V'.
[Browse code] Example 0112
##### parallel(point,explicit pair)
line parallel(point M, explicit pair dir)

Return the line of direction 'dir' and passing through 'M'.
[Browse code]
##### parallel(point,explicit vector)
line parallel(point M, explicit vector dir)

Return the line of direction 'dir' and passing through 'M'.
[Browse code]
##### parallel(point,line)
line parallel(point M, line l)

Return the line parallel to 'l' passing through 'M'.
[Browse code] Example 0017
##### perpendicular(point,explicit pair)
line perpendicular(point M, explicit pair normal)

Return the line passing through 'M' whose normal is \param{normal} (given in the currentcoordsys).
[Browse code]
##### perpendicular(point,explicit vector)
line perpendicular(point M, explicit vector normal)

Return the line passing through 'M' whose normal is \param{normal}.
[Browse code]
##### perpendicular(point,line)
line perpendicular(point M, line l)

Return the perpendicular line of 'l' passing through 'M'.
[Browse code] Example 0017
line radicalline(circle c1, circle c2)

http://fr.wikipedia.org/wiki/Puissance_d'un_point_par_rapport_%C3%A0_un_cercle
[Browse code] Example 0042
##### reverse(line)
line reverse(line l)

Permute the points 'A' and 'B' of 'l' and so its orientation.
[Browse code]
##### sector(int,int,line,line,real,bool)
line sector(int n = 2, int p = 1, line l1, line l2, real angle = 0, bool sharp = true)

Return the p-th nth-sector of the angle formed by the oriented line 'l1' and 'l2' rotated by the angle 'angle' (in degrees) around the intersection point of 'l1' with 'l2'. If 'sharp' is true (the default), this routine returns the bisector of the sharp angle. Note that the returned line inherit of coordinate system of 'l1'.
[Browse code]
##### symmedian(vertex)
line symmedian(vertex V)

Return the symmedian passing through 'V'.
[Browse code] Example 0112
##### tangent(circle,abscissa)
line tangent(circle c, abscissa x)

Return the tangent of 'c' at 'point(c, x)'.
[Browse code] Example 0044
##### tangent(circle,explicit vector)
line tangent(circle c, explicit vector v)

Return the tangent of 'c' at the point M so that vec(c.C M) is collinear to 'v' with the same sense.
[Browse code]
##### tangent(circle,point)
line tangent(circle c, point M)

Return the tangent of 'c' at the intersection point of the half-line'[c.C M)'.
[Browse code] Example 0044
##### tangent(ellipse,abscissa)
line tangent(ellipse el, abscissa x)

Return the tangent of 'el' at 'point(el, x)'.
[Browse code] Example 0046
##### tangent(explicit arc,abscissa)
line tangent(explicit arc a, abscissa x)

Return the tangent of 'a' at 'point(a, x)'.
[Browse code] Example 0103 Example 0104
##### tangent(explicit arc,point)
line tangent(explicit arc a, point M)

Return the tangent of 'a' at 'M'. The points 'M' must belong to the arc 'a'.
[Browse code] Example 0103 Example 0104
##### tangent(hyperbola,abscissa)
line tangent(hyperbola h, abscissa x)

Return the tangent of 'h' at 'point(p, x)'.
[Browse code] Example 0048
##### tangent(parabola,abscissa)
line tangent(parabola p, abscissa x)

Return the tangent of 'p' at 'point(p, x)' (use the Wells method).
[Browse code] Example 0047
##### vline(coordsys)
line vline(coordsys R = currentcoordsys)

Return a vertical line in 'R' passing through the origin of 'R'.
[Browse code]
##### complementary(explicit segment)
line[] complementary(explicit segment s)

Return the two half-lines of origin 's.A' and 's.B' respectively.
[Browse code] Example 0024
##### tangents(circle,point)
line[] tangents(circle c, point M)

Return the tangents of 'c' passing through 'M'.
[Browse code] Example 0045 Example 0050
##### tangents(ellipse,point)
line[] tangents(ellipse el, point M)

Return the tangents of 'el' passing through 'M'.
[Browse code] Example 0046
##### tangents(hyperbola,point)
line[] tangents(hyperbola h, point M)

Return the tangent of 'h' at 'M'.
[Browse code] Example 0049
##### tangents(parabola,point)
line[] tangents(parabola p, point M)

Return the tangent of 'p' at 'M' (use the Wells method).
[Browse code] Example 0047
##### mass(coordsys,explicit pair,real)
mass mass(coordsys R, explicit pair p, real m)

Return the mass which has coordinates 'p' with respect to 'R' and weight 'm'.
[Browse code]
##### mass(explicit point)
mass mass(explicit point P)

Cast 'P' to mass.
[Browse code]
##### mass(point,real)
mass mass(point M, real m)

Constructor of mass point.
[Browse code] Example 0107
##### masscenter(... mass[])
mass masscenter(... mass[] M)

Return the center of the masses 'M'.
[Browse code] Example 0107
##### attract(pair,path,real)
pair attract(pair m, path g, real fuzz = 0)

Return the nearest point (A PAIR) of 'm' which is on the path g. 'fuzz' is the argument 'fuzz' of 'intersect'.
[Browse code]
##### locate(explicit vector)
pair locate(explicit vector v)

Return the coordinates of 'v' in the default coordinate system (like casting vector to pair).
[Browse code] Example 0005
##### locate(point)
pair locate(point P)

Return the coordinates of 'P' in the default coordinate system.
[Browse code] Example 0003
##### pair coordinates(point)
pair coordinates(point M)

Return the coordinates of 'M' in its coordinate system.
[Browse code]
##### intersectionpoints(pair,pair,real,real,real,real,real,real)
pair[] intersectionpoints(pair A, pair B,
real a, real b, real c, real d, real f, real g)

Intersection points with the line (AB) and the quadric curve a * x^2 + b * x * y + c * y^2 + d * x + f * y + g = 0 given in the default coordinate system
[Browse code]
##### intersectionpoints(pair,pair,real[])
pair[] intersectionpoints(pair A, pair B, real[] equation)

Return the intersection points of the line AB with the conic whose an equation is equation[0] * x^2 + equation[1] * x * y + equation[2] * y^2 + equation[3] * x + equation[4] * y + equation[5] = 0
[Browse code]
##### parabola(bqe)
parabola parabola(bqe bqe)

Return the parabola a[0]x^2 + a[1]xy + a[2]y^2 + a[3]x + a[4]y + a[5]] = 0 (a[n] means bqe.a[n]). http://mathworld.wolfram.com/QuadraticCurve.html http://mathworld.wolfram.com/Parabola.html
[Browse code]
##### parabola(point,line)
parabola parabola(point F, line l)

Return the parabola whose focus is 'F' and directrix is 'l'.
[Browse code] Example 0032
##### parabola(point,point)
parabola parabola(point F, point vertex)

Return the parabola whose focus is 'F' and vertex is 'vertex'.
[Browse code] Example 0032
##### parabola(point,point,point,line)
parabola parabola(point M1, point M2, point M3, line l)

Return the parabola passing through the three points with its directix parallel to the line 'l'.
[Browse code] Example 0055
##### parabola(point,point,point,point,point)
parabola parabola(point M1, point M2, point M3, point M4, point M5)

Return the parabola passing through the five points.
[Browse code]
##### parabola(point,real,real)
parabola parabola(point F, real a, real angle)

Return the parabola whose focus is F, latus rectum is 4a and the angle of the axis of symmetry (in the coordinate system of F) is 'angle'.
[Browse code] Example 0032
##### arcfromcenter(ellipse,real,real,int,bool)
path arcfromcenter(ellipse el, real angle1, real angle2,
bool direction=CCW,
int n=ellipsenodesnumber(el.a,el.b,angle1,angle2,direction))

Return the path of the ellipse 'el' from angle1 to angle2 in degrees, drawing in the given direction, with n nodes. The angles are mesured relatively to the axis (C,x-axis) where C is the center of the ellipse.
[Browse code]
##### arcfromcenter(explicit conic,real,real,int,bool)
path arcfromcenter(explicit conic co, real angle1, real angle2,
int n, bool direction = CCW)

Use arcfromcenter(ellipse, ...) or arcfromcenter(hyperbola, ...) depending of the eccentricity of 'co'.
[Browse code]
##### arcfromcenter(hyperbola,real,real,int,bool)
path arcfromcenter(hyperbola h, real angle1, real angle2,
int n = hyperbolanodesnumber(h, angle1, angle2),
bool direction = CCW)

Return the path of the hyperbola 'h' from angle1 to angle2 in degrees, drawing in the given direction, with n nodes. The angles are mesured relatively to the axis (C, x-axis) where C is the center of the hyperbola.
[Browse code]
##### arcfromfocus(conic,real,real,int,bool)
path arcfromfocus(conic co, real angle1, real angle2, int n = 400, bool direction = CCW)

Return the path of the conic section 'co' from angle1 to angle2 in degrees, drawing in the given direction, with n nodes.
[Browse code] Example 0067
##### compassmark(pair,pair,real,real)
path compassmark(pair O, pair A, real position, real angle = 10)

Return an arc centered on O with the angle 'angle' so that the position of 'A' on this arc makes an angle 'position * angle'.
[Browse code] Example 0105
##### angpoint(arc,real)
point angpoint(arc a, real angle)

Return the point given by its angular position (in degrees) relative to the arc 'a'. If 'angle > degrees(a)' or 'angle < 0' the returned point is on the extended arc.
[Browse code] Example 0090 Example 0091
##### angpoint(conic,real)
point angpoint(conic co, real angle)

Return the point of 'co' whose the angular (in degrees) coordinate is 'angle' (mesured from the focus of 'co', relatively to its 'natural coordinate system').
[Browse code]
##### angpoint(explicit circle,real)
point angpoint(explicit circle c, real x)

Return the point of 'c' in the direction 'x' measured in degrees.
[Browse code] Example 0063
##### angpoint(explicit ellipse,real,polarconicroutine)
point angpoint(explicit ellipse el, real x,
polarconicroutine polarconicroutine = currentpolarconicroutine)

Return the point of 'el' in the direction 'x' measured in degrees according to 'polarconicroutine'.
[Browse code] Example 0064 Example 0065
##### angpoint(explicit hyperbola,real,polarconicroutine)
point angpoint(explicit hyperbola h, real x,
polarconicroutine polarconicroutine = currentpolarconicroutine)

Return the point of 'h' in the direction 'x' measured in degrees according to 'polarconicroutine'.
[Browse code] Example 0067 Example 0068
##### angpoint(explicit parabola,real)
point angpoint(explicit parabola p, real x)

Return the point of 'p' in the direction 'x' measured in degrees.
[Browse code] Example 0066
##### arcsubtendedcenter(point,point,real)
point arcsubtendedcenter(point A, point B, real angle)

Return the center of the arc retuned by the 'arcsubtended' routine.
[Browse code] Example 0106
##### attract(point,path,real)
point attract(point M, path g, real fuzz = 0)

Return the nearest point (A POINT) of 'M' which is on the path g. 'fuzz' is the argument 'fuzz' of 'intersect'.
[Browse code]
##### bisectorpoint(side)
point bisectorpoint(side side)

The intersection point of the angle bisector from the opposite point of 'side' with the side 'side'.
[Browse code] Example 0112
##### centroid(point,point,point)
point centroid(point A, point B, point C)

Return the centroid of the triangle ABC.
[Browse code]
##### centroid(triangle)
point centroid(triangle t)

Return the centroid of the triangle 't'.
[Browse code]
##### cevian(side,point)
point cevian(side side, point P)

Return the Cevian point on 'side' with respect of 'P'.
[Browse code]
##### changecoordsys(coordsys,point)
point changecoordsys(coordsys R, point M)

Return the point 'M' in the coordinate system 'coordsys'. In other words, the returned point marks the same plot as 'M' does.
[Browse code] Example 0004
##### circumcenter(point,point,point)
point circumcenter(point A, point B, point C)

Return the circumcenter of triangle ABC.
[Browse code]
##### circumcenter(triangle)
point circumcenter(triangle t)

Return the circumcenter of the triangle 't'.
[Browse code]
##### conj(explicit point)
point conj(explicit point M)

Conjugate.
[Browse code]
##### curpoint(arc,real)
point curpoint(arc a, real x)

Return the point of 'a' which has the curvilinear abscissa 'x'. If x < 0 or x > arclength(a), the returned point is on the extended arc.
[Browse code] Example 0088 Example 0089
##### curpoint(conic,real)
point curpoint(conic co, real x)

Return the point of 'co' which has the curvilinear abscissa 'x'.
[Browse code]
##### curpoint(explicit circle,real)
point curpoint(explicit circle c, real x)

Return the point of 'c' which has the curvilinear abscissa 'x'. Origin is c.center + c.r * (1, 0).
[Browse code] Example 0060
##### curpoint(explicit ellipse,real)
point curpoint(explicit ellipse el, real x)

Return the point of 'el' which has the curvilinear abscissa 'el'.
[Browse code] Example 0061
##### curpoint(explicit parabola,real)
point curpoint(explicit parabola p, real x)

Return the point of 'p' which has the curvilinear abscissa 'x'. Origin is the vertex of 'p'.
[Browse code] Example 0062
##### curpoint(line,real)
point curpoint(line l, real x)

Return the point of 'l' which has the curvilinear abscissa 'x'. Origin is l.A.
[Browse code] Example 0045 Example 0056
##### excenter(point,point,point)
point excenter(point A, point B, point C)

Return the center of the excircle of the triangle tangent with (AB).
[Browse code]
##### excenter(side,triangle)
point excenter(side side)

Return the center of the excircle tangent with the side 'side' of its triangle. side = 0 means AB, 1 means AC, other means BC. One must use the predefined sides t.AB, t.AC where 't' is a triangle....
[Browse code]
##### foot(side)
point foot(side side)

Return the endpoint of the altitude on 'side'.
[Browse code]
##### foot(vertex)
point foot(vertex V)

Return the endpoint of the altitude from V.
[Browse code]
##### gergonne(triangle)
point gergonne(triangle t)

Return the Gergonne point of 't'.
[Browse code]
##### incenter(point,point,point)
point incenter(point A, point B, point C)

Return the center of the incircle of the triangle ABC.
[Browse code]
##### incenter(triangle)
point incenter(triangle t)

Return the center of the incircle of the triangle 't'.
[Browse code] Example 0114
##### intersectionpoint(line,line)
point intersectionpoint(line l1, line l2)

Return the point of intersection of line 'l1' with 'l2'. If 'l1' and 'l2' have an infinity or none point of intersection, this routine return (infinity, infinity).
[Browse code] Example 0017
##### intouch(side)
point intouch(side side)

The point of tangency on the side 'side' of its incircle.
[Browse code] Example 0111
##### inverse(real k,point,point)
point inverse(real k, point A, point M)

Return the inverse point of 'M' with respect to point A and inversion radius 'k'.
[Browse code]
##### isogonal(side,point)
point isogonal(side side, point M)

http://mathworld.wolfram.com/IsogonalConjugate.html
[Browse code]
##### isogonalconjugate(triangle,point)
point isogonalconjugate(triangle t, point M)

http://mathworld.wolfram.com/IsogonalConjugate.html
[Browse code]
##### isotomic(side,point)
point isotomic(side side, point M)

http://mathworld.wolfram.com/IsotomicConjugate.html
[Browse code]
##### isotomicconjugate(triangle,point)
point isotomicconjugate(triangle t, point M)

http://mathworld.wolfram.com/IsotomicConjugate.html
[Browse code]
##### locate(pair)
point locate(pair p)

Return the point in the current coordinate system 'currentcoordsys'.
[Browse code] Example 0003
##### midpoint(segment)
point midpoint(segment s)

Return the midpoint of 's'.
[Browse code]
##### midpoint(side)
point midpoint(side side)

[Browse code]
##### origin(coordsys)
point origin(coordsys R = currentcoordsys)

Return the origin of the coordinate system 'R'.
[Browse code]
##### orthocentercenter(point,point,point)
point orthocentercenter(point A, point B, point C)

Return the orthocenter of the triangle ABC.
[Browse code]
##### orthocentercenter(triangle)
point orthocentercenter(triangle t)

Return the orthocenter of the triangle t.
[Browse code]
##### point(arc,abscissa)
point point(arc a, abscissa l)

Return the point of 'a' which has the abscissa 'l.x' according to the abscissa system 'l.system'. Note that 'a.polarconicroutine' is used instead of 'l.polarconicroutine'. Look at struct abscissa
[Browse code] Example 0086 Example 0087
##### point(arc,real)
point point(arc a, real x)

Return the point between node floor(t) and floor(t) + 1.
[Browse code] Example 0092 Example 0093
##### point(circle,abscissa)
point point(circle c, abscissa l)

Return the point of 'c' which has the abscissa 'l.x' according to the abscissa system 'l.system'.
[Browse code] Example 0057
##### point(circle,explicit vector)
point point(circle c, explicit vector v)

Return the intersection point of 'c' with the half-line '[c.C v)'.
[Browse code]
##### point(circle,point)
point point(circle c, point M)

Return the intersection point of 'c' with the half-line '[c.C M)'.
[Browse code]
##### point(coordsys,explicit point,real)
point point(coordsys R, explicit point M, real m = M.m)

Return the point of 'R' which has the coordinates of 'M' and the mass 'm'. Do not confuse this routine with the further routine 'changecoordsys'.
[Browse code] Example 0003 Example 0004
##### point(coordsys,pair,real)
point point(coordsys R, pair p, real m = 1)

Return the point which has the coodinates 'p' in the coordinate system 'R' and the mass 'm'.
[Browse code] Example 0004
##### point(ellipse,abscissa)
point point(ellipse el, abscissa l)

Return the point of 'el' which has the abscissa 'l.x' according to the abscissa system 'l.system'.
[Browse code] Example 0058
##### point(explicit conic,explicit real)
point point(explicit conic co, explicit real x)

Return the point between node floor(x) and floor(x) + 1.
[Browse code]
##### point(explicit ellipse,explicit real)
point point(explicit ellipse el, explicit real x)

Return the point between node floor(x) and floor(x) + 1.
[Browse code] Example 0070
##### point(explicit hyperbola,explicit real)
point point(explicit hyperbola h, explicit real x)

Return the point between node floor(x) and floor(x) + 1.
[Browse code] Example 0072
##### point(explicit mass)
point point(explicit mass m){return m;}
Cast 'm' to point
[Browse code]
##### point(explicit pair,real)
point point(explicit pair p, real m)

Return the point which has the coodinates 'p' in the current coordinate system and the mass 'm'.
[Browse code]
##### point(explicit parabola,explicit real)
point point(explicit parabola p, explicit real x)

Return the point between node floor(x) and floor(x) + 1.
[Browse code] Example 0071
##### point(explicit vector)
point point(explicit vector u)

Return the point M so that OM = u, where O is the origin of the coordinate system of 'u'.
[Browse code]
##### point(explicit vertex)
point point(explicit vertex V)

Return the point corresponding to the vertex 'V'.
[Browse code]
##### point(hyperbola,abscissa)
point point(hyperbola h, abscissa l)

Return the point of 'h' which has the abscissa 'l.x' according to the abscissa system 'l.system'.
[Browse code] Example 0067
##### point(line,abscissa)
point point(line l, abscissa x)

Return the point of 'l' which has the abscissa 'l.x' according to the abscissa system 'l.system'. Note that the origin is l.A, and point(l, relabscissa(x)) returns l.A + x.x * vector(l.B - l.A).
[Browse code]
##### point(line,real)
point point(line l, explicit real x)

Return the point between node l.A and l.B (x <= 0 means l.A, x >=1 means l.B).
[Browse code] Example 0025 Example 0105
##### point(parabola,abscissa)
point point(parabola p, abscissa l)

Return the point of 'p' which has the abscissa 'l.x' according to the abscissa system 'l.system'.
[Browse code] Example 0059 Example 0062 Example 0066
point radicalcenter(circle c1, circle c2)

http://fr.wikipedia.org/wiki/Puissance_d'un_point_par_rapport_%C3%A0_un_cercle
[Browse code] Example 0042
point radicalcenter(circle c1, circle c2, circle c3)

http://fr.wikipedia.org/wiki/Puissance_d'un_point_par_rapport_%C3%A0_un_cercle
[Browse code]
##### relpoint(arc,real)
point relpoint(arc a, real x)

Return the relative point of 'a'. If x > 1 or x < 0, the returned point is on the extended arc.
[Browse code] Example 0086 Example 0087
##### relpoint(explicit circle,real)
point relpoint(explicit circle c, real x)

Return the relative point of 'c' (0 means origin, 1 means end). Origin is c.center + c.r * (1, 0).
[Browse code] Example 0057
##### relpoint(explicit conic,explicit real)
point relpoint(explicit conic co, explicit real x)

Return the relative point of 'co' (0 means origin, 1 means end).
[Browse code]
##### relpoint(explicit ellipse,real)
point relpoint(explicit ellipse el, real x)

Return the relative point of 'el' (0 means origin, 1 means end).
[Browse code] Example 0058
##### relpoint(explicit hyperbola,real)
point relpoint(explicit hyperbola h, real x)

Not yet implemented...
[Browse code]
##### relpoint(explicit parabola,real)
point relpoint(explicit parabola p, real x)

Return the relative point of the path of the parabola bounded by the bounding box of the current picture. 0 means origin, 1 means end, where the origin is the vertex of 'p'.
[Browse code] Example 0059
##### relpoint(line,real)
point relpoint(line l, real x)

Return the relative point of 'l' (0 means l.A, 1 means l.B, x means l.A + x * vector(l.B - l.A) ).
[Browse code] Example 0056
##### symmedian(side)
point symmedian(side side)

The symmedian point on the side 'side'.
[Browse code]
##### symmedian(triangle)
point symmedian(triangle t)

Return the symmedian point of 't'.
[Browse code] Example 0112
##### trilinear(triangle,real,real,real)
point point(trilinear tri)

Return the trilinear coordinates relative to 't'. http://mathworld.wolfram.com/TrilinearCoordinates.html
[Browse code]
##### fermat(triangle)
point[] fermat(triangle t)

Return the Fermat points of 't'.
[Browse code]
##### intersectionpoints(arc,arc)
point[] intersectionpoints(arc a1, arc a2)

[Browse code] Example 0101 Example 0102
##### intersectionpoints(bqe,bqe)
point[] intersectionpoints(bqe bqe1, bqe bqe2)

Return the interscetion of the two conic sections whose equations are 'bqe1' and 'bqe2'.
[Browse code]
##### intersectionpoints(circle,circle)
point[] intersectionpoints(circle c1, circle c2)

[Browse code] Example 0042
##### intersectionpoints(circle,ellipse)
point[] intersectionpoints(circle a, ellipse b)

[Browse code]
##### intersectionpoints(circle,hyperbola)
point[] intersectionpoints(circle a, hyperbola b)

[Browse code]
##### intersectionpoints(circle,parabola)
point[] intersectionpoints(circle a, parabola b)

[Browse code]
##### intersectionpoints(conic,arc)
point[] intersectionpoints(conic co, arc a)

intersectionpoints(arc, circle) is also defined.
[Browse code]
##### intersectionpoints(conic,conic)
point[] intersectionpoints(conic co1, conic co2)

Return the intersection points of the two conics.
[Browse code] Example 0076
##### intersectionpoints(ellipse,circle)
point[] intersectionpoints(ellipse a, circle b)

[Browse code]
##### intersectionpoints(ellipse,ellipse)
point[] intersectionpoints(ellipse a, ellipse b)

[Browse code] Example 0043
##### intersectionpoints(ellipse,hyperbola)
point[] intersectionpoints(ellipse a, hyperbola b)

[Browse code]
##### intersectionpoints(ellipse,parabola)
point[] intersectionpoints(ellipse a, parabola b)

[Browse code]
##### intersectionpoints(hyperbola,circle)
point[] intersectionpoints(hyperbola a, circle b)

[Browse code]
##### intersectionpoints(hyperbola,ellipse)
point[] intersectionpoints(hyperbola a, ellipse b)

[Browse code]
##### intersectionpoints(hyperbola,hyperbola)
point[] intersectionpoints(hyperbola a, hyperbola b)

[Browse code]
##### intersectionpoints(hyperbola,parabola)
point[] intersectionpoints(hyperbola a, parabola b)

[Browse code]
##### intersectionpoints(line,arc)
point[] intersectionpoints(line l, arc a)

intersectionpoints(arc, line) is also defined.
[Browse code] Example 0101 Example 0102
##### intersectionpoints(line,circle)
point[] intersectionpoints(line l, circle c)

Note that the line 'l' may be a segment by casting. intersectionpoints(circle, line) is also defined.
[Browse code] Example 0035 Example 0039 Example 0045
##### intersectionpoints(line,conic)
point[] intersectionpoints(line l, conic co)

Note that the line 'l' may be a segment by casting. intersectionpoints(conic, line) is also defined.
[Browse code]
##### intersectionpoints(line,ellipse)
point[] intersectionpoints(line l, ellipse el)

Note that the line 'l' may be a segment by casting. intersectionpoints(ellipse, line) is also defined.
[Browse code] Example 0036 Example 0040
##### intersectionpoints(line,hyperbola)
point[] intersectionpoints(line l, hyperbola h)

Note that the line 'l' may be a segment by casting. intersectionpoints(hyperbola, line) is also defined.
[Browse code] Example 0038
##### intersectionpoints(line,parabola)
point[] intersectionpoints(line l, parabola p)

Note that the line 'l' may be a segment by casting. intersectionpoints(parabola, line) is also defined.
[Browse code] Example 0037 Example 0041
##### intersectionpoints(line,path)
point[] intersectionpoints(line l, path g)

Return all points of intersection of the line 'l' with the path 'g'.
[Browse code] Example 0015
##### intersectionpoints(parabola,circle)
point[] intersectionpoints(parabola a, circle b)

[Browse code]
##### intersectionpoints(parabola,ellipse)
point[] intersectionpoints(parabola a, ellipse b)

[Browse code]
##### intersectionpoints(parabola,hyperbola)
point[] intersectionpoints(parabola a, hyperbola b)

[Browse code]
##### intersectionpoints(parabola,parabola)
point[] intersectionpoints(parabola a, parabola b)

[Browse code]
##### intersectionpoints(triangle,conic,bool)
point[] intersectionpoints(triangle t, conic co, bool extended = false)

Return the intersection points. If 'extended' is true, the sides are lines else the sides are segments. intersectionpoints(conic, triangle, bool) is also defined.
[Browse code] Example 0115
##### intersectionpoints(triangle,line,bool)
point[] intersectionpoints(triangle t, line l, bool extended = false)

Return the intersection points. If 'extended' is true, the sides are lines else the sides are segments. intersectionpoints(line, triangle, bool) is also defined.
[Browse code] Example 0115
##### sameside(point,line,line)
point[] sameside(point M, line l1, line l2)

Return two points on 'l1' and 'l2' respectively. The first point is from the same side of M relatively to 'l2', the second point is from the same side of M relatively to 'l1'.
[Browse code] Example 0020
##### standardizecoordsys(coordsys,bool...point[])
point[] standardizecoordsys(coordsys R = currentcoordsys,
bool warn = true ... point[] M)

Return the points with the same coordinate system 'R'. If 'warn' is true and the coordinate systems are different, a warning is sent.
[Browse code]
##### polarconicroutine(ellipse)
polarconicroutine polarconicroutine(conic co)

Return the default routine used to draw a conic.
[Browse code]
##### abs(coordsys,pair)
real abs(coordsys R, pair m)

Return the modulus |m| in the coordinate system 'R'.
[Browse code]
##### abs(explicit point)
real abs(explicit point M)

Return the modulus |M| in its coordinate system.
[Browse code]
##### angle(a)
real angle(arc a)

Return the measure in radians of the oriented arc 'a'.
[Browse code]
##### angle(explicit point,coordsys,bool)
real angle(explicit point M, coordsys R = M.coordsys, bool warn = true)

Return the angle of M (in radians) relatively to 'R'.
[Browse code]
##### angle(line,coordsys)
real angle(line l, coordsys R = coordsys(l))

Return the angle of the oriented line 'l', in radian, in the interval ]-pi, pi] and relatively to 'R'.
[Browse code]
##### angle(line,line)
real angle(line l1, line l2)

Return the measure in radians of oriented angle (l1.u, l2.u).
[Browse code]
##### angle(vector,coordsys,bool)
real angle(explicit vector v,
coordsys R = v.v.coordsys,
bool warn = true)

Return the angle of 'v' (in radians) relatively to 'R'.
[Browse code]
##### arclength(arc)
real arclength(arc a)

The arc length of 'a'.
[Browse code]
##### arclength(circle)
real arclength(circle c)

[Browse code]
##### arclength(ellipse)
real arclength(ellipse el)

[Browse code]
##### arclength(ellipse,real,real,bool,polarconicroutine)
real arclength(ellipse el, real angle1, real angle2,
bool direction = CCW,
polarconicroutine polarconicroutine = currentpolarconicroutine)

Return the length of the arc of the ellipse between 'angle1' and 'angle2'. 'angle1' and 'angle2' must be in the interval ]-360;+oo[ if polarconicroutine = fromFocus, ]-oo;+oo[ if polarconicroutine = fromCenter.
[Browse code]
##### arclength(parabola p)
real arclength(parabola p)

Return the length of the arc of the parabola bounded to the bounding box of the current picture.
[Browse code]
##### arclength(parabola,real)
real arclength(parabola p, real angle)

Return the arclength from 180 to 'angle' given from focus in the canonical coordinate system of 'p'.
[Browse code]
##### arclength(parabola,real,real)
real arclength(parabola p, real angle1, real angle2)

Return the arclength from 'angle1' to 'angle2' given from focus in the canonical coordinate system of 'p'
[Browse code]
##### binomial(real,real)
real binomial(real n, real k)

Return n!/((n - k)!*k!)
[Browse code]
##### centerToFocus(ellipse,real)
real centerToFocus(ellipse el, real a)

Return the angle relatively to the focus of 'el' for the angle 'a' given relatively to the center of 'el'.
[Browse code]
##### degrees(arc)
real degrees(arc a)

Return the measure in degrees of the oriented arc 'a'.
[Browse code] Example 0086
##### degrees(explicit point,coordsys,bool)
real degrees(explicit point M, coordsys R = M.coordsys, bool warn = true)

Return the angle of M (in degrees) relatively to 'R'.
[Browse code]
##### degrees(line,coordsys,bool)
real degrees(line l, coordsys R = coordsys(l))

Returns the angle of the oriented line 'l' in degrees, in the interval [0, 360[ and relatively to 'R'.
[Browse code]
##### degrees(line,line)
real degrees(line l1, line l2)

Return the measure in degrees of the angle formed by the oriented lines 'l1' and 'l2'.
[Browse code]
##### degrees(vector,coordsys,bool)
real degrees(vector v,
coordsys R = v.v.coordsys,
bool warn = true)

Return the angle of 'v' (in degrees) relatively to 'R'.
[Browse code]
##### distance(point,line)
real distance(point M, line l)

Return the distance from 'M' to 'l'. distance(line, point) is also defined.
[Browse code]
##### dot(point,explicit pair)
real dot(point A, explicit pair B)

Return the dot product in the default coordinate system. dot(explicit pair, point) is also defined.
[Browse code]
##### dot(point,point)
real dot(point A, point B)

Return the dot product in the coordinate system of 'A'.
[Browse code]
##### elle(real,real)
real elle(real phi, real k)

Legendre elliptic integral of the 2nd kind, evaluated using Carlson's functions RD and RF. The argument ranges are -infinity < phi < +infinity, 0 <= k * sin(phi) <= 1.
[Browse code]
real exradius(point A, point B, point C)

Return the radius of the excircle of the triangle ABC with (AB).
[Browse code]
real exradius(side side)

Return radius of the excircle tangent with the side 'side' of its triangle. side = 0 means AB, 1 means BC, other means CA. One must use the predefined sides t.AB, t.AC where 't' is a triangle....
[Browse code]
##### focusToCenter(ellipse,real)
real focusToCenter(ellipse el, real a)

Return the angle relatively to the center of 'el' for the angle 'a' given relatively to the focus of 'el'.
[Browse code]
real inradius(point A, point B, point C)

Return the radius of the incircle of the triangle ABC.
[Browse code]
real inradius(triangle t)

Return the radius of the incircle of the triangle 't'.
[Browse code]
##### length(explicit point)
real length(explicit point M)

Return the modulus |M| in its coordinate system (same as 'abs').
[Browse code]
##### length(segment)
real length(segment s)

Return the length of 's'.
[Browse code]
##### linemargin()
real linemargin()

Return the margin used to draw lines.
[Browse code]
##### rd(real,real,real)
real rd(real x, real y, real z)

Computes Carlson's elliptic integral of the second kind. x and y must be positive, and at most one can be zero. z must be non negative.
[Browse code]
##### rf(real,real,real)
real rf(real x, real y, real z)

Computes Carlson's elliptic integral of the first kind. x, y, and z must be non negative, and at most one can be zero.
[Browse code]
##### sharpangle(line,line)
real sharpangle(line l1, line l2)

Return the measure in radians of the sharp angle formed by 'l1' and 'l2'.
[Browse code]
##### sharpdegrees(line,line)
real sharpdegrees(line l1, line l2)

Return the measure in degrees of the sharp angle formed by 'l1' and 'l2'.
[Browse code] Example 0021
##### bangles(picture,parabola)
real[] bangles(picture pic = currentpicture, parabola p)

Return the array {ma, Ma} where 'ma' and 'Ma' are respectively the smaller and the larger angles for which the parabola 'p' is included in the bounding box of the picture 'pic'.
[Browse code] Example 0071
##### intersect(path,explicit pair)
real[] intersect(path g, explicit pair p, real fuzz = 0)

[Browse code]
##### intersect(path,explicit point)
real[] intersect(path g, explicit point P, real fuzz = epsgeo)

[Browse code]
##### realquarticroots(real,real,real,real,real)
real[] realquarticroots(real a, real b, real c, real d, real e)

Return the real roots of the quartic equation ax^4 + b^x3 + cx^2 + dx = 0.
[Browse code]
##### bangles(picture,hyperbola)
real[][] bangles(picture pic = currentpicture, hyperbola h)

Return the array {{ma1, Ma1}, {ma2, Ma2}} where 'maX' and 'MaX' are respectively the smaller and the bigger angles (from h.FX) for which the hyperbola 'h' is included in the bounding box of the picture 'pic'.
[Browse code] Example 0072
##### segment(explicit side)
segment segment(explicit side side)

Return 'side' as segment.
[Browse code]
##### segment(line)
segment segment(line l)

Return the segment whose extremities are 'l.A' and 'l.B'.
[Browse code]
##### segment(point,point)
segment segment(point A, point B)

Return the segment whose the extremities are A and B.
[Browse code]
##### opposite(vertex)
side opposite(vertex V)

Return the opposite side of vertex 'V'.
[Browse code]
##### conictype(bqe)
string conictype(bqe bqe)

Returned values are "ellipse" or "parabola" or "hyperbola" depending of the conic section represented by 'bqe'.
[Browse code]
##### massformat(string,string,mass)
string massformat(string format = defaultmassformat,
string s, mass M)

Return the string formated by 'format' with the mass value. In the parameter 'format', %L will be replaced by 's'. Look at defaultmassformat.
[Browse code]
##### hprojection(line,bool)
transform hprojection(line l, bool safe = false)

Return the projection on 'l' in parallel of E--W. If 'safe' is 'true' the projected point keeps the same place if 'l' is horizontal.
[Browse code] Example 0018
##### projection(line)
transform projection(line l)

Return the orthogonal projection on 'l'.
[Browse code] Example 0018
##### projection(line,line,bool)
transform projection(line l1, line l2, bool safe = false)

Return the projection on (AB) in parallel of (CD). If 'safe = true' and (l1)//(l2) return the identity. If 'safe = false' and (l1)//(l2) return a infinity scaling.
[Browse code] Example 0018 Example 0019
##### projection(point,point)
transform projection(point A, point B)

Return the orthogonal projection on the line (AB).
[Browse code]
##### projection(point,point,point,point,bool)
transform projection(point A, point B, point C, point D, bool safe = false)

Return the (CD) parallel projection on (AB). If 'safe = true' and (AB)//(CD) return the identity. If 'safe = false' and (AB)//(CD) return an infinity scaling.
[Browse code] Example 0007
##### reflect(line)
transform reflect(line l)

Return the reflect about the line 'l'.
[Browse code]
##### reflect(line,line)
transform reflect(line l1, line l2, bool safe = false)

Return the reflect about the line 'l1' in the direction of 'l2'.
[Browse code]
##### rotate(explicit vector)
transform rotate(explicit vector dir)

A rotation in the direction 'dir' limited to [-90, 90] This is useful for rotating text along a line in the direction dir. rotate(explicit point dir) is also defined.
[Browse code]
##### scale(real,line,line,bool)
transform scale(real k, line l1, line l2, bool safe = false)

Return the dilatation with respect to 'l1' in the direction of 'l2'.
[Browse code]
##### scale(real,point)
transform scale(real k, point M)

Homothety.
[Browse code] Example 0006
##### scale(real,point,point,point,point,bool)
transform scale(real k, point A, point B, point C, point D, bool safe = false)

http://fr.wikipedia.org/wiki/Affinit%C3%A9_%28math%C3%A9matiques%29 (help me for English translation...) If 'safe = true' and (AB)//(CD) return the identity. If 'safe = false' and (AB)//(CD) return a infinity scaling.
[Browse code] Example 0007
##### scaleO(real)
transform scaleO(real x)

Homothety from the origin of the current coordinate system.
[Browse code] Example 0006
##### vprojection(line,bool)
transform vprojection(line l, bool safe = false)

Return the projection on 'l' in parallel of N--S. If 'safe' is 'true' the projected point keeps the same place if 'l' is vertical.
[Browse code] Example 0018
##### xscale(real,point)
transform xscale(real k, point M)

xscale from 'M' relatively to the x - axis of the coordinate system of 'M'.
[Browse code] Example 0029
##### xscaleO(real)
transform xscaleO(real x)

xscale from the origin and relatively to the current coordinate system.
[Browse code] Example 0006
##### yscale(real,point)
transform yscale(real k, point M)

yscale from 'M' relatively to the y - axis of the coordinate system of 'M'.
[Browse code]
##### yscaleO(real)
transform yscaleO(real x)

yscale from the origin and relatively to the current coordinate system.
[Browse code] Example 0006
##### rotateO(real)
transform rotateO(real a)

Rotation around the origin of the current coordinate system.
[Browse code] Example 0006
##### anticomplementary(triangle)
triangle anticomplementary(triangle t)

Return the triangle which has the given triangle 't' as its medial triangle.
[Browse code] Example 0110
##### antipedal(triangle,point)
triangle antipedal(triangle t, point M)

http://mathworld.wolfram.com/AntipedalTriangle.html
[Browse code]
##### cevian(triangle,point)
triangle cevian(triangle t, point P)

Return the Cevian triangle with respect of 'P' http://mathworld.wolfram.com/CevianTriangle.html.
[Browse code]
##### extouch(side)
triangle extouch(side side)

Return the triangle formed by the points of tangency of the triangle referenced by 'side' with its excircles. One vertex of the returned triangle is on the segment 'side'.
[Browse code] Example 0111
##### extouch(triangle)
triangle extouch(triangle t)

Return the extouch triangle of the triangle 't'. The extouch triangle of 't' is the triangle formed by the points of tangency of a triangle 't' with its excircles.
[Browse code] Example 0111
##### extouch(triangle)
triangle incentral(triangle t)

Return the incentral triangle of the triangle 't'. It is the triangle whose vertices are determined by the intersections of the reference triangle's angle bisectors with the respective opposite sides.
[Browse code] Example 0111
##### intouch(triangle)
triangle intouch(triangle t)

Return the intouch triangle of the triangle 't'. The intouch triangle of 't' is the triangle formed by the points of tangency of a triangle 't' with its incircles.
[Browse code]
##### isogonal(triangle,point)
triangle isogonal(triangle t, point M)

http://mathworld.wolfram.com/IsogonalConjugate.html
[Browse code]
##### isotomic(triangle,point)
triangle isotomic(triangle t, point M)

http://mathworld.wolfram.com/IsotomicConjugate.html
[Browse code]
##### medial(triangle t)
triangle medial(triangle t)

Return the triangle whose vertices are midpoints of the sides of 't'.
[Browse code]
##### orthic(triangle)
triangle orthic(triangle t)

Return the triangle whose vertices are endpoints of the altitudes from each of the vertices of 't'.
[Browse code]
##### pedal(triangle,point)
triangle pedal(triangle t, point M)

Return the pedal triangle of 'M' in 't'. http://mathworld.wolfram.com/PedalTriangle.html
[Browse code]
##### pedal(triangle,point)
line pedal(side side, point M)

Return the pedal line of 'M' cutting 'side'. http://mathworld.wolfram.com/PedalTriangle.html
[Browse code]
##### symmedial(triangle)
triangle symmedial(triangle t)

Return the symmedial triangle of 't'.
[Browse code] Example 0112
##### tangential(triangle)
triangle tangential(triangle t)

Return the tangential triangle of the triangle 't'. The tangential triangle of 't' is the triangle formed by the lines tangent to the circumcircle of the given triangle 't' at its vertices.
[Browse code] Example 0111
##### triangle(line,line,line)
triangle triangle(line l1, line l2, line l3)

Return the triangle defined by three line.
[Browse code]
##### triangleAbc(real,real,real,real,point)
triangle triangleAbc(real alpha, real b, real c, real angle = 0, point A = (0, 0))

Return the triangle ABC rotated by 'angle' with BAC = alpha, AC = b and AB = c.
[Browse code] Example 0109
##### triangleabc(real,real,real,real,point)
triangle triangleabc(real a, real b, real c, real angle = 0, point A = (0, 0))

Return the triangle ABC rotated by 'angle' with BC = a, AC = b and AB = c.
[Browse code] Example 0108
##### trilinear(triangle,centerfunction,real,real,real)
trilinear trilinear(triangle t, centerfunction f, real a = t.a(), real b = t.b(), real c = t.c())

http://mathworld.wolfram.com/TriangleCenterFunction.html
[Browse code]
##### trilinear(triangle,point)
trilinear trilinear(triangle t, point M)

Return the trilinear coordinates of 'M' relative to 't'. http://mathworld.wolfram.com/TrilinearCoordinates.html
[Browse code]
##### trilinear(triangle,real,real,real)
trilinear trilinear(triangle t, real a, real b, real c)

Return the trilinear coordinates relative to 't'. http://mathworld.wolfram.com/TrilinearCoordinates.html
[Browse code]
##### changecoordsys(coordsys,vector)
vector changecoordsys(coordsys R, vector v)

Return the vector 'v' relatively to coordinate system 'R'.
[Browse code]
##### conj(explicit vector)
vector conj(explicit vector u)

Conjugate.
[Browse code]
##### dir(vertex)
vector dir(vertex V)

The direction (towards the outside of the triangle) of the interior angle bisector of 'V'.
[Browse code]
##### unit(point)
vector unit(point M)

Return the unit vector according to the modulus of its coordinate system.
[Browse code]
##### unit(vector)
vector unit(vector u)

Return the unit vector according to the modulus of its coordinate system.
[Browse code]
##### vector(coordsys, pair)
vector vector(coordsys R = currentcoordsys, pair v)

Return the vector of 'R' which has the coordinates 'v'.
[Browse code]
##### vector(point)
vector vector(point M)

Return the vector OM, where O is the origin of the coordinate system of 'M'. Useful to write 'vector(P - M);' instead of '(vector)(P - M)'.
[Browse code]
##### opposite(side)
vertex opposite(side side)

Return the opposite vertex of side 'side'.
[Browse code]
void addMargins(picture pic = currentpicture,
real lmargin = 0, real bmargin = 0,
real rmargin = lmargin, real tmargin = bmargin,
bool rigid = true, bool allObject = true)

Add margins to 'pic' with respect to the current bounding box of 'pic'. If 'rigid' is false, margins are added iff an infinite curve will be prolonged on the margin. If 'allObject' is false, fixed - size objects (such as labels and arrowheads) will be ignored.
[Browse code]
##### clipdraw(picture,Label,path,align,pen,arrowbar,arrowbar,real,real,Label,marker)
void clipdraw(picture pic = currentpicture, Label L = "", path g,
align align = NoAlign, pen p = currentpen,
arrowbar arrow = None, arrowbar bar = None,
real xmargin = 0, real ymargin = xmargin,
Label legend = "", marker marker = nomarker)

Draw the path 'g' on 'pic' clipped to the bounding box of 'pic'.
[Browse code] Example 0028
##### distance(picture pic,Label,point,point,bool,real,pen,pen,arrow)
void distance(picture pic = currentpicture, Label L = "", point A, point B,
bool rotated = true, real offset = 3mm,
pen p = currentpen, pen joinpen = invisible,
arrowbar arrow = Arrows(NoFill))

Draw arrow between A and B (from FAQ).
[Browse code] Example 0057 Example 0088
##### dot(picture,Label,explicit mass,align,string,pen)
void dot(picture pic = currentpicture, Label L, explicit mass M, align align = NoAlign,
string format = defaultmassformat, pen p = currentpen)

Draw a dot with label 'L' as label(picture, Label, explicit mass, align, string, pen, filltype) does. Look at label(picture, Label, mass, align, string, pen, filltype).
[Browse code]
##### dot(picture,Label,explicit point,align,string,pen)
void dot(picture pic = currentpicture, Label L, explicit point Z,
align align = NoAlign,
string format = defaultformat, pen p = currentpen)

[Browse code] Example 0073 Example 0074 Example 0075
##### dot(picture,triangle,pen)
void dot(picture pic = currentpicture, triangle t, pen p = currentpen)

Draw a dot at each vertex of 't'.
[Browse code]
##### draw(picture,Label,arc,align,pen,arrowbar,arrowbar,margin,Label,marker)
void draw(picture pic = currentpicture, Label L = "", arc a,
align align = NoAlign, pen p = currentpen,
arrowbar arrow = None, arrowbar bar = None, margin margin = NoMargin,
Label legend = "", marker marker = nomarker)

[Browse code]
##### draw(picture,Label,circle,align,pen,arrowbar,arrowbar,margin,Label,marker)
void draw(picture pic = currentpicture, Label L = "", circle c,
align align = NoAlign, pen p = currentpen,
arrowbar arrow = None, arrowbar bar = None,
margin margin = NoMargin, Label legend = "", marker marker = nomarker)

[Browse code]
##### draw(picture,Label,ellipse,align,pen,arrowbar,arrowbar,margin,Label,marker)
void draw(picture pic = currentpicture, Label L = "", ellipse el,
align align = NoAlign, pen p = currentpen,
arrowbar arrow = None, arrowbar bar = None,
margin margin = NoMargin, Label legend = "", marker marker = nomarker)

[Browse code]
##### draw(picture,Label,explicit conic,align,pen,arrowbar,arrowbar,margin,Label,marker)
void draw(picture pic = currentpicture, Label L = "", explicit conic co,
align align = NoAlign, pen p = currentpen,
arrowbar arrow = None, arrowbar bar = None,
margin margin = NoMargin, Label legend = "", marker marker = nomarker)

Use one of the routine 'draw(ellipse, ...)', 'draw(parabola, ...)' or 'draw(hyperbola, ...)' depending of the value of eccentricity of 'co'.
[Browse code] Example 0076
##### draw(picture,Label,hyperbola,align,pen,arrowbar,arrowbar,margin,Label,marker)
void draw(picture pic = currentpicture, Label L = "", hyperbola h,
align align = NoAlign, pen p = currentpen,
arrowbar arrow = None, arrowbar bar = None,
margin margin = NoMargin, Label legend = "", marker marker = nomarker)

Draw the hyperbola 'h' on 'pic' without (if possible) altering the size of the picture pic.
[Browse code]
##### draw(picture,Label,line,bool,bool,align,pen,arrowbar,Label,marker)
void draw(picture pic = currentpicture, Label L = "",
line l, bool dirA = l.extendA, bool dirB = l.extendB,
align align = NoAlign, pen p = currentpen,
arrowbar arrow = None,
Label legend = "", marker marker = nomarker,
pathModifier pathModifier = NoModifier)

Draw the line 'l' without altering the size of picture pic. The boolean parameters control the infinite section. The global variable 'linemargin' (default value is 0) allows to modify the bounding box in which the line must be drawn.
[Browse code] Example 0016
##### draw(picture,Label,parabola,align,pen,arrowbar,arrowbar,margin,Label,marker)
void draw(picture pic = currentpicture, Label L = "", parabola parabola,
align align = NoAlign, pen p = currentpen,
arrowbar arrow = None, arrowbar bar = None,
margin margin = NoMargin, Label legend = "", marker marker = nomarker)

Draw the parabola 'p' on 'pic' without (if possible) altering the size of picture pic.
[Browse code]
##### draw(picture,Label[], line[], align,pen,arrowbar,Label,marker)
void draw(picture pic = currentpicture, Label[] L = new Label[], line[] l,
align align = NoAlign, pen p,
arrowbar arrow = None,
Label[] legend = new Label[], marker marker = nomarker,
pathModifier pathModifier = NoModifier)

Draw each lines with the same pen 'p'.
[Browse code]
##### draw(picture,Label[], line[], align,pen[], arrowbar,Label,marker)
void draw(picture pic = currentpicture, Label[] L = new Label[], line[] l,
align align = NoAlign, pen[] p = new pen[],
arrowbar arrow = None,
Label[] legend = new Label[], marker marker = nomarker,
pathModifier pathModifier = NoModifier)

Draw each lines with the corresponding pen.
[Browse code]
##### draw(picture,triangle,pen,marker)
void draw(picture pic = currentpicture, triangle t, pen p = currentpen, marker marker = nomarker)

Draw sides of the triangle 't' on picture 'pic' using pen 'p'.
[Browse code]
##### draw(picture,triangle[],pen,marker)
void draw(picture pic = currentpicture, triangle[] t, pen p = currentpen, marker marker = nomarker)

Draw sides of the triangles 't' on picture 'pic' using pen 'p'.
[Browse code]
##### drawline(picture,triangle,pen)
void drawline(picture pic = currentpicture, triangle t, pen p = currentpen)

Draw lines of the triangle 't' on picture 'pic' using pen 'p'.
[Browse code] Example 0111
##### label(picture,Label,Label,Label,triangle,real,real,pen,filltype)
void label(picture pic = currentpicture, Label LA = "$A$",
Label LB = "$B$", Label LC = "$C$",
triangle t,
real alignAngle = 0,
real alignFactor = 1,
pen p = nullpen, filltype filltype = NoFill)

Draw labels LA, LB and LC aligned in the rotated (by 'alignAngle' in degrees) direction (towards the outside of the triangle) of the interior angle bisector of vertices. One can individually modify the alignment by setting the Label parameter 'align'.
[Browse code] Example 0110 Example 0111
##### label(picture,Label,explicit mass,align,string,pen,filltype)
void label(picture pic = currentpicture, Label L, explicit mass M,
align align = NoAlign, string format = defaultmassformat,
pen p = nullpen, filltype filltype = NoFill)

Draw label returned by massformat(format, L, M) at coordinates of M. Look at massformat(string, string, mass).
[Browse code]
##### lvoid label(picture,Label,vertex,pair,real,pen,filltype)
void label(picture pic = currentpicture, Label L, vertex V,
pair align = dir(V),
real alignFactor = 1,
pen p = nullpen, filltype filltype = NoFill)

Draw 'L' on picture 'pic' at vertex 'V' aligned by 'alignFactor * align'.
[Browse code]
##### markangle(picture,Label,int,real,real,explicit line,explicit line,explicit pair,arrowbar,pen,filltype,margin,marker)
void markangle(picture pic = currentpicture,
Label L = "", int n = 1, real radius = 0, real space = 0,
explicit line l1, explicit line l2, explicit pair align = dir(1),
arrowbar arrow = None, pen p = currentpen,
filltype filltype = NoFill,
margin margin = NoMargin, marker marker = nomarker)

Mark the angle (l1, l2) aligned in the direction 'align' relative to 'l1'. Commune values for 'align' are dir(real).
[Browse code]
##### markangle(picture,Label,int,real,real,explicit line,explicit line,explicit vector,arrowbar,pen,filltype,margin,marker)
void markangle(picture pic = currentpicture,
Label L = "", int n = 1, real radius = 0, real space = 0,
explicit line l1, explicit line l2, explicit vector align,
arrowbar arrow = None, pen p = currentpen,
filltype filltype = NoFill,
margin margin = NoMargin, marker marker = nomarker)

Mark the angle (l1, l2) in the direction 'dir' given relatively to 'l1'.
[Browse code]
##### markangle(picture,Label,int,real,real,line,line,arrowbar,pen,filltype,margin,marker)
// void markangle(picture pic = currentpicture,
//                Label L = "", int n = 1, real radius = 0, real space = 0,
//                explicit line l1, explicit line l2,
//                arrowbar arrow = None, pen p = currentpen,
//                filltype filltype = NoFill,
//                margin margin = NoMargin, marker marker = nomarker)
// {/*
Mark the oriented angle (l1, l2).
[Browse code] Example 0021 Example 0022
##### markarc(picture,Label,int,real,real,arc,arrowbar,pen,pen,margin,marker)
void markarc(picture pic = currentpicture,
Label L = "",
int n = 1, real radius = 0, real space = 0,
arc a,
pen sectorpen = currentpen,
pen markpen = sectorpen,
margin margin = NoMargin,
arrowbar arrow = None,
marker marker = nomarker)

[Browse code] Example 0082 Example 0083 Example 0084 Example 0085
##### markrightangle(picture,point,point,point,real,pen,margin,filltype)
void markrightangle(picture pic = currentpicture, point A, point O,
point B, real size = 0, pen p = currentpen,
margin margin = NoMargin,
filltype filltype = NoFill)

Mark the angle AOB with a perpendicular symbol.
[Browse code] Example 0017
##### perpendicularmark(picture,line,line,real,pen,int,margin,filltype)
void perpendicularmark(picture pic = currentpicture, line l1, line l2,
real size = 0, pen p = currentpen, int quarter = 1,
margin margin = NoMargin, filltype filltype = NoFill)

Draw a right angle at the intersection point of lines and aligned in the 'quarter' nth quarter of circle formed by 'l1.u' and 'l2.u'.
[Browse code]
##### perpendicularmark(picture,point,explicit pair,explicit pair,real,pen,margin,filltype)
void perpendicularmark(picture pic = currentpicture, point z,
explicit pair align,
explicit pair dir = E, real size = 0,
pen p = currentpen,
margin margin = NoMargin,
filltype filltype = NoFill)

Draw a perpendicular symbol at z aligned in the direction align relative to the path z--z + dir. dir(45 + n * 90), where n in N*, are common values for 'align'.
[Browse code]
##### perpendicularmark(picture,point,explicit pair,path,real,pen,margin,filltype)
void perpendicularmark(picture pic = currentpicture, point z, explicit pair align, path g,
real size = 0, pen p = currentpen,
margin margin = NoMargin,
filltype filltype = NoFill)

Draw a perpendicular symbol at z aligned in the direction align relative to the path z--z + dir(g, 0). dir(45 + n * 90), where n in N, are common values for 'align'.
[Browse code]
##### perpendicularmark(picture,point,vector,path,real,pen,margin,filltype)
void perpendicularmark(picture pic = currentpicture, point z, vector align, path g,
real size = 0, pen p = currentpen,
margin margin = NoMargin,
filltype filltype = NoFill)

Draw a perpendicular symbol at z aligned in the direction align relative to the path z--z + dir(g, 0). dir(45 + n * 90), where n in N, are common values for 'align'.
[Browse code]
##### perpendicularmark(picture,point,vector,vector,real,pen,margin,filltype)
void perpendicularmark(picture pic = currentpicture, point z,
vector align,
vector dir = E, real size = 0,
pen p = currentpen,
margin margin = NoMargin,
filltype filltype = NoFill)

Draw a perpendicular symbol at z aligned in the direction align relative to the path z--z + dir. dir(45 + n * 90), where n in N, are common values for 'align'.
[Browse code]
##### show(Label,pen,arrowbar)
void show(Label L, vector v, pen p = currentpen, arrowbar arrow = Arrow)

Draw the vector v (from the origin of its coordinate system).
[Browse code]
##### show(picture,Label,Label,Label,Label,Label,Label,triangle,pen,filltype)
void show(picture pic = currentpicture,
Label LA = "$A$", Label LB = "$B$", Label LC = "$C$",
Label La = "$a$", Label Lb = "$b$", Label Lc = "$c$",
triangle t, pen p = currentpen, filltype filltype = NoFill)

Draw triangle and labels of sides and vertices.
[Browse code] Example 0108
##### show(picture,Label,Label,Label,coordsys,pen,pen,pen,pen,pen)
void show(picture pic = currentpicture, Label lo = "$O$",
Label li = "$\vec{\imath}$",
Label lj = "$\vec{\jmath}$",
coordsys R,
pen dotpen = currentpen, pen xpen = currentpen, pen ypen = xpen,
pen ipen = red,
pen jpen = ipen,
arrowbar arrow = Arrow)

Draw the components (O, i, j, x - axis, y - axis) of 'R'.
[Browse code]
##### show(picture,line,pen)
void show(picture pic = currentpicture, line l, pen p = red)

Draw some informations of 'l'.
[Browse code] Example 0025
##### write(explicit segment)
void write(explicit segment s)

[Browse code]
##### write(line)
void write(explicit line l)

[Browse code]
##### write(trilinear)
void write(trilinear tri)

[Browse code]

## List of operators

##### *(real,abscissa)
abscissa operator *(real x, explicit abscissa a)

Provide 'real * abscissa'. Return abscissa b so that b.x = x * a.x. *(explicit abscissa, real), /(real, explicit abscissa) and /(explicit abscissa, real) are also defined.
[Browse code]
##### +(real,explicit abscissa)
abscissa operator +(real x, explicit abscissa a)

Provide 'real + abscissa'. Return abscissa b so that b.x = a.x + x. +(explicit abscissa, real), -(real, explicit abscissa) and -(explicit abscissa, real) are also defined.
[Browse code]
##### -(explicit abscissa a)
abscissa operator -(explicit abscissa a)

Return the abscissa b so that b.x = -a.x.
[Browse code]
##### cast(explicit position)
abscissa operator cast(explicit position position)

Cast position to abscissa. If 'position' is relative, the abscissa is relative else it's a curvilinear abscissa.
[Browse code]
##### cast(real)
abscissa operator cast(real x)

Cast real to abscissa, precisely 'nodabscissa'.
[Browse code]
##### cast(vector)
align operator cast(vector v)

Cast vector to align.
[Browse code]
##### *(inversion,segment)
arc operator *(inversion i, segment s)

Provide inversion * segment.
[Browse code]
##### *(real,explicit arc)
arc operator *(real x, explicit arc a)

Provide real * arc. Return the arc subtracting and adding '(x - 1) * degrees(a)/2' to 'a.angle1' and 'a.angle2' respectively.
[Browse code]
##### *(transform,explicit arc)
arc operator *(transform t, explicit arc a)

Provide transform * arc.
[Browse code] Example 0080 Example 0081
##### +(explicit arc,point)
arc operator +(explicit arc a, point M)

Provide arc + point. Return shifted arc. 'operator +(explicit arc, point)', 'operator +(explicit arc, vector)' and 'operator -(explicit arc, vector)' are also defined.
[Browse code]
##### /(real,explicit arc)
arc operator /(explicit arc a, real x)

Provide arc/real. Return the arc subtracting and adding '(1/x - 1) * degrees(a)/2' to 'a.angle1' and 'a.angle2' respectively.
[Browse code]
##### !=(explicit point,explicit point)
bool operator !=(explicit point M, explicit point N)

Provide the test 'M != N' wish return true iff MN >= EPS
[Browse code]
##### !=(line,line)
bool operator !=(line l1, line l2)

Provide the test 'line != line'.
[Browse code]
##### ==(coordsys,coordsys)
bool operator ==(coordsys c1, coordsys c2)

Return true iff the coordinate system have the same origin and units vector.
[Browse code]
##### ==(explicit point,explicit point)
bool operator ==(explicit point M, explicit point N)

Provide the test 'M == N' wish returns true iff MN < EPS
[Browse code]
##### ==(explicit vector,explicit vector)
bool operator ==(explicit vector u, explicit vector v)

Return true iff |u - v|<EPS.
[Browse code]
##### ==(line,line)
bool operator ==(line l1, line l2)

Provide the test 'line == line'.
[Browse code]
##### @(point,arc)
bool operator @(point M, arc a)

Return true iff 'M' is on the arc 'a'.
[Browse code]
##### @(point,conic)
bool operator @(point M, conic co)

Return true iff 'M' on 'co'.
[Browse code]
##### @(point,explicit circle)
bool operator @(point M, explicit circle c)

Return true iff 'M' is on the circle 'c'.
[Browse code]
##### @(point,line)
bool operator @(point m, line l)

Provide the test 'point @ line'. Return true iff 'm' is on the 'l'.
[Browse code] Example 0026
##### *(inversion,circle)
circle operator *(inversion i, circle c)

Provide inversion * circle.
[Browse code]
##### *(inversion,line)
circle operator *(inversion i, line l)

Provide inversion * line for lines that don't pass through the inversion center.
[Browse code]
##### *(real,explicit circle)
circle operator *(real x, explicit circle c)

[Browse code]
##### +(explicit circle,explicit point)
circle operator +(explicit circle c, explicit point M)

Translation of 'c'.
[Browse code]
##### +(explicit circle,pair)
circle operator +(explicit circle c, pair m)

Translation of 'c'. 'm' represent coordinates in the coordinate system where 'c' is defined.
[Browse code]
##### +(explicit circle,vector)
circle operator +(explicit circle c, vector m)

Translation of 'c'.
[Browse code]
##### -(explicit circle,explicit point)
circle operator -(explicit circle c, explicit point M)

Translation of 'c'.
[Browse code]
##### -(explicit circle,pair)
circle operator -(explicit circle c, pair m)

Translation of 'c'. 'm' represent coordinates in the coordinate system where 'c' is defined.
[Browse code]
##### -(explicit circle,vector)
circle operator -(explicit circle c, vector m)

Translation of 'c'.
[Browse code]
##### /(explicit circle,real)
circle operator /(explicit circle c, real x)

[Browse code] Example 0030
##### cast(conic)
circle operator cast(conic c)

Conic section to circle.
[Browse code]
##### cast(ellipse)
circle operator cast(ellipse el)

[Browse code]
##### *(transform,conic)
conic operator *(transform t, conic co)

Provide transform * conic.
[Browse code]
##### +(conic,explicit pair)
conic operator +(conic c, explicit pair m)

[Browse code]
##### +(conic,explicit point)
conic operator +(conic c, explicit point M)

[Browse code]
##### +(conic,vector)
conic operator +(conic c, vector v)

[Browse code]
##### -(conic,explicit pair)
conic operator -(conic c, explicit pair m)

[Browse code]
##### -(conic,explicit point)
conic operator -(conic c, explicit point M)

[Browse code]
##### -(conic,vector)
conic operator -(conic c, vector v)

[Browse code]
##### cast(circle)
conic operator cast(circle c)

Circle to conic section.
[Browse code]
##### cast(ellipse)
conic operator cast(ellipse el)

Ellipse to conic section.
[Browse code]
##### cast(hyperbola)
conic operator cast(hyperbola h)

Hyperbola to conic section.
[Browse code]
##### cast(parabola)
conic operator cast(parabola p)

Cast a parabola to a conic section.
[Browse code]
##### *(transform,coordsys)
coordsys operator *(transform t,coordsys R)

Provide transform * coordsys. Note that shiftless(t) is applied to R.i and R.j.
[Browse code]
##### *(real,ellipse)
ellipse operator *(real x, ellipse el)

Identical but more efficient (rapid) than 'scale(x, el.C) * el'.
[Browse code]
##### *(transform,circle)
ellipse operator *(transform t, circle c)

Provide transform * circle. For example, 'circle C = scale(2) * circle' and 'ellipse E = xscale(2) * circle' are valid but 'circle C = xscale(2) * circle' is invalid.
[Browse code] Example 0029 Example 0030
##### *(transform,ellipse)
ellipse operator *(transform t, ellipse el)

Provide transform * ellipse.
[Browse code] Example 0031
##### /(ellipse,real)
ellipse operator /(ellipse el, real x)

Identical but more efficient (rapid) than 'scale(1/x, el.C) * el'.
[Browse code] Example 0031
##### cast(circle)
ellipse operator cast(circle c)

[Browse code]
##### cast(conic)
ellipse operator cast(conic co)

Cast a conic to an ellipse (can be a circle).
[Browse code]
##### cast(explicit arc)
guide operator cast(explicit arc a)

Cast arc to guide.
[Browse code]
##### cast(mass)
guide operator cast(mass M){return M.M;}
Cast mass to guide.
[Browse code]
##### cast(point)
guide operator cast(point p)

Cast point to guide.
[Browse code]
##### *(transform,hyperbola)
hyperbola operator *(transform t, hyperbola h)

Provide transform * hyperbola.
[Browse code]
##### cast(conic)
hyperbola operator cast(conic co)

Cast a conic section to an hyperbola.
[Browse code]
##### *(point,line)
line operator *(point M, line l)

Provide point * line. Return the line passing through unit(M) * l.A and unit(M) * l.B.
[Browse code]
##### *(real,line)
line operator *(real x, line l)

Provide x * l. Return the line passing through x * l.A and x * l.B.
[Browse code]
##### *(transform,line)
line operator *(transform t, line l)

Provide transform * line
[Browse code]
##### +(line,point)
line operator +(line l, vector u)

Provide line + vector (and so line + point). Return the line 'l' shifted by 'u'.
[Browse code]
##### -(line,vector)
line operator -(line l, vector u)

Provide line - vector (and so line - point). Return the line 'l' shifted by '-u'.
[Browse code]
##### /(line,real)
line operator /(line l, real x)

Provide l/x. Return the line passing through l.A/x and l.B/x.
[Browse code]
##### cast(segment)
line operator cast(segment s)

A segment is casted to a "finite line".
[Browse code]
##### cast(side)
line operator cast(side side)

Cast side to (infinite) line. Most routine with line parameters works with side parameters. One can use the code 'segment(a_side)' to obtain a line segment.
[Browse code]
##### ^^(line,line)
line[] operator ^^(line l1, line l2)

Provide line^^line. Return the line array {l1, l2}.
[Browse code]
##### ^^(line,line[])
line[] operator ^^(line l1, line[] l2)

Provide line^^line[]. Return the line array {l1, l2[0], l2[1]...}. line[]^^line is also defined.
[Browse code]
##### ^^(line,line[])
line[] operator ^^(line l1[], line[] l2)

Provide line[]^^line[]. Return the line array {l1[0], l1[1], ..., l2[0], l2[1], ...}.
[Browse code]
##### *(real,mass)
mass operator *(real x, explicit mass M)

Provide real * mass. The resulted mass is the mass of 'M' multiplied by 'x' . mass/real, mass + real and mass - real are also defined.
[Browse code]
##### *(transform,mass)
mass operator *(transform t, mass M)

Provide transform * mass.
[Browse code]
##### +(mass,mass)
mass operator +(mass M1, mass M2)

Provide mass + mass. mass - mass is also defined.
[Browse code]
##### cast(pair)
mass operator cast(pair m){return mass((point)m, 1);}
Cast pair to mass point.
[Browse code]
##### cast(point)
mass operator cast(point M)

Cast point to mass point.
[Browse code]
##### cast(point[])
mass[] operator cast(point[] P)

Cast point[] to mass[].
[Browse code]
##### *(coordsys,pair)
pair operator *(coordsys R, pair p)

Return the coordinates of 'p' given in the xy - coordinates 'R'. For example, if R = cartesiansystem((1, 2), (1, 0), (0, 1)), R * (0, 0) is (1, 2).
[Browse code]
##### /(pair,coordsys)
pair operator /(pair p, coordsys R)

Return the xy - coordinates of 'p' relatively to the coordinate system 'R'. For example, if R = cartesiansystem((1, 2), (1, 0), (0, 1)), (0, 0)/R is (-1, -2).
[Browse code] Example 0004
##### cast(explicit vector)
pair operator cast(explicit vector v)

Cast vector to pair (the coordinates of 'v' in the default coordinate system).
[Browse code]
##### cast(point)
pair operator cast(point P)

Cast point to pair.
[Browse code]
##### cast(point[])
pair[] operator cast(point[] P)

Cast point[] to pair[].
[Browse code]
##### *(transform,parabola)
parabola operator *(transform t, parabola p)

Provide transform * parabola.
[Browse code]
##### cast(conic)
parabola operator cast(conic co)

Cast a conic to a parabola.
[Browse code]
##### *(coordsys,path)
path operator *(coordsys R, path g)

Return the reconstructed path applying R * pair to each node, pre and post control point of 'g'.
[Browse code] Example 0027
##### *(inversion,triangle)
path operator *(inversion i, triangle t)

Provide inversion * triangle.
[Browse code]
##### cast(circle)
path operator cast(circle c)

Cast circle to path.
[Browse code]
##### cast(conic)
path operator cast(conic co)

Cast conic section to path.
[Browse code]
##### cast(ellipse)
path operator cast(ellipse el)

Cast ellipse to path.
[Browse code]
##### cast(explicit arc)
path operator cast(explicit arc a)

Cast arc to path.
[Browse code]
##### cast(hyperbola)
path operator cast(hyperbola h)

Cast hyperbola to path. If possible, the returned path is restricted to the actual bounding box of the current picture unless the variables 'h.bmin' and 'h.bmax' are set; in this case the bounding box of box(h.bmin, h.bmax) is used instead. Only the branch on the side of 'h.F1' is considered.
[Browse code]
##### cast(mass)
path operator cast(mass M){return M.M;}
Cast mass point to path.
[Browse code]
##### cast(parabola)
path operator cast(parabola p)

Cast parabola to path. If possible, the returned path is restricted to the actual bounding box of the current picture if the variables 'p.bmin' and 'p.bmax' are not set else the bounding box of box(p.bmin, p.bmax) is used instead.
[Browse code]
##### cast(point)
path operator cast(point p)

Cast point to path.
[Browse code]
##### *(explicit point,explicit pair)
point operator *(explicit point P1, explicit pair p2)

Provide 'point * pair'. The pair 'p2' is supposed to be the coordinates of the point in the coordinates system of 'P1'. 'pair * point' is also defined.
[Browse code]
##### *(explicit point,explicit point)
point operator *(explicit point P1, explicit point P2)

Provide 'point * point'. The resulted mass is the mass of P2
[Browse code]
##### *(inversion,point)
point operator *(inversion i, point P)

Provide inversion * point.
[Browse code]
##### *(real,explicit point)
point operator *(real x, explicit point P)

Multiply the coordinates (not the mass) of 'P' by 'x'.
[Browse code]
##### *(transform,explicit point)
point operator *(transform t, explicit point P)

Provide 'transform * point'. Note that the transforms scale, xscale, yscale and rotate are carried out relatively the default coordinate system 'defaultcoordsys' which is not desired for point defined in an other coordinate system. On can use scale(real, point), xscale(real, point), yscale(real, point), rotate(real, point), scaleO(real), xscaleO(real), yscaleO(real) and rotateO(real) (described further) to change the coordinate system of reference.
[Browse code]
##### +(explicit pair,explicit vector)
point operator +(explicit pair m, explicit vector v)

The pair 'm' is supposed to be the coordinates of a point in the current coordinates system 'currentcoordsys'. Return this point shifted by the vector 'v'.
[Browse code]
##### +(explicit point,explicit pair)
point operator +(explicit point P1, explicit pair p2)

Provide 'point + pair'. The pair 'p2' is supposed to be coordinates relatively to the coordinates system of 'P1'. The mass is not changed.
[Browse code]
##### +(explicit point,explicit point)
point operator +(explicit point P1, explicit point P2)

Provide 'point + point'. If the two points haven't the same coordinate system, a warning is sent and the returned point has the default coordinate system 'defaultcoordsys'. The masses are added.
[Browse code]
##### +(explicit point,explicit vector)
point operator +(point M, explicit vector v)

Return 'M' shifted by 'v'.
[Browse code]
##### -(explicit pair,explicit vector)
point operator -(explicit pair m, explicit vector v)

The pair 'm' is supposed to be the coordinates of a point in the current coordinates system 'currentcoordsys'. Return this point shifted by the vector '-v'.
[Browse code]
##### -(explicit point)
point operator -(explicit point P)

-P. The mass is inchanged.
[Browse code]
##### -(explicit point,explicit pair)
point operator -(explicit point P1, explicit pair p2)

Provide 'point - pair'. The pair 'p2' is supposed to be coordinates relatively to the coordinates system of 'P1'.
[Browse code]
##### -(explicit point,explicit point)
point operator -(explicit point P1, explicit point P2)

Provide 'point - point'.
[Browse code]
##### -(explicit point,explicit vector)
point operator -(point M, explicit vector v)

Return 'M' shifted by '-v'.
[Browse code]
##### /(explicit point,real)
point operator /(explicit point P, real x)

Divide the coordinates (not the mass) of 'P' by 'x'.
[Browse code]
##### /(real,explicit point)
point operator /(real x, explicit point P)

[Browse code]
##### cast(mass)
point operator cast(mass m)

Cast mass point to point.
[Browse code]
##### cast(pair)
point operator cast(pair p)

Cast pair to point relatively to the current coordinate system 'currentcoordsys'.
[Browse code]
##### cast(trilinear)
point operator cast(trilinear tri)

Cast trilinear to point. One may use the routine 'point(trilinear)' to force the casting.
[Browse code]
##### cast(vector)
point operator cast(vector v)

Cast vector 'v' to point 'M' so that OM = v.
[Browse code]
##### cast(vertex)
point operator cast(vertex V)

Cast vertex to point. Most routine with point parameters works with vertex parameters.
[Browse code]
##### cast(mass[])
point[] operator cast(mass[] m)

Cast mass[] to point[].
[Browse code]
##### cast(pair[])
point[] operator cast(pair[] p)

Cast pair[] to point[] relatively to the current coordinate system 'currentcoordsys'.
[Browse code]
##### ^(point,explicit circle)
real operator ^(point M, explicit circle c)

The power of 'M' with respect to the circle 'c'
[Browse code]
##### cast(line)
segment operator cast(line l)

Cast line 'l' to segment [l.A l.B].
[Browse code]
##### *(transform,triangle)
triangle operator *(transform T, triangle t)

Provide transform * triangle.
[Browse code]
##### *(explicit point,explicit vector)
vector operator *(explicit point M, explicit vector v)

Provide point * vector
[Browse code]
##### *(real,explicit vector)
vector operator *(real x, explicit vector v)

Provide real * vector.
[Browse code]
##### *(transform t,explicit vector)
vector operator *(transform t, explicit vector v)

Provide transform * vector.
[Browse code]
##### +(explicit vector,explicit vector)
vector operator +(explicit vector v1, explicit vector v2)

Provide vector + vector. If the two vector haven't the same coordinate system, the returned vector is relative to the default coordinate system (without warning).
[Browse code]
##### -(explicit vector)
vector operator -(explicit vector v)

Provide -v.
[Browse code]
##### -(explicit vector, explicit vector)
vector operator -(explicit vector v1, explicit vector v2)

Provide vector - vector. If the two vector haven't the same coordinate system, the returned vector is relative to the default coordinate system (without warning).
[Browse code]
##### /(explicit vector,real)
vector operator /(explicit vector v, real x)

Provide vector/real
[Browse code]
##### cast(explicit point)
vector operator cast(explicit point v)

A point can be interpreted like a vector using the code '(vector)a_point'.
[Browse code]
##### cast(pair)
vector operator cast(pair v)

Cast pair to vector relatively to the current coordinate system 'currentcoordsys'.
[Browse code]