Skip to content
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
101 lines (74 sloc) 2.73 KB

#lib_2d A c++ library for anything related to points within the 2d space (using floating point data types)
using Catch as testing framework

##version 0.9.1

tested for:

long double

##classes currently, the following classes are supported:

Point<T> //a point defined with two coordinates (x and y)  
PointCloud<T> //a collection Points, without topological information
OrderedPointCloud<T> //a PointCloud with additional information regarding sorting and filtering of points
KdTree<T> //search tree to quickly find nearest neighbors

//subclasses of PointCloud
LineSegment<T> //a line segment defined by start and end point
Rectangle<T> //a rectangle defined by width, height and center
Arc<T> //an arc defined by diameter, center, start- and end angle
Ellipse<T> //an ellipse
InterpolationBezier<T> //a bezier curve interpolation  
InterpolationLinear<T> //a linear interpolation
InvolutCircle<T> //involut curve of a circle

some of the supported methods:

move_by(...) //moves the Point or PointCloud  
mirror_vertically(...) //mirrors the Point or PointCloud at a vertical line (horizontally and point also supported)  
rotate(...) //rotate by angle around a center  
to_string(...) //write coordinates to a string  
from_string(...) //parse from a string
distance_to(...) //calculate distances between points
load(...) //load coordinates from file
to_file(...) //write coordinates to file  
bounding_box(...)  //the minimum bounding rectangle of a PointCloud  
convex_hull(...) //calculate the convex hull of a PointCloud  
concave_hull(...) //compareable to the convex hull, while better following the shape of a pointcloud
intersections_with(...) //intersections between paths  
sort_x(...) //sort by x (or y)  
range(from,to) //get ranges of PointCloud

also chainable:


##compatible with other containers

vector< Point <T> > vec = vector<Point <T> >(path.begin(), path.end());  
PointCloud<T> path = PointCloud<T>(vec.begin(), vec.end());

##operator overloads

== != //equality  
+ += //appending to PointCloud  
[] //access elements of PointCloud
std::cout << PointCloud<T> << Point<T>; //overloads for streams

##using lib_2d add inc/ to your include path and #include lib_2d.h within your code
/tests/test_lib_2d.cpp also provides a basic usage example

##testing make tests
you can also use
make clean

If you find any bugs, feel free to open an issue
If you'd like other PointClouds than Arc etc. open an issue
Also feel free to open a pull request, in case you added / fixed something yourself

You can’t perform that action at this time.