Библиотека базовых геометрических вычислений для Си (Basic Geometric Computations for C)
Find a file
2024-12-25 13:37:23 +07:00
basic-geometry Приаведение тангенса (tangent) к единому виду с другими сущностями, добавлено комплексное произведение двумерных векторов 2024-12-25 13:37:23 +07:00
basic-geometry-dev Приаведение тангенса (tangent) к единому виду с другими сущностями, добавлено комплексное произведение двумерных векторов 2024-12-25 13:37:23 +07:00
basic-geometry-test Добавлены функции модуля для версоров и кватернионо / Functions of modulus have been added for versors and quaternions 2024-11-25 19:47:45 +07:00
docs Добавлены функции модуля для версоров и кватернионо / Functions of modulus have been added for versors and quaternions 2024-11-25 19:47:45 +07:00
.gitignore Краткое описание проекта / A brief description of the project 2024-11-22 17:43:26 +07:00
Geometry.workspace Переименование проектов / Renaming of projects 2024-11-22 16:47:26 +07:00
GeometryC.sln Переименование проектов / Renaming of projects 2024-11-22 16:47:26 +07:00
LICENSE Дополнения в описание проекта / Some addions in the description of the project 2024-11-22 19:20:18 +07:00
README-Eng.md Описания углов и небольшие правки в библиотеке 2024-11-23 00:34:35 +07:00
README.md Описания углов и небольшие правки в библиотеке 2024-11-23 00:34:35 +07:00

Basic Geometry

Библиотека базовых геометрических вычислений

(English: library of basic geometric computations)

English version / версия на английском языке

Язык программирования: Си (C99)

Версия: 0.2.0-dev

Лицензия: Apache-2.0

Основными целями разработки данной библиотеки были:

  1. Производительность
  2. Функциональность
  3. Универсальность

Производительность была на первом месте, что оказало влияние на особенности реализации библиотеки.

Например, в качестве основного способа возврата структур данных в качестве результата выполнения функции был выбран возврат через параметр, что позволяет избежать избыточного копирования данных через стек вызова.

Также большинство функций выполнены как inline, давая возможность компилятору заменять вызов функции на тело функции.

Библиотека использует два типа чисел с плавающей запятой: float и double (типы binary32 и binary64 стандарта IEEE 754). Что также повлияло на особенности дизайна библиотеки.

Библиотека как бы неявно разделена на две половины - одна половина для данных типа float, а другая - для данных типа double. Но между этими половинами есть мостики - функции преобразования типа.

Однако в библиотеке нет функций, которые используют для вычисления данные разных типов (float и double одновременно).