37 for (
int i = 0; i < number_of_vertices; i++) {
38 uv_coordinate_array[i] = uv(i, 0);
39 uv_coordinate_array[number_of_vertices + i] = uv(i, 1);
53 if (!slim_data.
valid) {
61 int n_pins = pinned_vertex_indices.size();
62 int n_selected_pins = selected_pins.size();
64 Eigen::VectorXi old_pin_indices = slim_data.
b;
65 Eigen::MatrixXd old_pin_positions = slim_data.
bc;
67 slim_data.
b.resize(n_pins);
68 slim_data.
bc.resize(n_pins, 2);
70 int old_pin_pointer = 0;
71 int selected_pin_pointer = 0;
73 for (
int new_pin_pointer = 0; new_pin_pointer < n_pins; new_pin_pointer++) {
75 int pinned_vertex_index = pinned_vertex_indices[new_pin_pointer];
76 slim_data.
b(new_pin_pointer) = pinned_vertex_index;
78 while ((old_pin_pointer < old_pin_indices.size()) &&
79 (old_pin_indices(old_pin_pointer) < pinned_vertex_index))
83 bool old_pointer_valid = (old_pin_pointer < old_pin_indices.size()) &&
84 (old_pin_indices(old_pin_pointer) == pinned_vertex_index);
86 while ((selected_pin_pointer < n_selected_pins) &&
87 (selected_pins[selected_pin_pointer] < pinned_vertex_index))
89 ++selected_pin_pointer;
91 bool pin_selected = (selected_pin_pointer < n_selected_pins) &&
92 (selected_pins[selected_pin_pointer] == pinned_vertex_index);
94 if (!pin_selected && old_pointer_valid) {
95 slim_data.
bc.row(new_pin_pointer) = old_pin_positions.row(old_pin_pointer);
98 slim_data.
bc(new_pin_pointer, 0) = pinned_vertex_positions_2D[2 * new_pin_pointer];
99 slim_data.
bc(new_pin_pointer, 1) = pinned_vertex_positions_2D[2 * new_pin_pointer + 1];