40 lines
1.3 KiB
Markdown
40 lines
1.3 KiB
Markdown
# Basic Geometry
|
|
|
|
## Library of basic geometric computations
|
|
|
|
[Версия на русском языке / Russian version](./README.md)
|
|
|
|
Programming language: C (C99)
|
|
|
|
Version: 0.2.0-dev
|
|
|
|
License: Apache-2.0
|
|
|
|
The main goals of development of the library were:
|
|
|
|
1. Performance
|
|
2. Functionality
|
|
3. Versatility
|
|
|
|
Performance was the main goal of making of the library. That fact affected
|
|
the implementation of the library.
|
|
|
|
For example, the main way to return data structures as a function result
|
|
was chosen to be returning via a parameter, which avoids redundant copying
|
|
of data through the call stack.
|
|
|
|
Also the majority of functions were made as inline functions. That allows
|
|
a compiller to replace a call of some function onto the body of that
|
|
function.
|
|
|
|
The library uses two types of floating point numbers: **float** и **double**
|
|
(**binary32** and **binary64** types of the **IEEE 754** standard). That
|
|
affected the implementation of the library too.
|
|
|
|
The library is implicitly divided into two halves: one half is for data and
|
|
functions of **float** type and another one is for date of th **double** type.
|
|
And there are several bridges connect both of the halves. Those bridges are
|
|
the functions of the type conversion.
|
|
|
|
But there are no functions which use data of different types (*float* and
|
|
*double* at the same time) for the computations.
|