VectorF PointLocator::compute_barycentric_coord(const VectorF& v, size_t elem_idx) { const size_t dim = m_mesh->get_dim(); MatrixF solver = m_barycentric_solvers.block(elem_idx*dim, 0, dim, dim); VectorF last_v = m_last_vertices.row(elem_idx); VectorF sol = solver * (v - last_v); VectorF barycentric_coord(m_vertex_per_element); barycentric_coord.segment(0, dim) = sol; barycentric_coord[dim] = 1.0 - sol.sum(); return barycentric_coord; }