# Crate axgeom [−] [src]

A 2D geometry library. It provides a way to easily extract 1d ranges from a 2d Rectangle based off of the x or y axis. Also provides functions that operate on types that implement Ord, as well has hard coded ones for f32.

## Example

extern crate axgeom; use axgeom::{Rect,Range,Axis,AxisIter,XAXIS,YAXIS}; fn main(){ let rect = Rect::new(30.0,40.0,30.0,40.0); for k in AxisIter::new(){ let r=rect.get_range(k); assert!(r.len()==10.0); } let (r1,r2)=rect.subdivide(35.0,XAXIS); assert!(*r1.get_range(XAXIS)==Range{start:30.0,end:35.0}); assert!(*r1.get_range(YAXIS)==Range{start:30.0,end:40.0}); assert!(*r2.get_range(XAXIS)==Range{start:35.0,end:40.0}); assert!(*r2.get_range(YAXIS)==Range{start:30.0,end:40.0}); }

## Structs

Axis |
An Axis has a value of either X or Y. It is used to look up values in 2d containers. |

AxisIter |
Iterator to iterate over the x and y axises. |

ComputedVec2 |
A wrapper around a Vec2 with the f32 length and length sqr saved. Useful when you want to cache the length computation. |

Range |
A 1d range. Internally represented as start and end. (not start and length) This means that subdivision does not result in any floating point calculations. There is no protection against "degenerate" Ranges where start>end. |

Rect |
Stored as two Ranges. |

Vec2 |
A 2d point made up of f32's with a way to get the value on a particular axis easily. |

VecCont |
A 2d generic container. Elements can be accessed using an Axis. |

XAXIS_S |
The x axis implementation of the AxisTrait |

YAXIS_S |
The y axis implementation of the AxisTrait |

## Constants

XAXIS |
The x axis is internally represented as 0. |

YAXIS |
The y axis internally represented as 1. |

## Traits

AxisTrait |
Axis trait can be used to extract the x or y axis out of a vector when you know the axis as compile time. |