/GoTools

GoTools Geometry Toolkit

Primary LanguageCGNU Affero General Public License v3.0AGPL-3.0

----------------------------------------------------------------------------------------------------

GoTools is the name of a collection of C++ libraries related to geometry. The libraries are
organized as a core module with additional modules added on top. The core module contains generic
tools and spline functionality. The additional modules contain functionality for intersections,
approximative implicitization, parametrization, topology, and more.

This toolkit contains the modules gotools-core, gotools-data, igeslib, implicitization,
intersections, isogeometric_model, lrsplines2D, lrsplines3D, parametrization, qualitymodule,
topology, trivariate, trivariatemodel, viewlib and compositemodel. Also included is sisl ttl newmat
for convenience.

The GoTools geometry/spline toolkit was written by the Geometry Group at SINTEF ICT, Department of
Applied Mathematics.

Newmat was written by Robert Davies, http://www.robertnz.com.

Requirements:
* CMake - see: www.cmake.org
* Linux: Tested on the latest LTS version of Ubuntu (with a transition period, currently tested on
  22.04, using gcc version 11.4.0) on x64. It should work with older gcc versions down to 4.8, but
  it is not actively supported. It has been tested to run on ARM64, but it is not actively
  supported.
* Windows: Tested with Visual Studio 2015, 2019 and 2022 on x64. Older versions are not
  supported. It has been tested to run on ARM64 (using x64 emulation), but it is not actively
  supported.
* MacOS: We do not officially support MacOS. It has beed tested to run on ARM64, but it is not
  actively supported.

Dependencies:
* PugiXML (required by compositemodel and its dependencies)
* JsonCpp (required for viewlib only)
* Qt4/Qt5 (required for viewlib only)
* OpenGL (required for viewlib only)
* GLUT (required for viewlib only)
* Boost (required for running the test suite as well as the modules lrspline2D and lrspline3D)

Optional dependencies (disabled by default):
* OpenMP
* spdlog (required if enabling logging)

A few comments on the current distribution:
(1) You can generate doxygen information by typing 'doxygen' in the base directory.
(2) In order to compile/install the library, you need to use CMake. See the INSTALL file.
(3) GoTools provides a file format: g2. Various test applications produce g2 files as output. See
    the Doxygen generated documentation for more information on this format. The viewer application
    'goview' is provided in Viewlib in order to view g2-files.