Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Boost Polygon Library: Coordinate Concept

Boost , ,


Coordinate Concept

coordinate_concept

Чтобы зарегистрировать определенный тип пользователя как модель концепции координации, специализируйтесь на мета-функции геометрической концепции для этого типа.   В приведенном ниже примере CCoordinate регистрируется как модель концепции координации.

Шаблон <>
геометрия структуры_концепт { typedef coordinate_concept type; };

Тип координат, как ожидается, будет интегральным и встроенным численными типами данных, такими как поплавок и int уже имеют специализацию типов понятий в библиотеке.   В координирующих чертах представлены определения типа для соответствующих типов, чтобы позволить библиотеке выбрать лучший тип для кастинга при различных обстоятельствах.   Определение координирования_трасс и его специализация для int показаны ниже.

template
struct coordinate_traits {};

template <>
struct coordinate_traits<int> {
     typedef int coordinate_type;
     typedef long double area_type;
     typedef long long manhattan_area_type;
     typedef unsigned long long unsigned_area_type;
     typedef long long coordinate_difference;
     typedef long double coordinate_distance;
};
[ORIG_END] -->

Используя координирующие черты int библиотека может избежать переполнения и справиться с обычными проблемами, возникающими при программировании целочисленной геометрии.   Для выхода из обычных вопросов существует специальная мета-функция, которая предоставляет библиотеке численный тип, подходящий для точных числовых расчетов.   Он по умолчанию для наиболее точного типа данных, доступных в большинстве компиляторов, длинный двойной, но может быть переопределен, специализируясь на конкретном типе координации.   Использование многоточных рациональных или аналогичных типов данных gmp рекомендуется для численно надежных расчетов в общих алгоритмах многоугольника.

template
struct high_precision_type {
     typedef long double type;
};

Существует только одна общая функция по концепциям координат, эвклидовское расстояние.

template
coordinate_difference euclidean_ distance(coordinate_type_1, coordinate_type_2)

Эта функция возвращает абсолютную величину разницы между двумя координатами.

Примечание: старые версии stl определяют полностью общую функцию расстояния (T, T) для вычисления разницы между двумя итераторами.   Мы были вынуждены назвать нашу дистанционную функцию euclidean_расстояние, чтобы избежать столкновения имен.

Алгоритмический C ac_int<128> является примером определенного пользователем типа данных координат, который удовлетворяет концепцию координат.   В целом тип данных должен определять std::numeric_limits и быть целоподобным.   Типы координат Floating point не поддерживаются всеми алгоритмами и обычно не подходят для использования с библиотекой в настоящее время.

 
Copyright: Copyright © Intel Corporation 2008-2010.
License: Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

Статья Boost Polygon Library: Coordinate Concept раздела может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 02:41:31/0.0059530735015869/1