Spec-Zone.ru › PointCloudLibrary

Octree класс плотности облака точек Подробнее...

#include <pcl/octree/octree_pointcloud_density.h>

Inheritance graph
[легенда]
Collaboration graph
[легенда]

Открытые функции-члены

OctreePointCloudDensity (const double resolution_arg)
Конструктор класса OctreePointCloudDensity. Подробнее...
~OctreePointCloudDensity () override=default
Пустой деструктор класса. Подробнее...
uindex_t getVoxelDensityAtPoint (const PointT &point_arg) const
Возвращает количество точек в вокселе листового узла, адресуемом точкой. Подробнее...
- Открытые функции-члены, унаследованные от pcl::octree::OctreePointCloud< PointT, OctreePointCloudDensityContainer, OctreeContainerEmpty >
OctreePointCloud (const double resolution_arg)
Конструктор октодерева облака точек. Подробнее...
void setInputCloud (const PointCloudConstPtr &cloud_arg, const IndicesConstPtr &indices_arg=IndicesConstPtr())
Задает указатель на входной набор данных. Подробнее...
IndicesConstPtr const getIndices () const
Возвращает указатель на используемый вектор индексов. Подробнее...
PointCloudConstPtr getInputCloud () const
Возвращает указатель на входной набор данных облака точек. Подробнее...
void setEpsilon (double eps)
Задает точность epsilon поиска (границу погрешности) для поиска ближайших соседей. Подробнее...
double getEpsilon () const
Возвращает точность epsilon поиска (границу погрешности) для поиска ближайших соседей. Подробнее...
void setResolution (double resolution_arg)
Задает или изменяет разрешение вокселей октодерева. Подробнее...
double getResolution () const
Возвращает разрешение вокселей октодерева. Подробнее...
uindex_t getTreeDepth () const
Возвращает максимальную глубину октодерева. Подробнее...
void addPointsFromInputCloud ()
Добавляет точки из входного облака точек в октодерево. Подробнее...
void addPointFromCloud (uindex_t point_idx_arg, IndicesPtr indices_arg)
Добавляет точку с указанным индексом из входного облака точек в октодерево. Подробнее...
void addPointToCloud (const PointT &point_arg, PointCloudPtr cloud_arg)
Одновременно добавляет точку в октодерево и входное облако точек. Подробнее...
void addPointToCloud (const PointT &point_arg, PointCloudPtr cloud_arg, IndicesPtr indices_arg)
Одновременно добавляет точку в октодерево и входное облако точек. Подробнее...
bool isVoxelOccupiedAtPoint (const PointT &point_arg) const
Проверяет, существует ли воксель в указанной точке. Подробнее...
bool isVoxelOccupiedAtPoint (const double point_x_arg, const double point_y_arg, const double point_z_arg) const
Проверяет, существует ли воксель по заданным координатам точки. Подробнее...
bool isVoxelOccupiedAtPoint (const index_t &point_idx_arg) const
Проверяет, существует ли воксель для указанной точки из входного облака. Подробнее...
void deleteTree ()
Удаляет структуру октодерева и его листовые узлы. Подробнее...
uindex_t getOccupiedVoxelCenters (AlignedPointTVector &voxel_center_list_arg) const
Возвращает вектор PointT с центрами всех занятых вокселей. Подробнее...
uindex_t getApproxIntersectedVoxelCentersBySegment (const Eigen::Vector3f &origin, const Eigen::Vector3f &end, AlignedPointTVector &voxel_center_list, float precision=0.2)
Возвращает вектор PointT с центрами вокселей, пересекаемых отрезком. Подробнее...
void deleteVoxelAtPoint (const PointT &point_arg)
Удаляет листовой узел / воксель в указанной точке. Подробнее...
void deleteVoxelAtPoint (const index_t &point_idx_arg)
Удаляет листовой узел / воксель в указанной точке из входного облака. Подробнее...
void defineBoundingBox ()
Определяет размеры набора данных облака точек и задает соответствующую ограничивающую рамку для октодерева. Подробнее...
void defineBoundingBox (const double min_x_arg, const double min_y_arg, const double min_z_arg, const double max_x_arg, const double max_y_arg, const double max_z_arg)
Задает ограничивающую рамку для октодерева. Подробнее...
void defineBoundingBox (const double max_x_arg, const double max_y_arg, const double max_z_arg)
Задает ограничивающую рамку для октодерева. Подробнее...
void defineBoundingBox (const double cubeLen_arg)
Задает кубическую ограничивающую рамку для октодерева. Подробнее...
void getBoundingBox (double &min_x_arg, double &min_y_arg, double &min_z_arg, double &max_x_arg, double &max_y_arg, double &max_z_arg) const
Возвращает ограничивающую рамку октодерева. Подробнее...
double getVoxelSquaredDiameter (uindex_t tree_depth_arg) const
Вычисляет квадрат диаметра вокселя на заданной глубине дерева. Подробнее...
double getVoxelSquaredDiameter () const
Вычисляет квадрат диаметра вокселя на глубине листового уровня. Подробнее...
double getVoxelSquaredSideLen (uindex_t tree_depth_arg) const
Вычисляет квадрат длины стороны куба вокселя на заданной глубине дерева. Подробнее...
double getVoxelSquaredSideLen () const
Вычисляет квадрат длины стороны куба вокселя на уровне листьев. Подробнее...
void getVoxelBounds (const OctreeIteratorBase< OctreeBase< OctreePointCloudDensityContainer, OctreeContainerEmpty > > &iterator, Eigen::Vector3f &min_pt, Eigen::Vector3f &max_pt) const
Сформировать границы текущего вокселя итератора октодерева. Подробнее...
void enableDynamicDepth (std::size_t maxObjsPerLeaf)
Включить динамическую структуру октодерева. Подробнее...
- Общедоступные функции-члены, унаследованные от pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >
Iterator begin (uindex_t max_depth_arg=0u)
ConstIterator begin (uindex_t max_depth_arg=0u) const
ConstIterator cbegin (uindex_t max_depth_arg=0u) const
const Iterator end ()
const ConstIterator end () const
const ConstIterator cend () const
LeafNodeDepthFirstIterator leaf_depth_begin (uindex_t max_depth_arg=0u)
ConstLeafNodeDepthFirstIterator leaf_depth_begin (uindex_t max_depth_arg=0u) const
const LeafNodeDepthFirstIterator leaf_depth_end ()
const ConstLeafNodeDepthFirstIterator leaf_depth_end () const
DepthFirstIterator depth_begin (uindex_t max_depth_arg=0u)
ConstDepthFirstIterator depth_begin (uindex_t max_depth_arg=0u) const
const DepthFirstIterator depth_end ()
const ConstDepthFirstIterator depth_end () const
BreadthFirstIterator breadth_begin (uindex_t max_depth_arg=0u)
ConstBreadthFirstIterator breadth_begin (uindex_t max_depth_arg=0u) const
const BreadthFirstIterator breadth_end ()
const ConstBreadthFirstIterator breadth_end () const
FixedDepthIterator fixed_depth_begin (uindex_t fixed_depth_arg=0u)
ConstFixedDepthIterator fixed_depth_begin (uindex_t fixed_depth_arg=0u) const
const FixedDepthIterator fixed_depth_end ()
const ConstFixedDepthIterator fixed_depth_end () const
LeafNodeBreadthFirstIterator leaf_breadth_begin (uindex_t max_depth_arg=0u)
ConstLeafNodeBreadthFirstIterator leaf_breadth_begin (uindex_t max_depth_arg=0u) const
const LeafNodeBreadthFirstIterator leaf_breadth_end ()
const ConstLeafNodeBreadthFirstIterator leaf_breadth_end () const
OctreeBase ()
Конструктор без параметров. Подробнее...
virtual ~OctreeBase ()
Пустой деструктор. Подробнее...
OctreeBase (const OctreeBase &source)
Конструктор копирования. Подробнее...
OctreeBase & operator= (const OctreeBase &source)
Оператор копирования. Подробнее...
void setMaxVoxelIndex (uindex_t max_voxel_index_arg)
Задать максимальное количество вокселей на измерение. Подробнее...
void setTreeDepth (uindex_t max_depth_arg)
Задать максимальную глубину октодерева. Подробнее...
uindex_t getTreeDepth () const
Получить максимальную глубину октодерева. Подробнее...
LeafContainerT * createLeaf (uindex_t idx_x_arg, uindex_t idx_y_arg, uindex_t idx_z_arg)
Создать новый листовой узел в точке (idx_x_arg, idx_y_arg, idx_z_arg). Подробнее...
LeafContainerT * findLeaf (uindex_t idx_x_arg, uindex_t idx_y_arg, uindex_t idx_z_arg) const
Найти листовой узел в точке (idx_x_arg, idx_y_arg, idx_z_arg). Подробнее...
bool existLeaf (uindex_t idx_x_arg, uindex_t idx_y_arg, uindex_t idx_z_arg) const
Проверить наличие листового узла в точке (idx_x_arg, idx_y_arg, idx_z_arg). Подробнее...
void removeLeaf (uindex_t idx_x_arg, uindex_t idx_y_arg, uindex_t idx_z_arg)
Удалить листовой узел в точке (idx_x_arg, idx_y_arg, idx_z_arg). Подробнее...
std::size_t getLeafCount () const
Вернуть количество существующих листовых узлов в октодереве. Подробнее...
std::size_t getBranchCount () const
Вернуть количество существующих узлов ветвления в октодереве. Подробнее...
void deleteTree ()
Удалить структуру октодерева и его листовые узлы. Подробнее...
void serializeTree (std::vector< char > &binary_tree_out_arg) const
Сериализует октодерево в выходной двоичный вектор, описывающий структуру его узлов ветвления. Подробнее...
void serializeTree (std::vector< char > &binary_tree_out_arg, std::vector< LeafContainerT * > &leaf_container_vector_arg) const
Сериализует октодерево в выходной двоичный вектор, описывающий структуру его узлов ветвления, и помещает все элементы LeafContainerT, хранящиеся в октодереве, в вектор. Подробнее...
void serializeLeafs (std::vector< LeafContainerT * > &leaf_container_vector_arg)
Выводит вектор всех элементов LeafContainerT, хранящихся в листовых узлах октодерева. Подробнее...
void deserializeTree (std::vector< char > &binary_tree_input_arg)
Десериализует вектор с двоичным описанием октодерева и создает соответствующую структуру октодерева. Подробнее...
void deserializeTree (std::vector< char > &binary_tree_input_arg, std::vector< LeafContainerT * > &leaf_container_vector_arg)
Десериализует двоичное описание октодерева и создает соответствующую структуру октодерева. Подробнее...

