qseparation.h
来自「算断裂的」· C头文件 代码 · 共 142 行
H
142 行
// ------------------------------------------------------------------// qseparation.h//// This file contains workspaces and pointers for the separation operation.// ------------------------------------------------------------------// Copyright (c) 1999 by Cornell University. All rights reserved.// // See the accompanying file 'Copyright' for authorship information,// the terms of the license governing this software, and disclaimers// concerning this software.// ------------------------------------------------------------------// This file is part of the QMG software. // Version 2.0 of QMG, release date September 3, 1999// ------------------------------------------------------------------#ifndef QSEPARATION_H#define QSEPARATION_H#include "qboxstack.h"#include "qsizectl.h"#include "qancestor.h"class QMG::MG::Separation_Functor {private: struct Trackmaxmin { Real lower_bound[NUM_CURVATURE_TEST_DIRECTION]; Real upper_bound[NUM_CURVATURE_TEST_DIRECTION]; Real max_delta; }; struct Size_Return { bool ok; Real val; Brep::Face_Spec fspec; }; // Items passed into constructor: const Brep& brep_; Logstream& logstr_; const PatchTable& patchtable_; IncidenceTable& inc_table_; const SizeControl& size_control_; const SizeControl& curve_control_; Brep_Orbits& orbits_; double scfac_; double tol_; int di_; // Workspaces need for separation. Create them // just once during mesh generation to save time. Brep::Ancestor_Lookup lca_; Brep::Face_Labeling<Trackmaxmin> track_max_min_; int num_test_directions_actual_; vector<Point> test_directions_; struct SeveralPoints { Point point[MAXDIM]; }; PatchTableIndexMap<My_bool> patch_searched_; PatchTableIndexMap<int> acceptable_for_search_cache_; PatchTableIndexMap<int> map_to_relnum_; vector<PatchTable::Index> patchind_stack_; Brep::Face_Labeling<Real> rqvariance_; unsigned int serial_num_; Brep::Face_Labeling<int> max_min_initialized_; Brep::Face_Labeling<int> curvature_is_checked_; ActiveBoxVec::Create_Subbox_Workspace crt_wkspa_; // No copying, no assignment. Face Labeling has no // copying. void operator=(const Separation_Functor&) { }private: Triple<Brep::Face_Spec, Brep::Face_Spec, bool> is_crowded_(const ActiveBox& b, int phase); Size_Return ok_for_size_function_completely_interior_(const ActiveBox& b, const Brep::Face_Spec& apex); Size_Return ok_for_size_function_(const ActiveBox& b, const Brep::Face_Spec& apex); void process_incidence0_(const Brep::Face_Spec& owner, const Point& normal_or_tan); bool recheck_normal_(const Brep::Face_Spec& owner, const Point& normal_or_tan); bool acceptable_for_search_(PatchTable::Index patchind, const Point& bmidpoint, Real bwidth); void process_incidence1_(PatchTable::Index patchind, const Point& paramcoord, const Point& realcoord); Size_Return ok_for_curvature_(const ActiveBox& b);public: Separation_Functor(const Brep& brep, const PatchTable& patchtable, IncidenceTable& inc_table, const SizeControl& size_control, const SizeControl& curve_control, Brep_Orbits& orbits, double scfac, double tol, Logstream& logstr, Meshgen_gui& gui); ~Separation_Functor() { } // These are the two main operations for separation. void not_interior(NonConstActiveBox& b, int phase, ActiveBoxVec& tempstack, ActiveBoxVec& smallboxstack, ActiveBoxVec& idlestack, ActiveBoxVec& smallboxidlestack); void completely_interior(NonConstActiveBox& b, ActiveBoxVec& smallboxvec);};#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?