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(); }