Дополнительные унаследованные члены

- Открытые типы, унаследованные от pcl::octree::OctreePointCloud< PointT, OctreePointCloudDensityContainer, OctreeContainerEmpty >
using Base = OctreeBase< OctreePointCloudDensityContainer, OctreeContainerEmpty >
using LeafNode = typename OctreeT::LeafNode
using BranchNode = typename OctreeT::BranchNode
using IndicesPtr = shared_ptr< Indices >
using IndicesConstPtr = shared_ptr< const Indices >
using PointCloud = pcl::PointCloud< PointT >
using PointCloudPtr = typename PointCloud::Ptr
using PointCloudConstPtr = typename PointCloud::ConstPtr
using SingleBuffer = OctreePointCloud< PointT, OctreePointCloudDensityContainer, OctreeContainerEmpty, OctreeBase< OctreePointCloudDensityContainer > >
using Ptr = shared_ptr< OctreePointCloud< PointT, OctreePointCloudDensityContainer, OctreeContainerEmpty, OctreeBase< OctreePointCloudDensityContainer, OctreeContainerEmpty > > >
using ConstPtr = shared_ptr< const OctreePointCloud< PointT, OctreePointCloudDensityContainer, OctreeContainerEmpty, OctreeBase< OctreePointCloudDensityContainer, OctreeContainerEmpty > > >
using AlignedPointTVector = std::vector< PointT, Eigen::aligned_allocator< PointT > >
using AlignedPointXYZVector = std::vector< PointXYZ, Eigen::aligned_allocator< PointXYZ > >
- Открытые типы, унаследованные от pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >
using OctreeT = OctreeBase< LeafContainerT, BranchContainerT >
using BranchNode = OctreeBranchNode< BranchContainerT >
using LeafNode = OctreeLeafNode< LeafContainerT >
using BranchContainer = BranchContainerT
using LeafContainer = LeafContainerT
using Iterator = OctreeDepthFirstIterator< OctreeT >
using ConstIterator = OctreeDepthFirstIterator< const OctreeT >
using LeafNodeIterator = OctreeLeafNodeDepthFirstIterator< OctreeT >
using ConstLeafNodeIterator = OctreeLeafNodeDepthFirstIterator< const OctreeT >
using LeafNodeDepthFirstIterator = OctreeLeafNodeDepthFirstIterator< OctreeT >
using ConstLeafNodeDepthFirstIterator = OctreeLeafNodeDepthFirstIterator< const OctreeT >
using DepthFirstIterator = OctreeDepthFirstIterator< OctreeT >
using ConstDepthFirstIterator = OctreeDepthFirstIterator< const OctreeT >
using BreadthFirstIterator = OctreeBreadthFirstIterator< OctreeT >
using ConstBreadthFirstIterator = OctreeBreadthFirstIterator< const OctreeT >
using FixedDepthIterator = OctreeFixedDepthIterator< OctreeT >
using ConstFixedDepthIterator = OctreeFixedDepthIterator< const OctreeT >
using LeafNodeBreadthFirstIterator = OctreeLeafNodeBreadthFirstIterator< OctreeT >
using ConstLeafNodeBreadthFirstIterator = OctreeLeafNodeBreadthFirstIterator< const OctreeT >
- Защищённые функции-члены, унаследованные от pcl::octree::OctreePointCloud< PointT, OctreePointCloudDensityContainer, OctreeContainerEmpty >
virtual void addPointIdx (uindex_t point_idx_arg)
Добавляет точку с указанным индексом из входного набора данных облака точек в октодерево. Подробнее...
void expandLeafNode (LeafNode *leaf_node, BranchNode *parent_branch, unsigned char child_idx, uindex_t depth_mask)
Добавляет точку с указанным индексом из входного набора данных облака точек в октодерево. Подробнее...
const PointT & getPointByIndex (uindex_t index_arg) const
Получает точку с указанным индексом из входного набора данных облака точек. Подробнее...
OctreePointCloudDensityContainer * findLeafAtPoint (const PointT &point_arg) const
Находит листовой узел октодерева в заданной точке. Подробнее...
void getKeyBitSize ()
Определяет параметры ключа и глубину октодерева на основе заданной ограничивающей рамки. Подробнее...
void adoptBoundingBoxToPoint (const PointT &point_idx_arg)
Расширяет ограничивающую рамку/октодерево, пока точка не окажется внутри. Подробнее...
bool isPointWithinBoundingBox (const PointT &point_idx_arg) const
Проверяет, находится ли заданная точка внутри ограничивающей рамки октодерева. Подробнее...
void genOctreeKeyforPoint (const PointT &point_arg, OctreeKey &key_arg) const
Создаёт ключ октодерева для вокселя в заданной точке. Подробнее...
void genOctreeKeyforPoint (const double point_x_arg, const double point_y_arg, const double point_z_arg, OctreeKey &key_arg) const
Создаёт ключ октодерева для вокселя в заданной точке. Подробнее...
virtual bool genOctreeKeyForDataT (const index_t &data_arg, OctreeKey &key_arg) const
Виртуальный метод для создания ключа октодерева по заданному индексу точки. Подробнее...
void genLeafNodeCenterFromOctreeKey (const OctreeKey &key_arg, PointT &point_arg) const
Создать точку в центре вокселя узла-листа. Подробнее...
void genVoxelCenterFromOctreeKey (const OctreeKey &key_arg, uindex_t tree_depth_arg, PointT &point_arg) const
Создать точку в центре вокселя октодерева на заданном уровне дерева. Подробнее...
void genVoxelBoundsFromOctreeKey (const OctreeKey &key_arg, uindex_t tree_depth_arg, Eigen::Vector3f &min_pt, Eigen::Vector3f &max_pt) const
Вычислить границы вокселя октодерева по ключу октодерева и аргументам глубины дерева. Подробнее...
uindex_t getOccupiedVoxelCentersRecursive (const BranchNode *node_arg, const OctreeKey &key_arg, AlignedPointTVector &voxel_center_list_arg) const
Рекурсивно обойти дерево, найти все узлы-листья и вернуть вектор центров вокселей. Подробнее...
- Защищённые функции-члены, унаследованные от pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >
LeafContainerT * createLeaf (const OctreeKey &key_arg)
Создать узел-лист. Подробнее...
LeafContainerT * findLeaf (const OctreeKey &key_arg) const
Найти узел-лист. Подробнее...
bool existLeaf (const OctreeKey &key_arg) const
Проверить, существует ли узел-лист в октодереве. Подробнее...
void removeLeaf (const OctreeKey &key_arg)
Удалить узел-лист из октодерева. Подробнее...
OctreeNode * getRootNode () const
Получить корневой узел. Подробнее...
bool branchHasChild (const BranchNode &branch_arg, unsigned char child_idx_arg) const
Проверить, указывает ли ветвь на заданный дочерний узел. Подробнее...
OctreeNode * getBranchChildPtr (const BranchNode &branch_arg, unsigned char child_idx_arg) const
Получить указатель на дочерний узел с индексом child_idx. Подробнее...
void setBranchChildPtr (BranchNode &branch_arg, unsigned char child_idx_arg, OctreeNode *new_child_arg)
Назначить ветви новый дочерний узел. Подробнее...
char getBranchBitPattern (const BranchNode &branch_arg) const
Сформировать битовую маску, отражающую наличие указателей на дочерние узлы. Подробнее...
void deleteBranchChild (BranchNode &branch_arg, unsigned char child_idx_arg)
Удалить дочерний узел и все его дочерние узлы из октодерева. Подробнее...
void deleteBranch (BranchNode &branch_arg)
Удалить ветвь и все её дочерние узлы из октодерева. Подробнее...
BranchNode * createBranchChild (BranchNode &branch_arg, unsigned char child_idx_arg)
Создать и добавить новую дочернюю ветвь к ветви. Подробнее...
LeafNode * createLeafChild (BranchNode &branch_arg, unsigned char child_idx_arg)
Создать и добавить новый дочерний узел-лист к ветви. Подробнее...
uindex_t createLeafRecursive (const OctreeKey &key_arg, uindex_t depth_mask_arg, BranchNode *branch_arg, LeafNode *&return_leaf_arg, BranchNode *&parent_of_leaf_arg)
Создать узел-лист по ключу октодерева. Подробнее...
void findLeafRecursive (const OctreeKey &key_arg, uindex_t depth_mask_arg, BranchNode *branch_arg, LeafContainerT *&result_arg) const
Рекурсивно найти заданный узел-лист и вернуть указатель на него. Подробнее...
bool deleteLeafRecursive (const OctreeKey &key_arg, uindex_t depth_mask_arg, BranchNode *branch_arg)
Рекурсивно найти и удалить узел-лист. Подробнее...
void serializeTreeRecursive (const BranchNode *branch_arg, OctreeKey &key_arg, std::vector< char > *binary_tree_out_arg, typename std::vector< LeafContainerT * > *leaf_container_vector_arg) const
Рекурсивно обойти октодерево и вывести его двоичное описание вместе с вектором LeafContainerT узлов-листьев. Подробнее...
void deserializeTreeRecursive (BranchNode *branch_arg, uindex_t depth_mask_arg, OctreeKey &key_arg, typename std::vector< char >::const_iterator &binary_tree_input_it_arg, typename std::vector< char >::const_iterator &binary_tree_input_it_end_arg, typename std::vector< LeafContainerT * >::const_iterator *leaf_container_vector_it_arg, typename std::vector< LeafContainerT * >::const_iterator *leaf_container_vector_it_end_arg)
Рекурсивный метод десериализации структуры октодерева. Подробнее...
virtual void serializeTreeCallback (LeafContainerT &, const OctreeKey &) const
Обратный вызов, выполняемый для каждого узла-листа во время сериализации. Подробнее...
virtual void deserializeTreeCallback (LeafContainerT &, const OctreeKey &)
Обратный вызов, выполняемый для каждого узла-листа во время десериализации. Подробнее...
bool octreeCanResize () const
Проверить, может ли октодерево динамически изменять свою глубину. Подробнее...
- Защищённые атрибуты, унаследованные от pcl::octree::OctreePointCloud< PointT, OctreePointCloudDensityContainer, OctreeContainerEmpty >
PointCloudConstPtr input_
Указатель на входной набор данных облака точек. Подробнее...
IndicesConstPtr indices_
Указатель на вектор индексов используемых точек. Подробнее...
double epsilon_
Точность эпсилон (граница погрешности) при поиске ближайших соседей. Подробнее...
double resolution_
Разрешение октодерева. Подробнее...
double min_x_
double max_x_
double min_y_
double max_y_
double min_z_
double max_z_
bool bounding_box_defined_
Флаг, указывающий, определена ли ограничивающая рамка октодерева. Подробнее...
std::size_t max_objs_per_leaf_
Количество объектов DataT в листовом узле до разделения ветви. Подробнее...
- Защищённые атрибуты, унаследованные от pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >
std::size_t leaf_count_ {0}
Количество листовых узлов
Подробнее...
std::size_t branch_count_ {1}
Количество узлов ветвей
Подробнее...
BranchNode * root_node_
Указатель на корневой узел ветви октодерева
Подробнее...
uindex_t depth_mask_ {0}
Маска глубины, основанная на глубине октодерева
Подробнее...
uindex_t octree_depth_ {0}
Глубина октодерева. Подробнее...
bool dynamic_depth_enabled_ {false}
Включение динамической глубины. Подробнее...
OctreeKey max_key_
Диапазон ключей Подробнее...

