8.4 math

This module extends Asymptote’s mathematical capabilities with useful functions such as

void drawline(picture pic=currentpicture, pair P, pair Q, pen p=currentpen);

draw the visible portion of the (infinite) line going through P and Q, without altering the size of picture pic, using pen p.

real intersect(triple P, triple Q, triple n, triple Z);

returns the intersection time of the extension of the line segment PQ with the plane perpendicular to n and passing through Z.

triple intersectionpoint(triple n0, triple P0, triple n1, triple P1);

Return any point on the intersection of the two planes with normals n0 and n1 passing through points P0 and P1, respectively. If the planes are parallel, return (infinity,infinity,infinity).

pair[] quarticroots(real a, real b, real c, real d, real e);

returns the four complex roots of the quartic equation ax^4+bx^3+cx^2+dx+e=0.

real time(path g, real x, int n=0, real fuzz=-1)

returns the nth intersection time of path g with the vertical line through x.

real time(path g, explicit pair z, int n=0, real fuzz=-1)

returns the nth intersection time of path g with the horizontal line through (0,z.y).

real value(path g, real x, int n=0, real fuzz=-1)

returns the nth y value of g at x.

real value(path g, explicit pair z, int n=0, real fuzz=-1)

returns the nth x value of g at y=z.y.

real slope(path g, real x, int n=0, real fuzz=-1)

returns the nth slope of g at x.

real slope(path g, explicit pair z, int n=0, real fuzz=-1)

returns the nth slope of g at y=z.y.

int[][] segment(bool[] b) returns the indices of consecutive true-element segments of bool[] b.

real[] partialsum(real[] a)

returns the partial sums of a real array a.

real[] partialsum(real[] a, real[] dx)

returns the partial dx-weighted sums of a real array a.

bool increasing(real[] a, bool strict=false)

returns, if strict=false, whether i > j implies a[i] >= a[j], or if strict=true, whether i > j implies implies a[i] > a[j].

int unique(real[] a, real x)

if the sorted array a does not contain x, insert it sequentially, returning the index of x in the resulting array.

bool lexorder(pair a, pair b)

returns the strict lexicographical partial order of a and b.

bool lexorder(triple a, triple b)

returns the strict lexicographical partial order of a and b.