From ab86816005d7b7c44338bfa27975054b45e66cc3 Mon Sep 17 00:00:00 2001 From: Luc Sinet Date: Sun, 10 Jun 2018 16:20:10 +0200 Subject: [PATCH] master #comment Rework the README in preparation for the release. - Add usage section. - Rework the assets, add images for the testbed section. - Complete references to algorithms. --- README.md | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 3d4bac3..3c34863 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@
- logo + logo
## Introduction -Hitbox Builder is a lightweight C++ library aiming to automatizing the process of generating hitboxes. +Hitbox Builder is a lightweight C++ library aiming to automatizing the process of generating hitboxes composed by only convex polygons. It was originally designed for 2D games, but it could also serve different purposes. @@ -17,15 +17,32 @@ Hitbox Builder is distributed under the [MIT License](https://raw.githubusercont - [GCC](https://gcc.gnu.org/) or [Clang](https://clang.llvm.org/) ## Features -- Contour detection -- Polygon builder +- Contour detection ([Marching squares](https://en.wikipedia.org/wiki/Marching_squares)) +- Contour simplification ([Douglas–Peucker](https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm)) - Polygon triangulation ([Ear clipping](https://en.wikipedia.org/wiki/Two_ears_theorem)) - Polygon partitioning (Hertel-Mehlhorn) +Below is a representation of each stage of transformation of the data. +
- logo + logo
+## Usage + +```C++ +// Initialize the builder. +HitboxBuilder::init(); + +// Create a hitbox for the given sprite with an accuracy of 70%. +const auto hitbox = HitboxBuilder::make(sprite, 70, false); + +const auto& convexPolygons = hitbox.body(); +const auto& boundingBox = hitbox.bound(); + +// Use these data as you like. +``` + ## Demos To run the demos, execute the configure script with the option '-t'. @@ -34,6 +51,16 @@ Execute the target HitboxBuilder-tester located in the build directory. Some test bed commands are: - keys to slide between the images. -- keys to increase/decrease the accuracy of the algorithm. +- keys to increase/decrease the accuracy of the +algorithm. +- Space key to toggle the display of the sprite. You can load your own images by adding them to the TestBed/assets/ directory. You will just need to restart the program as they are loaded at the beginning. + +##### Output: + + Input | Output +:-----------------------:|:-------------------------: +![silhouette](https://raw.githubusercontent.com/Tastyep/HitboxBuilder-2D/master/assets/images/input.png) | ![Accuracy gif](https://raw.githubusercontent.com/Tastyep/HitboxBuilder-2D/master/assets/images/accuracy.gif) + **Accuracy = 100** | **Accuracy = 66** +![Italy 100](https://raw.githubusercontent.com/Tastyep/HitboxBuilder-2D/master/assets/images/italy-100.png) | ![Italy 66](https://raw.githubusercontent.com/Tastyep/HitboxBuilder-2D/master/assets/images/italy-66.png)