Arhn - архитектура программирования

rtree индексируемое утверждение

Вот кусок моего кода. Я пытаюсь создать дерево rtree для объектов класса вершин RTreeVertex.

class Entity {

public:
  int num;
public:
  Entity(int nr): num(nr){ }
  virtual ~Entity(){}
   bool operator==(const Entity& b)
   {
     return num == b.num;
   } 
};


class Vertex : public Entity {

public : 
  struct Coord{
  double X, Y, Z;  
  }Pos;

  Vertex(int num=0, double X=0., double Y=0., double Z=0.): Entity (num)
  {
    Pos.X = X;
    Pos.Y = Y;
    Pos.Z = Z;
  }
};

вот как я объявляю rtree:

#include <boost/geometry/index/rtree.hpp>
namespace bgi = boost::geometry::index;
bgi::rtree< Vertex, bgi::linear<32> > RTreeVertex;

но я получаю сообщение об ошибке, что vertec не индексируется.

и еще один общий вопрос: стоит ли использовать rtree для хранения данных, связанных с сеткой?


Ответы:


1

Вы должны зарегистрировать свой класс точек с геометрией повышения. Он создает множество черт для вашего класса. Я проверил это, это работает.

    class Vertex : public Entity {

    public : 
            double X, Y, Z;  

        Vertex(int num=0, double x=0., double y=0., double z=0.): Entity (num)
        {
            X = x;
            Y = y;
            Z = z;
        }
    };

BOOST_GEOMETRY_REGISTER_POINT_3D( Vertex, double, bg::cs::cartesian, X, X, X );
#include <boost/geometry/index/rtree.hpp>
namespace bgi = boost::geometry::index;
bgi::rtree< Vertex, bgi::linear<32> > RTreeVertex;

Мне не удалось заставить его работать с X,Y,Z в структуре с Pos::X..., возможно, есть способ. Вы можете присоединиться к группе геометрии на boost.org. Они специалисты по геометрии.

Приложение: Мне было любопытно, поэтому я посмотрел, как работает РЕГИСТРАЦИЯ.. С:

BOOST_GEOMETRY_REGISTER_POINT_3D( Vertex, double, bg::cs::cartesian, Pos.X, Pos.Y, Pos.Z );

Вы можете использовать свою структуру для своих x, y, z.

И пространство имен bg = boost::geometry;

это пространство имен, которое я использовал выше

17.03.2016
  • Спасибо за ответ, у меня есть классы Line и Surface, которые также являются производными от класса Entity. Как бы я зарегистрировал их и в геометрии повышения? 17.03.2016
  • загляните в: boost\geometry\geometry\register все макросы для регистрации классов находятся там и geometry pdf, если вы хотите добавить собственные черты. 17.03.2016
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..