49 if (!slim_data.
valid) {
57 int n_pins = pinned_vertex_indices.size();
58 int n_selected_pins = selected_pins.size();
60 Eigen::VectorXi old_pin_indices = slim_data.
b;
61 Eigen::MatrixXd old_pin_positions = slim_data.
bc;
63 slim_data.
b.resize(n_pins);
64 slim_data.
bc.resize(n_pins, 2);
66 int old_pin_pointer = 0;
67 int selected_pin_pointer = 0;
69 for (
int new_pin_pointer = 0; new_pin_pointer < n_pins; new_pin_pointer++) {
71 int pinned_vertex_index = pinned_vertex_indices[new_pin_pointer];
72 slim_data.
b(new_pin_pointer) = pinned_vertex_index;
74 while ((old_pin_pointer < old_pin_indices.size()) &&
75 (old_pin_indices(old_pin_pointer) < pinned_vertex_index))
79 bool old_pointer_valid = (old_pin_pointer < old_pin_indices.size()) &&
80 (old_pin_indices(old_pin_pointer) == pinned_vertex_index);
82 while ((selected_pin_pointer < n_selected_pins) &&
83 (selected_pins[selected_pin_pointer] < pinned_vertex_index))
85 ++selected_pin_pointer;
87 bool pin_selected = (selected_pin_pointer < n_selected_pins) &&
88 (selected_pins[selected_pin_pointer] == pinned_vertex_index);
90 if (!pin_selected && old_pointer_valid) {
91 slim_data.
bc.row(new_pin_pointer) = old_pin_positions.row(old_pin_pointer);
94 slim_data.
bc(new_pin_pointer, 0) = pinned_vertex_positions_2D[2 * new_pin_pointer];
95 slim_data.
bc(new_pin_pointer, 1) = pinned_vertex_positions_2D[2 * new_pin_pointer + 1];
static int blend(const Tex *tex, const float texvec[3], TexResult *texres)