Example #1
0
size_t detail::addVertex(K3DTree<size_t, float> &vertexTree, std::vector<vec3> &positions,
                         std::vector<vec3> &normals, const vec3 pos) {
    K3DTree<size_t, float>::Node *nearest = vertexTree.findNearest(vec3(pos));
    vec3 p;
    if (nearest) {
        p.x = nearest->getPosition()[0];
        p.y = nearest->getPosition()[1];
        p.z = nearest->getPosition()[2];
    }
    if (!nearest || (glm::distance(p, pos) > glm::epsilon<double>() * 5)) {
        nearest = vertexTree.insert(pos, positions.size());
        positions.push_back(pos);
        normals.push_back(vec3(0, 0, 0));
    }
    return nearest->get();
}