ChannelEditPictureWindow::ChannelEditPictureWindow(ChannelEditPictureThread *thread, ChannelPicker *channel_picker) : BC_Window(PROGRAM_NAME ": Picture", channel_picker->mwindow->session->picture_x, channel_picker->mwindow->session->picture_y, calculate_w(channel_picker), calculate_h(channel_picker), calculate_w(channel_picker), calculate_h(channel_picker)) { this->thread = thread; this->channel_picker = channel_picker; }
std::set<int>& KrivodonovaDiscontinuityDetector::get_discontinuous_element_ids(double threshold) { Element* e; for_all_active_elements(e, mesh) { bool element_inserted = false; for(int edge_i = 0; edge_i < e->get_num_surf() && !element_inserted; edge_i++) if(calculate_relative_flow_direction(e, edge_i) < 0 && !e->en[edge_i]->bnd) { double jumps[1]; calculate_jumps(e, edge_i, jumps); double diameter_indicator = calculate_h(e, spaces[0]->get_element_order(e->id)); double edge_length = std::sqrt(std::pow(e->vn[(edge_i + 1) % e->get_num_surf()]->x - e->vn[edge_i]->x, 2) + std::pow(e->vn[(edge_i + 1) % e->get_num_surf()]->y - e->vn[edge_i]->y, 2)); double norms[1]; calculate_norms(e, edge_i, norms); // Number of component jumps tested. unsigned int component_checked_number = 1; for(unsigned int component_i = 0; component_i < component_checked_number; component_i++) { if(norms[component_i] < 1E-8) continue; double discontinuity_detector = jumps[component_i] / (diameter_indicator * edge_length * norms[component_i]); if(discontinuity_detector > threshold) { discontinuous_element_ids.insert(e->id); element_inserted = true; break; } } } }
Node::Node(Map* map, Tile* tile, Node* parent, Position destination) : destination(destination) { this->map = map; this->tile = tile; this->parent = parent; calculate_h(); }