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 + -
显示快捷键?