Next: Guides and paths, Up: Programming
Asymptote supports the following data types (in addition to
user-defined types):
voidbooltrue and
false. For example:
bool b=true;
defines a boolean variable b and initializes it to the value
true. If no initializer is given:
bool b;
the value false is assumed.
int0
is assumed.
real0.0.
pair(x,y).
The real and imaginary parts of a pair z can read as z.x
and z.y. We say that x and y are virtual members of
the data element pair; they cannot be directly modified, however.
The implicit initializer for type pair is (0.0,0.0).
There are a number of ways to take the complex conjugate of a pair:
pair z=(3,4);
z=(z.x,-z.y);
z=z.x-I*z.y;
z=conj(z);
A number of built-in functions are defined for pairs:
pair conj(pair z)z;
real length(pair z)|z| of its argument z.
For example,
pair z=(3,4);
write(length(z));
produces the result 5. A synonym for length(pair) is abs(pair);
real angle(pair z)z in radians in the interval
[-pi,pi];
real degrees(pair z)z in degrees in the interval [0,360);
real Degrees(pair z)z in degrees in the interval [0,360),
or 0 if z.x=z.y=0 (rather than producing an error);
pair unit(pair z)z;
pair expi(real angle)angle measured in radians;
pair dir(real angle)angle measured in degrees;
real xpart(pair z)z.x;
real ypart(pair z)z.y;
real dot(pair z, pair w)z.x*z.x+z.y*z.y;
pair minbound(pair z, pair w)(min(z.x,w.x),min(z.y,w.y));
pair maxbound(pair z, pair w)(max(z.x,w.x),max(z.y,w.y)).
triple(x,y,z) used for
three-dimensional drawings. The respective components of a triple
v can read as v.x, v.y, and v.z.
Here are the built-in functions for triples:
real length(triple v)|v| of the vector v.
A synonym for length(triple) is abs(triple);
real polar(triple v)v measured from the z axis in radians;
real azimuth(triple v)v measured from the x axis in radians;
real colatitude(triple v)v measured from the z axis in degrees;
real latitude(triple v)v measured from the xy plane in degrees;
real longitude(triple v)v measured from the x axis in degrees;
real Longitude(triple v)v in degrees, or 0 if
v.x=v.y=0 (rather than producing an error);
triple unit(triple v)v;
triple expi(real colatitude, real longitude)(colatitude,longitude)
measured in radians;
triple dir(real colatitude, real longitude)(colatitude,longitude)
measured in degrees;
real xpart(triple v)v.x;
real ypart(triple v)v.y;
real zpart(triple v)v.z;
real dot(triple u, triple v)u.x*v.x+u.y*v.y+u.z*v.z;
triple cross(triple u, triple v)(u.y*v.z-u.z*v.y,u.z*v.x-u.x*v.z,u.x*v.y-v.x*u.y);
triple minbound(triple u, triple v)(min(u.x,v.x),min(u.y,v.y),min(u.z,v.z));
triple maxbound(triple u, triple v)(max(u.x,v.x),max(u.y,v.y),max(u.z,v.z)).
stringstring class.
Strings delimited by double quotes (") are subject to the
following mapping to allow the use of double quotes in TeX (e.g. for
using the babel package, see babel):
Strings delimited by single quotes (') have the same mappings as
character strings in ANSI C:
The implicit initializer for type string is the empty string "".
In the following string functions, position 0 denotes the start of the string.
int length(string s)s;
int find(string s, string t, int pos=0)t in string
s at or after position pos, or -1 if t is not a
substring of s;
int rfind(string s, string t, int pos=-1)t in string
s at or before position pos (if pos=-1, at the end
of the string s), or -1 if t is not a substring of s;
string insert(string s, int pos, string t)t at position
pos in s;
string erase(string s, int pos, int n)n
(if n=-1, to the end of the string s) at
position pos in s;
string substr(string s, int pos, int n=-1)s starting at position pos
and of length n (if n=-1, until the end of the
string s);
string reverse(string s)s;
string replace(string s, string before, string after)before in the
string s changed to the string after;
string replace(string s, string[][] table)s all
occurrences of the string before in an array table of
string pairs {before,after} to the corresponding
string after;
string format(string s, int n)n formatted according to the C-style
format string s;
string format(string s, real x)x formatted according to the C-style format
string s (see the documentation for the C-function
fprintf), except that only one data field is allowed, trailing
zeros are removed by default (unless # is specified) and TeX
is used to typeset scientific notation;
string time(string s)s. For example,
write(time("%a %b %d %H:%M:%S %Z %Y"));
outputs the time in the default format of the UNIX date command.
As in C/C++, complicated types may be abbreviated with typedef
(see the example in Functions).