Skip to content

Latest commit

 

History

History
106 lines (91 loc) · 4.54 KB

README.md

File metadata and controls

106 lines (91 loc) · 4.54 KB

micro{tess}

mac-os ubuntu windows

Fast, Slim, Embeddable, Allocator-aware, Headers files only C++11 geometry tesselation library for vector graphics, that can run on any 32/64 bits computer with or without FPU.
No standard library required.

check out our website at micro-gl.github.io/docs/micro-tess/

Features

Language       

  • C++11, does not use any STL library and standard library.
  • Headers only library
  • Most functions are templates, which means you compile only what is used
  • Compile-time polymorphism (no runtime virtual methods)
  • Support for 32 bits and 64 bits
  • Self contained and modular.

Geometry       

  • Tesselation in any precision, fixed point precision, float or double.
  • BiQuadratic/BiCubic Bezier Patch triangle Tessellation
  • Quadratic/Cubic Bezier curve divider
  • Elliptic Arc Divider
  • Ear Clipping Tessellation for Simple (convex or concave) polygons
  • X/Y Montone Tessellation for Monotone polygons
  • Fan Triangulation for Convex polygons
  • Stroke Tessellation with dashes (also supported with Path object)
  • Fill Tessellation for any type of multi polygons using even-odd and non-zero rule
  • Path object to easily define vector graphics and tessellate them using fill or stroke

Extra       

  • Packed with fixed precision numbers Q class
  • Computes boundary information for quick AA.
  • Packed with triangles iterator for regular, fan and strip batch triangles
  • Packed with many working examples

Installing micro{tess}

micro-tess is a headers only library, which gives the following install possibilities:

  1. Using cmake to invoke the install target, that will copy everything in your system via
$ mkdir cmake-build-release
$ cd cmake-build-release
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ cmake --install .
  1. Copying the include/micro-tess to anywhere you want.

Consuming micro{tess}

Following options are available:

  1. copy the project to a sub folder of your project. inside your CMakeLists.txt add
add_subdirectory(/path/to/micro-tess)
target_link_libraries(your_app micro-tess)
  1. If you installed micro{tess} with option 1 (see above) at your system, you can instead
find_package(micro-tess CONFIG REQUIRED)
target_link_libraries(your_app micro-tess::micro-tess)
  1. If you have not installed, you can add in your app's CMakeLists.txt
target_include_directories(app path/to/micro-tess/folder/include/)
  1. If you manually copied the include/micro-tess to the default system include path,
    you can use cmake/Findmicro-tess.cmake to automatically create the cmake targets
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/path/to/Findmicro-tess/folder)
find_package(micro-tess REQUIRED)
target_link_libraries(your_app micro-tess::micro-tess)
  1. Just copy the include/micro-tess into a sub folder of your project and include the header
    files you need with relative path in your source files.

Running Examples

First make sure you have

  • SDL2 installed at your system.
  • microgl installed at your system.
  • cmake installed at your system.

There are two ways:

  1. Use your favourite IDE to load the root CMakeLists.txt file, and then it
    will pick up all of the targets, including the examples
  2. Using the command line:
$ mkdir cmake-build-release
$ cd cmake-build-release
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ cmake --build . --target <example_name>
$ ../examples/bin/example_name
Author: Tomer Shalev, tomer.shalev@gmail.com, all rights reserved (2021)