| 111 | } |
| 112 | |
| 113 | void MeshTiler::evaluate_offset_parameters(WireNetwork& wire_network, |
| 114 | const MeshTiler::FuncList& funcs) { |
| 115 | const size_t dim = wire_network.get_dim(); |
| 116 | const size_t num_vertices = wire_network.get_num_vertices(); |
| 117 | const size_t num_unit_vertices = m_unit_wire_network->get_num_vertices(); |
| 118 | |
| 119 | wire_network.add_attribute("vertex_offset", true); |
| 120 | MatrixFr attr_value(num_vertices, dim); |
| 121 | |
| 122 | auto vars_array = extract_attributes(m_mesh); |
| 123 | const MatrixFr& ori_vertices = m_unit_wire_network->get_vertices(); |
| 124 | size_t count=0; |
| 125 | auto vars_itr = vars_array.begin(); |
| 126 | for (auto f : funcs) { |
| 127 | assert(vars_itr != vars_array.end()); |
| 128 | MatrixFr local_offseted_vertices = ori_vertices + |
| 129 | m_params->evaluate_offset(*vars_itr); |
| 130 | attr_value.block(count * num_unit_vertices, 0, |
| 131 | num_unit_vertices, dim) = f(local_offseted_vertices); |
| 132 | count++; |
| 133 | vars_itr++; |
| 134 | } |
| 135 | |
| 136 | attr_value = attr_value - wire_network.get_vertices(); |
| 137 | wire_network.set_attribute("vertex_offset", attr_value); |
| 138 | } |
| 139 |
nothing calls this directly
no test coverage detected