Подробное описание

template<typename PointT, typename LeafContainerT = OctreePointCloudDensityContainer, typename BranchContainerT = OctreeContainerEmpty>
class pcl::octree::OctreePointCloudDensity< PointT, LeafContainerT, BranchContainerT >

Класс плотности облака точек Octree

Примечание
Этот класс создаёт октодерево из облака точек (без копирования данных). Сохраняется только количество точек, попадающих в воксель листового узла.
Октодерево облака точек инициализируется с разрешением вокселей. Его ограничивающая рамка корректируется автоматически или может быть задана заранее.
Параметры шаблона
PointT тип точки, используемый в облаке точек
Автор
Julius Kammerl (juliu.nosp@m.s@ka.nosp@m.mmerl.nosp@m..de)

Определение находится в строке 117 файла octree_pointcloud_density.h.

Документация конструктора и деструктора

OctreePointCloudDensity()

template<typename PointT , typename LeafContainerT = OctreePointCloudDensityContainer, typename BranchContainerT = OctreeContainerEmpty>
pcl::octree::OctreePointCloudDensity< PointT, LeafContainerT, BranchContainerT >::OctreePointCloudDensity ( const double resolution_arg )
inline

Конструктор класса OctreePointCloudDensity.

Параметры
resolution_arg разрешение октодерева на самом нижнем уровне

