66 GeometryKernel::TriangulationDataStructure& triangulation)
67 : m_nodes_coordinates(PRIMARYMESH_CAST(
mesh)->nodesCoordinates())
68 , m_node_array(node_array)
69 , m_triangulation(triangulation)
74 GeometryKernel::TObjectId getNodeId(
const Node node)
77 std::pair<KnownNodes::iterator, bool> inserter = m_known_nodes.insert(KnownNodes::value_type(inode, NULL_ID));
78 if (inserter.second) {
79 const Real3 coords = m_nodes_coordinates[node];
80 const GeometryKernel::TObjectId new_id = m_triangulation.newVertex(GeometryKernel::Vector(coords.
x, coords.
y, coords.
z));
81 ARCANE_ASSERT(((
Integer)m_node_array.size() == (
Integer)new_id), (
"Non-synchronized GeometryKernel with internal SurfaceImpl [%d vs %d]", new_id, m_node_array.size()));
82 m_node_array.add(node);
83 return (inserter.first->second = new_id);
86 return inserter.first->second;
92 const Real3 node1_coord = m_nodes_coordinates[node1];
93 const Real3 node2_coord = m_nodes_coordinates[node2];
94 const Real3 node3_coord = m_nodes_coordinates[node3];
95 return math::vecMul(node2_coord - node1_coord, node3_coord - node1_coord);
102 GeometryKernel::TriangulationDataStructure& m_triangulation;
104 typedef std::map<Integer, GeometryKernel::TObjectId> KnownNodes;
105 KnownNodes m_known_nodes;