diff --git a/MeshLib/MeshEditing/projectMeshOntoPlane.h b/MeshLib/MeshEditing/projectMeshOntoPlane.h index ae269bf49572c734591f547869526e4be001bf79..91ed4ecedf3cb41b8a31aa956542f50d9b31ce0c 100644 --- a/MeshLib/MeshEditing/projectMeshOntoPlane.h +++ b/MeshLib/MeshEditing/projectMeshOntoPlane.h @@ -39,16 +39,20 @@ MeshLib::Mesh* projectMeshOntoPlane(MeshLib::Mesh const& mesh, { std::size_t const n_nodes (mesh.getNumberOfNodes()); std::vector<MeshLib::Node*> const& nodes (mesh.getNodes()); - MathLib::Vector3 normal (plane_normal); + Eigen::Vector3d normal({plane_normal[0], plane_normal[1], plane_normal[2]}); normal.normalize(); std::vector<MeshLib::Node*> new_nodes; new_nodes.reserve(n_nodes); for (std::size_t i=0; i<n_nodes; ++i) { - MeshLib::Node const& node(*nodes[i]); - MathLib::Vector3 const v(plane_origin, node); - double const dist (MathLib::scalarProduct(v,normal)); - new_nodes.push_back(new MeshLib::Node(node - dist * normal)); + auto const node = + Eigen::Map<Eigen::Vector3d const>(nodes[i]->getCoords()); + Eigen::Vector3d const v = + node - Eigen::Map<Eigen::Vector3d const>(plane_origin.getCoords()); + double const dist(v.dot(normal)); + Eigen::Vector3d const new_node = node - dist * normal; + new_nodes.push_back( + new MeshLib::Node(new_node[0], new_node[1], new_node[2])); } return new MeshLib::Mesh("Projected_Mesh", new_nodes, diff --git a/MeshLib/Node.h b/MeshLib/Node.h index 2ee62b82e039a256d3f7df836a636fa1423a6e09..4a3f465321c5cbe4f690f47f497a897c58e826d3 100644 --- a/MeshLib/Node.h +++ b/MeshLib/Node.h @@ -69,12 +69,6 @@ public: /// Get number of elements the node is part of. std::size_t getNumberOfElements() const { return _elements.size(); } - /// Shift the node according to the displacement vector v. - Node operator-(MathLib::Vector3 const& v) const - { - return Node(_x[0]-v[0], _x[1]-v[1], _x[2]-v[2]); - } - protected: /// Update coordinates of a node. /// This method automatically also updates the areas/volumes of all connected elements.