Определение находится в строке 123 файла octree_pointcloud_density.h.

~OctreePointCloudDensity()

template<typename PointT , typename LeafContainerT = OctreePointCloudDensityContainer, typename BranchContainerT = OctreeContainerEmpty>
pcl::octree::OctreePointCloudDensity< PointT, LeafContainerT, BranchContainerT >::~OctreePointCloudDensity ( )
overridedefault

Пустой деструктор класса.

Документация функций-членов

getVoxelDensityAtPoint()

template<typename PointT , typename LeafContainerT = OctreePointCloudDensityContainer, typename BranchContainerT = OctreeContainerEmpty>
uindex_t pcl::octree::OctreePointCloudDensity< PointT, LeafContainerT, BranchContainerT >::getVoxelDensityAtPoint ( const PointT & point_arg ) const
inline

Получить количество точек внутри вокселя листового узла, адресуемого точкой.

Параметры
[in] point_arg точка, задающая адрес вокселя
Возвращает
количество точек, попавших в воксель листового узла

Определение находится в строке 137 файла octree_pointcloud_density.h.

См. также pcl::octree::OctreePointCloud< PointT, OctreePointCloudDensityContainer, OctreeContainerEmpty >::findLeafAtPoint() и pcl::octree::OctreePointCloudDensityContainer::getPointCounter().


Документация этого класса создана на основе следующего файла:
  • pcl/octree/octree_pointcloud_density.h

© 2009–2012, Willow Garage, Inc.
© 2012–, Open Perception, Inc.
Licensed under the BSD License.
https://pointclouds.org/documentation/classpcl_1_1octree_1_1_octree_point_cloud_density.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API