Next: Guides and paths, Up: Programming
Asymptote
supports the following data types (in addition to
user-defined types):
void
bool
true
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.
int
0
is assumed.
real
0.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);
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 a,pair b)
a.x*b.x+a.y*b.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 a,triple b)
a.x*b.x+a.y*b.y+a.z*b.z
;
triple cross(triple a,triple b)
(a.y*b.z-a.z*b.y,a.z*b.x-a.x*b.z,a.x*b.y-b.x*a.y)
.
string
string
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).