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

Custom Point

Boost , ,

/*
Авторское право 2008 Intel Corporation

На использование, модификацию и распространение распространяется лицензия Boost Software License,
Version 1.0. (См. сопроводительный файл LICENSE_1_0.txt или копию по адресу
http://www.boost.org/LICENSE_1_0.txt).
*/
#include
#include
namespace gtl = boost::polygon;
с использованием усилителя пространства имен::полигон::операторы;

//lets make the body of main from point_usage.cpp
// общая функция, параметризованная по типу точки
template
void test_point() {
    //constructing gtl point
    int x = 10;
    int y = 20;
    //Point pt(x, y);
    Point pt = gtl::construct(x, y);
    assert(gtl::x(pt) == 10);
    == 20;
    // a quick primer in isotropic point access
    typedef gtl::orientation_2d O;
    using gtl:: HORIZONTAL;
    O o = HORIZONTAL;
    assert(gtl::x(pt, o));
    o = o.get_perpendicular();
    assert(o == VERTICAL);
    assert(gtl::y(pt) == gtl::get(pt, o));
    gtl::set(pt, o, 30);
    assert(gtl::y(pt) == 30);
   
    //using some of the library functions
    //Point pt2(10, 30);
    Point pt2 = gtl::construct(10, 30);
   
    gtl::transformationtr(:axis_transformation::SWAP_XY);
    gtl::transform(pt, tr);
    assert(gtl::equivalence::construct(30, 10))
   
    gtl::transformationtr2 = tr.inverse();
    assert(tr == tr2); //SWAP_XY является собственным обратным преобразованием
    gtl::transform(pt, tr2);
    assert(gtl::equivalence(pt, pt2)); // эти две точки снова равны
    gtl::move(pt, o, 10); //move pt 10 units in y
    assert(gtl::manhattan_distance(pt, pt2) == 20); //move pt 10 units in y
    gtl::move(pt, o.get_perpendicular(), 10); //move pt 10 units in x
    assert(gtl::manhattan_distance(
}
   
Теперь давайте объявим наш собственный тип точки
//Бьярн говорит, что если класс не поддерживает
//инвариант, просто используйте структуру.
struct CPoint {
    int x;
    int y;
};
   
//Там, милый простой... но подождите, он ничего не делает
// Как мы используем его, чтобы делать все то, что нужно делать точке?
   
   
// Сначала мы регистрируем его как точку с усилителем полигона
namespace boost {namespace polygon {
    template<>
    структурная геометрия_concept{ typedef point_concept type; };
   
     //Тогда мы специализируемся на чертах точки gtl для нашего типа точки
    шаблон<   struct point_traits<     Type_type;
        Ориентация_2d orient;
                                                         
    &

                                                                                                    &nb Все ваши испытания сделаны для вас.
    Return 0;
}
   
// Теперь вы знаете, как сопоставить тип пользователя с концепцией точки библиотеки
// и как написать общую функцию, параметризованную типом точки
// с использованием библиотечных интерфейсов для доступа к ней.
     

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)

Статья Custom Point раздела может быть полезна для разработчиков на c++ и boost.




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-07-04 17:49:31/0.0035648345947266/0