.. _program_listing_file_src_misc_discretizer.h: Program Listing for File discretizer.h ====================================== |exhale_lsh| :ref:`Return to documentation for file ` (``src/misc/discretizer.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include #include #include "tal/arrays.h" #include "tal/vector3.h" #include "tal/vector3i.h" namespace sota { using DiscreteVertex = Vector3i; using Distance = float; using DiscreteVertexToDistance = std::map; using DiscreteVertexToNormals = std::map>; class VertexToNormalDiscretizer { public: VertexToNormalDiscretizer(float step) : _step(step) {} static DiscreteVertex get_discrete_vertex(Vector3 v, float step); void discretize(Vector3Array vertices, std::vector& normals) { int size = vertices.size(); for (int i = 0; i < size; ++i) { Vector3 v = vertices[i]; Vector3& n = normals[i]; auto p = get_discrete_vertex(v, _step); _discretized[p].push_back(&n); } } DiscreteVertexToNormals get() { return _discretized; } private: DiscreteVertexToNormals _discretized; float _step; }; } // namespace sota