# WFMath

The primary focus of WFMath is geometric objects. Thus, it includes several shapes (boxes, balls, lines), in addition to the basic math objects that are used to build these shapes (points, vectors, matricies).

### Source

The source code for WFMath can be found on Github.

### Geometries

Most of the library classes can be divided into two sorts. The first kind are basic mathematical objects, whose members are all fundamental types. The second kind are shapes, which implement the shape class interface described in doc/shape.h. There are four classes of the first kind:

### Vector<>

A basic mathematical vector

### RotMatrix<>

An orthogonal matrix of determinant 1, useful for describing rotations.

### Point<>

A point in space. This basic class also implements the shape interface in doc/shape.h.

### Quaternion

A quaternion

The shape classes are:

### AxisBox<>

A box oriented parallel to the coordinate axes

### Ball<>

Ball<2> is a circle, Ball<3> is a sphere, etc.

### Segment<>

A line segment, defined by its endpoints

### RotBox<>

Like AxisBox<>, but it can be rotated to arbitrary angles

### Polygon<>

A 2 dimensional polygon contained in a (possibly) larger dimensional space

The library also contains some probability-related functions, as well as wrappers for system time and random number functions.

### Dependencies

WFMath requires an ISO C++ compiler. Atlas-C++ is not required in order to build WFMath, but if it is present then some inline conversion function tests will be built.