MGCL V10  V10
MGCL V10
 全て クラス 名前空間 関数 変数 型定義 列挙型 列挙値 フレンド グループ ページ
MGFace クラス

MGFace is a trimmed surface. [詳解]

MGFace の継承関係図
MGCell MGFSurface MGCellNB MGCellBase MGTopology MGObject MGAttribedGel MGGel

公開メンバ関数

 MGFace ()
 Null face. [詳解]
 
 MGFace (const MGFace &face)
 Copy constructor. [詳解]
 
 MGFace (const MGFace &face, bool copy_boundary, bool no_binder=false)
 Constructor. [詳解]
 
 MGFace (MGSurface *geo, std::vector< MGBoundary * > &boundaries, MGCell *binder)
 
 MGFace (const MGSurface &surf)
 Face of whole surface of no boundary. [詳解]
 
 MGFace (const MGFSurface &surf)
 Conversion constructor from MGFSurface to MGFace. [詳解]
 
 MGFace (MGSurface *surf)
 
 MGFace (const MGSurface &surf, const std::vector< MGBoundary * > &boundaries)
 
 MGFace (MGSurface *surf, const std::vector< MGBoundary * > &boundaries)
 
MGFaceoperator= (const MGGel &gel2)
 
MGFaceoperator= (const MGFace &gel2)
 
MGFace operator+ (const MGVector &v) const
 
MGFace operator- (const MGVector &v) const
 
MGFace operator* (double s) const
 
MGFace operator* (const MGMatrix &mat) const
 
MGFace operator* (const MGTransf &tr) const
 
MGFace operator/ (double s) const
 
bool operator< (const MGFace &gel2) const
 Comparison of two curves. [詳解]
 
bool operator< (const MGGel &gel2) const
 
int out_to_IGES (MGIgesOfstream &igesfile, int SubordinateEntitySwitch=0) const
 PD144=MGFace. Output to PD144(Trimmed surface). [詳解]
 
std::ostream & out (std::ostream &ostrm) const
 Debug Function. [詳解]
 
std::ostream & outFS (std::ostream &ostrm) const
 Output virtual function. [詳解]
 
void add_boundary (MGLoop *nloop)
 
void arrow (double u, double v, MGPosition data[10]) const
 
void arrow (const MGPosition &uv, MGPosition data[10]) const
 
int append_boundary (MGBoundary *bound)
 
MGFacebinder_face () const
 
MGPvector< MGCurveface_boundaries () const
 
const MGBoxbox_param () const
 
const MGBox box_param2 () const
 
std::auto_ptr< MGLoopbuild_loop (const MGCurve &crv) const
 
MGFaceclone () const
 
MGFaceclone_without_boundaries () const
 
MGFSurfaceclone_fsurface () const
 Get the clone of this MGFSurface. [詳解]
 
MGFaceclone_as_face () const
 
MGFaceclone_binder (const MGCellBase &f) const
 
MGPosition closest (const MGPosition &point) const
 
MGPosition closest_on_boundary (const MGStraight &sl) const
 
void display_arrows (mgSysGL &sgl) const
 
void display_control_polygon (mgSysGL &sgl) const
 
void drawWire (mgVBO &vbo, double span_length, int line_density=1) const
 
void draw3DVertex (mgVBO &vbo) const
 
void shade (mgVBO &vbo, const MGDrawParam &para, mgVBO::ELEMENT_TARGET target=mgVBO::SHADING) const
 Shade the object in world coordinates. [詳解]
 
virtual void triangulate (const MGDrawParam &para, MGCL::TL_DATA_KIND dkind, std::vector< mgTL2Triangles > &trisVec) const
 Triangulate this object(MGShell, MGFace, or MGSurface is the target). [詳解]
 
bool equal_direction (const MGPvector< MGCurve > &wcurves, const MGPvector< MGCurve > &pcurves, int i) const
 
MGVector eval (double u, double v, int ndu=0, int ndv=0) const
 
MGVector eval (const MGPosition &uv, int ndu=0, int ndv=0) const
 Evaluate at uv. [詳解]
 
void extract_loops (std::vector< const MGLoop * > &loops) const
 Extract all the loops of this face. [詳解]
 
void extract_sub_face (const MGPvector< MGLoop > &networks, const MGPosition &uv, std::auto_ptr< MGFace > &face) const
 
MGFaceface ()
 Return MGFace pointer if this MGGel is an MGFace, else return null. [詳解]
 
const MGFaceface () const
 
const MGFSurfacefsurface () const
 Get the MGFSurface pointer if this is MGSurface or MGFace. [詳解]
 
MGFSurfacefsurface ()
 
std::vector< const MGLoop * > get_inner_boundary_loops (const MGBox &uvbox) const
 Get inner_aboundary loops included in the input box. [詳解]
 
MGFaceget_face_pointer ()
 Judge if the display list for vmode is made or not. [詳解]
 
const MGFaceget_face_pointer () const
 
MGSurfaceget_surface_pointer ()
 
const MGSurfaceget_surface_pointer () const
 
int get_number_of_boundaries () const
 Get number of inner boundaries as the output of the function. [詳解]
 
bool has_commonFS (const MGObject &obj2) const
 
bool hasLoop (const MGBox &uvbox) const
 
bool hasInactiveLoop () const
 
bool hasOuterBoundaryLoop () const
 
bool hasPerimeterBoundaryLoop () const
 
MGPvector< MGCurveinner_boundary (int i) const
 
MGPvector< MGCurveinner_boundary_param (int i) const
 
long identify_type () const
 Return Object's type ID (TID) [詳解]
 
bool in_range (double u, double v) const
 Test if parameter value (u,v) is in the range of the face parameter. [詳解]
 
bool in_range (const MGPosition &uv) const
 
int in_range_with_on (const MGPosition &uv) const
 
MGisects intersection (const MGObject &obj2) const
 
MGisects intersection (const MGCurve &obj2) const
 
MGisects intersection (const MGFSurface &obj2) const
 
MGisects intersection (const MGSurface &obj2) const
 
MGisects intersection (const MGFace &obj2) const
 
MGisects intersection (const MGShell &obj2) const
 
MGCSisect_list isect (const MGCurve &curv) const
 Intersection. [詳解]
 
MGSSisect_list isect (const MGFSurface &fsurf) const
 
MGSSisect_list isect (const MGFace &fsurf) const
 
MGSSisect_list isect (const MGSurface &fsurf) const
 
MGHHisect_vector isect (const MGShell &shell2) const
 Intersection. [詳解]
 
double knot_u (int i) const
 Access to i-th element of u knot. [詳解]
 
double knot_v (int i) const
 Access to i-th element of v knot. [詳解]
 
const MGKnotVectorknot_vector_u () const
 Returns the u knot vector. [詳解]
 
MGKnotVectorknot_vector_u ()
 
const MGKnotVectorknot_vector_v () const
 Returns the v knot vector. [詳解]
 
MGKnotVectorknot_vector_v ()
 
MGLooploop (int i)
 Obtain i-th boundary loop of the face. [詳解]
 
MGLooploop (iterator i)
 
const MGLooploop (int i) const
 
const MGLooploop (const_iterator i) const
 
MGCellNBmake_binder () const
 
MGFacemake_face ()
 
void make_outer_boundary ()
 Make outer boundary if not existed. [詳解]
 
int manifold_dimension () const
 Get manifold dimension. [詳解]
 
const MGFacemember_partner_face (int i) const
 Obtain the i-th member partner face. [詳解]
 
void negate ()
 Negate the face. [詳解]
 
void negateFS ()
 Negate the FSurface. [詳解]
 
MGVector normal (const MGPosition &uv) const
 Compute normal vector(not unit) at uv. [詳解]
 
MGVector normal (double u, double v) const
 Compute normal vector(not unit) at (u,v). [詳解]
 
bool no_outer_boundaries () const
 
int number_of_inner_boundaries () const
 Get number of inner boundaries as the output of the function. [詳解]
 
int number_of_inner_boundaries (int &i) const
 
int number_of_loops () const
 Compute number of active loops. [詳解]
 
int number_of_perimeter_boundaries () const
 Get number of perimeter boundary loop. [詳解]
 
MGObjectobject_pointer ()
 Return MGObject pointer if this MGGel is an MGObject, else return null. [詳解]
 
const MGObjectobject_pointer () const
 Get the object point of this MGFSurface. [詳解]
 
MGFace offset (double distance, int &error) const
 
int offset (double distance, MGPvector< MGFace > &vecOfsFace) const
 
int offset_fs (double distance, MGPvector< MGFSurface > &vecOfsFSurface) const
 
bool on (const MGPosition &P, MGPosition &uv) const
 
bool on_a_perimeter (double &u, double &v, int &perim_num) const
 
MGPvector< MGCurveouter_boundary () const
 
MGPvector< MGCurveouter_boundary_param () const
 
MGPosition param (const MGPosition &P) const
 Obtain parameter value of the face whose world coordinates are P. [詳解]
 
MGPvector< MGCurveparameter_curves (int is_u, double x) const
 
MGBox param_range () const
 
double param_e_u () const
 Return ending parameter value. [詳解]
 
double param_e_v () const
 
double param_s_u () const
 Return starting parameter value of the base surface. [詳解]
 
double param_s_v () const
 
MGShellparent_shell ()
 Obtain parent shell that this face belongs to. [詳解]
 
const MGShellparent_shell () const
 
MGPvector< MGCurvePBloop_curves () const
 
bool perp_guess (const MGPosition &P, const MGPosition &uvguess, MGPosition &uv) const
 
bool perp_guess (const MGCurve &curve, const MGPosition &uvguess, double tguess, MGPosition &uv, double &t) const
 
int perp_point (const MGPosition &p, MGPosition &uv, const MGPosition *uvguess=0) const
 
MGPosition_list perps (const MGPosition &P) const
 
MGPosition pick_closest (const MGStraight &sl) const
 
MGPosition range (const MGPosition &uv) const
 
std::auto_ptr< MGFacerebuild (int how_rebuild=1, int parameter_normalization=2, double tol=-1., int *order=0, double *range=0) const
 
void remove_inactive_loops ()
 Remove inactive loops from this face. [詳解]
 
void rotateBoundary (const MGMatrix &mat)
 
void scalePolar (double angleBase, double angle1, double angle2)
 
void shrink_base_surface_to_knot (int multiple=0)
 
void sort_boundaries ()
 
void split (double param, bool is_u, MGPvector< MGFSurface > &surfaces) const
 split this fsurface at the parameter param. [詳解]
 
void split (const MGPvector< MGLoop > &networks, MGPvector< MGFace > &faces) const
 
MGSurfacesurface ()
 Get surface pointer. [詳解]
 
const MGSurfacesurface () const
 
int trim_projection (const MGCurve &crv, const MGVector &direction=mgNULL_VEC)
 
int trim (const MGCurve &pcrv)
 
int trim (const MGLoop &new_loop_in)
 
void trim (const MGPvector< MGLoop > &networks, const MGPosition &uv, MGPvector< MGFace > &faces) const
 
MGUnit_vector unit_normal (const MGPosition &uv) const
 Compute unit normal vector at uv. [詳解]
 
MGUnit_vector unit_normal (double u, double v) const
 Compute unit normal vector at (u,v). [詳解]
 
std::string whoami () const
 
- 基底クラス MGCell に属する継承公開メンバ関数
 MGCell ()
 Void constructor. Constructor of pcell. [詳解]
 
 MGCell (const MGCell &cell)
 
 MGCell (const MGGeometry &geo)
 
 MGCell (MGGeometry *geo)
 
 MGCell (MGGeometry *geo, std::vector< MGBoundary * > &boundaries, MGCell *binder)
 
 MGCell (const MGGeometry &geo, const std::vector< MGBoundary * > &boundaries)
 
 MGCell (MGGeometry *geo, const std::vector< MGBoundary * > &boundaries)
 
virtual ~MGCell ()
 
virtual MGCelloperator= (const MGCell &gel2)
 
virtual bool operator< (const MGCell &gel2) const
 comparison [詳解]
 
MGBoundaryboundary (int i)
 Obtain i-th boundary pointer. [詳解]
 
const MGBoundaryboundary (int i) const
 
const std::vector< MGBoundary * > & boundaries () const
 Obtain boundaries of this cell. [詳解]
 
MGVector boundary_direction (int i, int j) const
 
const_boundaryItr boundaryIterator (const MGBoundary *bnd) const
 Obtain iterator of m_boundaries. [詳解]
 
boundaryItr boundaryIterator (MGBoundary *bnd)
 
const MGBoxbox () const
 Obtain the box of the cell. [詳解]
 
MGPosition center_param () const
 Obtain the center parameter value of this cell. [詳解]
 
void connect (int i1, int j1, MGCell *cell2, int i2, int j2)
 
void erase_boundary (iterator i)
 
void erase_boundary (int i)
 
void erase_boundary (MGBoundary *bnd)
 erase_boundary removes from this cell's bounary and destruct the boundary. [詳解]
 
virtual MGBoundaryfree_boundary (const MGBoundary *bound)
 
void free_neighbourhood (int i, int j=0)
 Free neighbourhood relation at j-th boundary's i-th pcell of this cell. [詳解]
 
std::vector< const MGCellNB * > neighbours () const
 
std::vector< const MGCellNB * > neighbours (int i, int j=0) const
 
int number_of_boundaries () const
 Return number of boundaries. [詳解]
 
double parameter_error () const
 Return parameter space error of the cell. [詳解]
 
virtual int prepend_boundary (MGBoundary *bound)
 
- 基底クラス MGCellNB に属する継承公開メンバ関数
 MGCellNB ()
 Void constructor. Constructor of pcell. [詳解]
 
 MGCellNB (const MGCellNB &cell)
 
 MGCellNB (const MGGeometry &geo)
 
 MGCellNB (MGGeometry *geo)
 
 MGCellNB (MGGeometry *geo, MGCellNB *binder)
 
virtual ~MGCellNB ()
 
virtual MGCellNBoperator= (const MGCellNB &gel2)
 
virtual MGCellNBoperator+= (const MGVector &v)
 Object transformation. [詳解]
 
virtual MGCellNBoperator-= (const MGVector &v)
 
virtual MGCellNBoperator*= (double scale)
 
virtual MGCellNBoperator*= (const MGMatrix &mat)
 
virtual MGCellNBoperator*= (const MGTransf &tr)
 
void add_partner (const MGCellBase &partner)
 
MGPosition center () const
 Obtain the center of this cell. [詳解]
 
virtual MGUnit_vector direction () const
 Obtain the direction of the cell. [詳解]
 
const MGGeometryextent () const
 Get extent geometry, may be null if this does not have extent. [詳解]
 
MGGeometryextent ()
 
MGGeometryfree_extent ()
 
MGComplexfree_from_parent ()
 
void free_partner (const MGCellBase *cellin) const
 Free specified partner(cellin). [詳解]
 
bool is_bcell () const
 Ask if this is binder cell. [詳解]
 
const MGCellBasemember_partner (int i) const
 Obtain the i-th member partner. This must be a binder cell. [詳解]
 
const std::vector< const
MGCellBase * > & 
member_partners () const
 Obtain member partners. This must be a binder cell. [詳解]
 
std::vector< const MGCellBase * > & member_partners ()
 
int number_of_partner_members () const
 Return nummber of partners stored in m_partners. [詳解]
 
const MGComplexparent_complex () const
 Obtain parent complex. [詳解]
 
MGComplexparent_complex ()
 
virtual void set_extent (MGGeometry *extent=0)
 Set extent of this cell. [詳解]
 
const MGCellNBstar () const
 Obtain star cells. [詳解]
 
MGCellNBstar ()
 
- 基底クラス MGCellBase に属する継承公開メンバ関数
 MGCellBase ()
 Void constructor. Constructor of pcell. [詳解]
 
 MGCellBase (const MGCellBase &cell)
 
virtual ~MGCellBase ()
 
virtual MGCellBaseoperator= (const MGCellBase &gel2)
 
MGCellNBbinder () const
 Obtain binder. [詳解]
 
virtual void connect (MGCellBase &cell2)
 
virtual void drawWire_in_star (mgVBO &vbo, double span_length, int line_density=1) const
 
virtual void draw3DVertex_in_star (mgVBO &vbo) const
 
void free_partnership ()
 
bool is_pcell () const
 Ask if this is parameter cell. [詳解]
 
const MGCellNBmake_binder_with_extent () const
 
int number_of_partners () const
 
std::vector< const MGCellBase * > partners () const
 
void set_binder (MGCellNB &binder) const
 
- 基底クラス MGTopology に属する継承公開メンバ関数
 MGTopology ()
 Void constructor(初期化なしでオブジェクトを作成する。) [詳解]
 
 MGTopology (const MGTopology &topo)
 Copy constructor. [詳解]
 
virtual ~MGTopology ()
 
virtual MGTopologyoperator= (const MGTopology &gel2)
 
MGTopologytopology ()
 Return MGTopology pointer if this MGGel is an MGTopology, else return null. [詳解]
 
const MGTopologytopology () const
 
- 基底クラス MGObject に属する継承公開メンバ関数
 MGObject ()
 Void constructor(初期化なしでオブジェクトを作成する。) [詳解]
 
 MGObject (const MGObject &obj2)
 Copy constructor. [詳解]
 
virtual ~MGObject ()
 Virtual Destructor. [詳解]
 
virtual MGObjectoperator= (const MGObject &obj2)
 
MGAppearanceappearance ()
 
const MGAppearanceappearance () const
 
MGAppearanceensure_appearance ()
 
virtual void make_display_list (MGCL::VIEWMODE vmode=MGCL::DONTCARE) const
 Make a display list of this gel. [詳解]
 
bool has_common (const MGObject &obj2) const
 
const MGObjectincludes_object () const
 Test if this gel includes an object. [詳解]
 
MGObjectincludes_object ()
 Test if this gel includes an object. [詳解]
 
virtual MGisects intersection (const MGPoint &obj2) const
 
void remove_appearance ()
 Remove the MGAppearance of this MGAttribedGel. [詳解]
 
virtual MGObjectobject ()
 Return MGObject pointer if this MGGel is an MGObject, else return null. [詳解]
 
virtual const MGObjectobject () const
 
void set_appearance (const MGAppearance &appr2)
 
virtual void transform (const MGVector &v)
 Transform the gel by the argument. [詳解]
 
virtual void transform (double scale)
 translation [詳解]
 
virtual void transform (const MGMatrix &mat)
 scaling. [詳解]
 
virtual void transform (const MGTransf &tr)
 matrix transformation. [詳解]
 
- 基底クラス MGAttribedGel に属する継承公開メンバ関数
 MGAttribedGel ()
 void constructor. [詳解]
 
 MGAttribedGel (const MGAttribedGel &gel2)
 copy constructor. [詳解]
 
virtual MGAttribedGeloperator= (const MGAttribedGel &gel2)
 
virtual ~MGAttribedGel ()
 
void copy_appearance (const MGAttribedGel &gel2)
 
mgVBOdlist_name () const
 
virtual bool displayList_is_made (MGCL::VIEWMODE vmode) const
 Judge if the display list for vmode is made or not. [詳解]
 
void deleteDlistName () const
 
virtual void drawAttrib (mgVBO &vbo, bool no_color=false) const
 Process of draw or render attributes. [詳解]
 
virtual void render_attribute () const
 
virtual int get_draw_attrib_mask () const
 Obtain attribute mask for glPushAttrib(). [詳解]
 
virtual int get_render_attrib_mask () const
 
int getVBOElementsNumber () const
 Get the number of elements of m_dlistName. [詳解]
 
int getVBOShaderElementsNumber () const
 Get the number of shading elements of m_dlistName. [詳解]
 
virtual bool no_display () const
 
void remove_GLattrib (long tid)
 Removed the attribute of specified type. [詳解]
 
virtual void set_GLattrib (MGGLAttrib *attr)
 
virtual void set_display ()
 Set this group as display or no display group. [詳解]
 
virtual void set_no_display ()
 
bool visible () const
 
void set_name (const MGName &newName)
 
const MGNameget_name () const
 
void set_color (const MGColor &newColor)
 
const MGColorget_color () const
 
void setDlistName (mgVBO *vbo=0) const
 
void setDirty (bool is_dirty) const
 Set dirty flag(s) of this VBO(m_dlistName). [詳解]
 
- 基底クラス MGGel に属する継承公開メンバ関数
virtual ~MGGel ()
 Virtual Destructor. [詳解]
 
virtual bool operator== (const MGGel &gel2) const
 Comparison. [詳解]
 
virtual bool operator!= (const MGGel &gel2) const
 
virtual bool operator> (const MGGel &gel2) const
 
virtual MGAttribattrib ()
 Return MGAttrib pointer if this MGGel is an MGAttrib, else return null. [詳解]
 
virtual const MGAttribattrib () const
 
virtual MGGroupgroup ()
 Return MGGroup pointer if this MGGel is an MGGroup, else return null. [詳解]
 
virtual const MGGroupgroup () const
 
virtual MGGeometrygeometry ()
 Return MGGeometry pointer if this MGGel is an MGGeometry, else return null. [詳解]
 
virtual const MGGeometrygeometry () const
 
virtual MGPointpoint ()
 Return point pointer if this MGGel is an MGPoint, else return null. [詳解]
 
virtual const MGPointpoint () const
 
virtual MGCurvecurve ()
 Return curve pointer if this MGGel is an MGCurve, else return null. [詳解]
 
virtual const MGCurvecurve () const
 
virtual MGSurfacesurf ()
 Return MGSurface pointer if this MGGel is an MGSurface, else return null. [詳解]
 
virtual const MGSurfacesurf () const
 
virtual MGShellshell ()
 Return MGShell pointer if this MGGel is an MGShell, else return null. [詳解]
 
virtual const MGShellshell () const
 
std::string string_content () const
 
bool type_is (const MGAbstractGels &types) const
 
virtual void display_break_points (mgSysGL &sgl) const
 
virtual void display_curvatures (mgSysGL &sgl, double scale, int density, bool use_radius) const
 
- 基底クラス MGFSurface に属する継承公開メンバ関数
 MGFSurface ()
 Null FSurface. [詳解]
 
 MGFSurface (const MGFSurface &fsurf)
 Copy constructor. [詳解]
 
virtual ~MGFSurface ()
 
bool operator< (const MGFSurface &f2) const
 Comparison operator. [詳解]
 
bool operator> (const MGFSurface &f2) const
 
const MGBoxget_box () const
 Get the box of the object. [詳解]
 
void display_arrowsFS (mgSysGL &sgl, int udiv=4, int vdiv=4) const
 Display arrows on the surface. [詳解]
 
void drawWireFS (mgVBO &vbo, double span_length, int line_density=1) const
 
void drawWireFS_to_highlight (mgVBO &vbo, double span_length, int line_density) const
 
void eval_discrete_deviation (const MGFSurface &face2, std::vector< MGPosition > &uvuvs, int npoint=20, double tolerance=0.1) const
 
MGPvector< MGCurveget_all_boundaries (void) const
 Obtain all the boundaries(i.e., outer boundary and all the inner boundaries) [詳解]
 
bool hasInnerBoundaryLoop () const
 
int in_range_with_on (double u, double v) const
 
void intersect12Boundary (const MGFSurface &face2, MGPosition_list &uvuv_list) const
 
virtual int isect_guess (const MGCurve &crv, const MGPosition &uvi, double ti, MGPosition &uv, double &t) const
 
virtual int isect_guess (const MGStraight &sl, const MGPosition &uvi, double ti, MGPosition &uv, double &t) const
 
virtual int isect_guess (const MGCompositeCurve &crv, const MGPosition &uvi, double ti, MGPosition &uv, double &t) const
 
virtual int isect_guess_composite (const MGCompositeCurve &crv, const MGPosition &uvi, double ti, MGPosition &uv, double &t) const
 
virtual int isect_guess_straight (const MGStraight &sl, double ti, const MGPosition &uvi, double &t, MGPosition &uv) const
 
double param_error () const
 Obtain parameter space error. [詳解]
 
double param_error_u () const
 
double param_error_v () const
 
virtual MGPosition param_mid () const
 
virtual int perp_one (const MGPosition &P, MGPosition &uv) const
 
virtual int project (const MGCurve &crv, MGPvector< MGCurve > &vec_crv_uv, MGPvector< MGCurve > &vec_crv, const MGVector &vec=mgNULL_VEC) const
 
virtual int project (const MGCurve &crv, MGPvector< MGCurve > &vec_crv, const MGVector &vec=mgNULL_VEC) const
 
MGPvector< MGCurveinner_skeleton (int density) const
 
virtual MGPvector< MGCurveskeleton (int density=1) const
 
virtual MGPvector< MGCurveskeleton_at_knots () const
 Obtain all the parameter curves at knots of u and v knot vector. [詳解]
 
void split (const std::vector< const MGCurve * > &splitters, const MGVector &dir, MGPvector< MGFace > &faces) const
 
void split (const MGPvector< MGCurve > &splitters, MGPvector< MGFace > &faces) const
 split this fsurface with splitters. splitters are 2D (u,v) surfaces's parameter curves. [詳解]
 
void extract (const std::vector< const MGCurve * > &trimmers, const MGVector &dir, const MGPosition &uv, std::auto_ptr< MGFace > &eface) const
 
void shadeFS (mgVBO &vbo, const MGDrawParam &para, mgVBO::ELEMENT_TARGET target=mgVBO::SHADING) const
 Shade the object in world coordinates. [詳解]
 
void trim (const std::vector< const MGCurve * > &trimmers, const MGVector &dir, const MGPosition &uv, MGPvector< MGFace > &faces) const
 

限定公開メンバ関数

void WriteMembers (MGOfstream &buf) const
 Write Object's Member Data. [詳解]
 
void ReadMembers (MGIfstream &buf)
 Read Object's member data. [詳解]
 
- 基底クラス MGCell に属する継承限定公開メンバ関数
void copy_all_boundaries (const MGCellBase &cell)
 Copy all boundaries into this. [詳解]
 
void copy_all_boundaries (const MGCellBase &cell, MGCellMap &cmap)
 
void copy_box (const MGCellBase &cell2) const
 Copy m_box data of cell2 into this. [詳解]
 
void copy_perror (const MGCellBase &cell2) const
 Copy m_perror data of cell2 into this. [詳解]
 
MGCellset_cell (const MGCell &cell)
 
- 基底クラス MGCellNB に属する継承限定公開メンバ関数
bool bn_binder_tr_necessary () const
 check if boundary's binder transformation is necessary or not. [詳解]
 
bool is_less_than (const MGCellNB &cell2) const
 Cell comparison. [詳解]
 
MGCellNBset_cellnb (const MGCellNB &cell2)
 
- 基底クラス MGCellBase に属する継承限定公開メンバ関数
MGCellBaseset_cellbase (const MGCellBase &cb2)
 
- 基底クラス MGObject に属する継承限定公開メンバ関数
MGObjectset_object (const MGObject &gel2)
 
- 基底クラス MGFSurface に属する継承限定公開メンバ関数
virtual int isect_direction (const MGFSurface &sf2, int m1, MGPosition &uvuvS, double &du, double &dv, double acuRatio=1.) const
 
int isect_direction_with_direction (double u, double v, const MGVector &tangent, double &du, double &dv) const
 
void isect_dt (double u, double v, double &du, double &dv, double acuRatio=1.) const
 
virtual void isect_inner_dt (int n, const MGPosition &uvnow, double &du, double &dv, int &kdt, double acuRatio=1.) const
 
double isect_dt_coef (int n) const
 
int isect_div_id_max () const
 
int isect_start (const MGPosition &uvuv_startIn, MGPosition_list &uvuv_list, const MGFSurface &sf2, MGSSisect &ssi, MGPosition_list::iterator &uvuv_id, int &m1) const
 
int isect_start_boundary (const MGFSurface &sf2, const MGPosition &uvuv_pre, int kdt, double du, double dv, int lid1, MGPosition &uvuv_now) const
 
double isect_start_dif (const MGNDDArray &tau, const MGLBRep &line, const MGFSurface &sf2) const
 
int isect_start_incr (const MGFSurface &sf2, const MGPosition &uvuv_pre, int kdt, double du, double dv, int lid1, MGPosition &uvuv_now) const
 
int isect_startPt (const MGPosition &uvuv_startIn, MGPosition_list &uvuv_list, const MGFSurface &sf2, double acuRatio, MGBPointSeq &point, MGPosition_list::iterator &uvuv_id, int &m1) const
 
int isect_startPlane (const MGPosition &uvuvS, MGPosition_list &uvuv_list, const MGPlane &pl, MGSSisect &ssi, MGPosition_list::iterator &uvuv_id) const
 
int isect_startPlanePt (const MGPosition &uvuv_startIn, MGPosition_list &uvuv_list, const MGPlane &pl2, double acuRatio, MGBPointSeq &point, MGPosition_list::iterator &uvuv_id) const
 
MGSSisect_list isect_with_surf (MGPosition_list &uvuv_list, const MGFSurface &srf2) const
 Compute the intersection lines of this surface and srf2(both are not planes). [詳解]
 
MGSSisect_list isect_with_plane (MGPosition_list &uvuv_list, const MGPlane &pl, const MGFSurface &fsrf2) const
 
int projectbyApproximateAsLBRep (const MGCurve &crv, MGPvector< MGCurve > &vec_crv_uv, MGPvector< MGCurve > &vec_crv, const MGVector &vec) const
 
int projectbyRemovKnots (const MGCurve &crv, MGPvector< MGCurve > &vec_crv_uv, MGPvector< MGCurve > &vec_crv, const MGVector &vec) const
 
int projVector (const MGCurve &crv, MGPvector< MGCurve > &vec_crv_uv, MGPvector< MGCurve > &vec_crv, const MGVector &vec) const
 カーブを折れで分割して行い、後で接続する [詳解]
 
int projNormal (const MGCurve &crv, MGPvector< MGCurve > &vec_crv_uv, MGPvector< MGCurve > &vec_crv) const
 カーブを折れで分割して行い、後で接続する [詳解]
 

フレンド

MG_DLL_DECLR friend MGFace operator* (double s, const MGFace &face)
 

その他の継承メンバ

- 基底クラス MGCell に属する継承公開型
typedef std::vector
< MGBoundary * >::iterator 
boundaryItr
 
typedef std::vector
< MGBoundary * >
::const_iterator 
const_boundaryItr
 
typedef std::vector
< MGBoundary * >
::reverse_iterator 
boundaryRItr
 
typedef std::vector
< MGBoundary * >
::const_reverse_iterator 
const_boundaryRItr
 
typedef boundaryItr iterator
 
typedef const_boundaryItr const_iterator
 
typedef boundaryRItr reverse_iterator
 
typedef const_boundaryRItr const_reverse_iterator
 
- 基底クラス MGCellNB に属する継承公開型
enum  CELL_KIND { UNKNOWN =0, PCELL =1, BCELL =2 }
 
typedef std::vector
< MGCellBase * >::iterator 
partnerItr
 
typedef std::vector< const
MGCellBase * >::const_iterator 
const_partnerItr
 
typedef std::vector
< MGCellBase * >
::reverse_iterator 
partnerRItr
 
typedef std::vector< const
MGCellBase * >
::const_reverse_iterator 
const_partnerRItr
 
- 基底クラス MGCell に属する継承限定公開変数類
MGBox m_box
 
std::vector< MGBoundary * > m_boundaries
 vector of boundaries who bound this cell. [詳解]
 
double m_perror
 
- 基底クラス MGCellNB に属する継承限定公開変数類
MGComplexm_parent_complex
 
MGGeometrym_extent
 Geometry. [詳解]
 
std::vector< const MGCellBase * > m_partners
 vector of partner cells who share this bcell(for bcell). [詳解]
 
- 基底クラス MGCellBase に属する継承限定公開変数類
MGCellNBm_binder
 
- 基底クラス MGAttribedGel に属する継承限定公開変数類
std::auto_ptr< mgVBOm_dlistName
 display name if m_dlistName!=0; [詳解]
 

詳解

MGFace is a trimmed surface.

MGFace is an instance of MGCell, can be a constituent of MGShell. Many useful functions are provided in MGFSurface. See MGFSurface.

構築子と解体子

MGFace::MGFace ( )
inline

Null face.

MGFace::MGFace ( const MGFace face)

Copy constructor.

MGFace::MGFace ( const MGFace face,
bool  copy_boundary,
bool  no_binder = false 
)

Constructor.

MGFace::MGFace ( MGSurface geo,
std::vector< MGBoundary * > &  boundaries,
MGCell binder 
)

Fundamental constructor. Construct a face from geometry of manifold dimension 2 and the boundaries. The constructor takes the ownership of geo and MGBoundary in boundaries. boundaries must be loops.

MGFace::MGFace ( const MGSurface surf)
inline

Face of whole surface of no boundary.

MGFace::MGFace ( const MGFSurface surf)

Conversion constructor from MGFSurface to MGFace.

MGFace::MGFace ( MGSurface surf)
inline

Face of whole surface of no boundary. Ownership of surf is transfered to the face. (that is surf must be a newed object.)

MGFace::MGFace ( const MGSurface surf,
const std::vector< MGBoundary * > &  boundaries 
)

Construct a face by copying boundaries(only parameter rep of the boundary) from argument boundaries. Second form is to input a newed surface. The constructor takes the ownership of the surf.

MGFace::MGFace ( MGSurface surf,
const std::vector< MGBoundary * > &  boundaries 
)

関数詳解

void MGFace::add_boundary ( MGLoop nloop)

Add a new loop to this face as aboundary. When the old loops that are outside the nloop will be removed from this. nloop can be inner or outer.

int MGFace::append_boundary ( MGBoundary bound)
virtual

Append new one boundary to boundary vectors. Returned is the number of boudaries after appending. bound must be a newed MGLoop, and the ownership is transfered to this. *** append_boundary does not check validity with other loops (e.x. already existed loops will be outside the new boudanry bound). If the validity check is necessary, use add_boudanry().

MGCellを再実装しています。

void MGFace::arrow ( double  u,
double  v,
MGPosition  data[10] 
) const
virtual

Generate arrow data of the tangent along u and v and the normal at the parameter value (u,v) of the surface. data[0] is the origin of the u-tangent arrow, data[1] is the top of the u-tangent arrow, data[2], [3] are two bottoms of u-tangent arrowhead. data[0], [4], [5], [6] are the points of v-tangent arrow. data[0], [7], [8], [9] are the points of v-tangent arrow.

MGFSurfaceを実装しています。

void MGFace::arrow ( const MGPosition uv,
MGPosition  data[10] 
) const
inlinevirtual

MGFSurfaceを実装しています。

MGFace* MGFace::binder_face ( ) const

Obtain binder face pointer. Null when this does not have binder.

const MGBox& MGFace::box_param ( ) const

Return box of the parameter space of the face. After trimmed one.

const MGBox MGFace::box_param2 ( ) const
inlinevirtual

Return box of the parameter space of the FSurface. After trimmed one.

MGFSurfaceを実装しています。

std::auto_ptr<MGLoop> MGFace::build_loop ( const MGCurve crv) const

Build a loop of this face, given a closed curve crv on this face. Although crv is generally a MGCompositeCurve, this may be not the case. Returned MGLoop is not added into this face as a boundary. User must add it after the direction is adjusted. That is, the output loop can be an outer or inner loop.

引数
crvcurve of world coordinates. Generally this is not on face and always is projectd onto the face.
MGFace* MGFace::clone ( ) const
virtual

Make a clone of the cell. clone(), clone_without_boundaries() does not copy the binder cell relation.

MGCellを実装しています。

MGFace* MGFace::clone_as_face ( ) const
inlinevirtual

Get the clone of this as a MGFace. If this is MGSurface, it is converted to MGFace.

MGFSurfaceを実装しています。

MGFace* MGFace::clone_binder ( const MGCellBase f) const
virtual

Make a clone of this(this is a binder), and set binder and parameter cell relation between the new binder and the parameter cell f.

MGCellを実装しています。

MGFSurface* MGFace::clone_fsurface ( ) const
inlinevirtual

Get the clone of this MGFSurface.

MGFSurfaceを実装しています。

MGFace* MGFace::clone_without_boundaries ( ) const
virtual

Make a clone of the cell without boundaries. clone_without_boundaries() does not copy the binder cell relation.

MGCellを実装しています。

MGPosition MGFace::closest ( const MGPosition point) const
virtual

Compute closest point from a point. Returned is the parameter value of the face that is closest to point.

MGFSurfaceを実装しています。

MGPosition MGFace::closest_on_boundary ( const MGStraight sl) const
virtual

Compute closest point from a line to the boundary of the MGFSurface. Returned is the parameter value of the FSurface that is closest to point.

MGFSurfaceを実装しています。

void MGFace::display_arrows ( mgSysGL sgl) const
virtual

MGGelを再実装しています。

void MGFace::display_control_polygon ( mgSysGL sgl) const
virtual

MGGelを再実装しています。

void MGFace::draw3DVertex ( mgVBO vbo) const
virtual

Draw 3D point(vertex) in world coordinates. The object is converted to point(s) and is drawn. This is valid only for topology objects or MGPoint.

MGCellを実装しています。

void MGFace::drawWire ( mgVBO vbo,
double  span_length,
int  line_density = 1 
) const
inlinevirtual

Draw 3D curve in world coordinates. The object is converted to curve(s) and is drawn.

引数
vboTarget graphic object.
span_lengthLine segment span length.
line_densityline density to draw a surface in wire mode.

MGObjectを実装しています。

bool MGFace::equal_direction ( const MGPvector< MGCurve > &  wcurves,
const MGPvector< MGCurve > &  pcurves,
int  i 
) const

Test if directions of parameter curve and world curve of the face boundary is equal or not. This function can be used to test the pair of the output of outer_boundary() and outer_boundary_param(), or the pair of inner_boundary() and inner_boundary_param(). Return is: true if equal direction, false if opposite direction.

引数
wcurvesoutput of outer_boundary() or inner_boundary().
pcurvesoutput of outer_boundary_param() or inner_boundary_param().
iid of the curve in wcurves and pcurves to test the direction.
MGVector MGFace::eval ( double  u,
double  v,
int  ndu = 0,
int  ndv = 0 
) const
virtual

Erase i-th loop. void erase_boundary(int i); Evaluate. Input parameter value is not checked if it is in_range() or not. Even if it is not in_range(), surface evaluation will be executed.

引数
uFace parameter value u of (u,v).
vv of (u.v).
nduOrder of derivative along u.
ndvalong v.

MGFSurfaceを実装しています。

MGVector MGFace::eval ( const MGPosition uv,
int  ndu = 0,
int  ndv = 0 
) const
virtual

Evaluate at uv.

引数
uvFace parameter value(u,v)
nduOrder of derivative along u.
ndvOrder of derivative along v.

MGFSurfaceを実装しています。

void MGFace::extract_loops ( std::vector< const MGLoop * > &  loops) const

Extract all the loops of this face.

void MGFace::extract_sub_face ( const MGPvector< MGLoop > &  networks,
const MGPosition uv,
std::auto_ptr< MGFace > &  face 
) const

Extract sub face that is bounded by networks loops. Extracted sub face is the smallest closed part of this face bounded by the networks that includes the parameter position uv(u,v).

引数
networks(u,v) representation networks.
uvParameter value to indicate which part of the face to extract.
faceResult extracted face will be output.
MGFace* MGFace::face ( )
inlinevirtual

Return MGFace pointer if this MGGel is an MGFace, else return null.

MGGelを再実装しています。

const MGFace* MGFace::face ( ) const
inlinevirtual

MGGelを再実装しています。

MGPvector<MGCurve> MGFace::face_boundaries ( ) const

Obtain all the boundary curves(world coordinates representation) of the face. That is, all of the outer boundaries and all of the inner boundaries.

const MGFSurface* MGFace::fsurface ( ) const
inlinevirtual

Get the MGFSurface pointer if this is MGSurface or MGFace.

MGObjectを再実装しています。

MGFSurface* MGFace::fsurface ( )
inlinevirtual

MGObjectを再実装しています。

MGFace* MGFace::get_face_pointer ( )
inlinevirtual

Judge if the display list for vmode is made or not.

get face pointer if this is MGFace, else null will be returned.

MGFSurfaceを実装しています。

const MGFace* MGFace::get_face_pointer ( ) const
inlinevirtual

MGFSurfaceを実装しています。

std::vector<const MGLoop*> MGFace::get_inner_boundary_loops ( const MGBox uvbox) const

Get inner_aboundary loops included in the input box.

int MGFace::get_number_of_boundaries ( ) const
inlinevirtual

Get number of inner boundaries as the output of the function.

MGFSurfaceを実装しています。

MGSurface* MGFace::get_surface_pointer ( )
inlinevirtual

get surface pointer. Null will never be returned if this is valid MGFSurface. That is, if this is MGFace, base surface will be returned.

MGFSurfaceを実装しています。

const MGSurface* MGFace::get_surface_pointer ( ) const
inlinevirtual

MGFSurfaceを実装しています。

bool MGFace::has_commonFS ( const MGObject obj2) const
inlinevirtual

Test if this and 2nd object has common area about their box(), taking error into account.

MGFSurfaceを実装しています。

bool MGFace::hasInactiveLoop ( ) const

Test if this face has an inactive loop. If this has one, return true.

bool MGFace::hasLoop ( const MGBox uvbox) const
virtual

Test if this face has boundary loops or not in the specified box. If this has one, return true.

MGFSurfaceを再実装しています。

bool MGFace::hasOuterBoundaryLoop ( ) const

Test if this face has the outer boundary loop instead of perimeter boundary loops. If this has the outer boundary loop and has not perimeter boundary loops, return true.

bool MGFace::hasPerimeterBoundaryLoop ( ) const

Test if this face has perimeter boundary loops or not. If this has one, return true.

long MGFace::identify_type ( ) const
virtual

Return Object's type ID (TID)

MGCellを実装しています。

bool MGFace::in_range ( double  u,
double  v 
) const
virtual

Test if parameter value (u,v) is in the range of the face parameter.

MGFSurfaceを実装しています。

bool MGFace::in_range ( const MGPosition uv) const
virtual

MGFSurfaceを実装しています。

int MGFace::in_range_with_on ( const MGPosition uv) const
virtual

Test if (u,v) is inside the face. Function's return value is: 0:outside the face. 1:unknown. 2:inside the face, not on a boundary. <0:(u,v) is on an inner boundary, and abs(return code) is the loop id. 4:(u,v) is on the outer boundary. >=10: (u,v) is on a perimeter, (10+perimeter number) will be returned.

MGFSurfaceを実装しています。

MGPvector<MGCurve> MGFace::inner_boundary ( int  i) const
virtual

Obtain i-th inner_boundary curves(world coordinates representation) of the face. Let the output of inner_boundary(i) be wcurves and of inner_boundary_param(i) be pcurves, then wcurves[j] corresponds to pcurves[j] one to one. Number of inner_boundary can be obtained by the function number_of_inner_boundary().

MGFSurfaceを実装しています。

MGPvector<MGCurve> MGFace::inner_boundary_param ( int  i) const
virtual

Obtain i-th inner_boundary curves(world coordinates representation) of the face. Let the output of inner_boundary(i) be wcurves and of inner_boundary_param(i) be pcurves, then wcurves[j] corresponds to pcurves[j] one to one. Number of inner_boundary can be obtained by the function number_of_inner_boundary().

MGFSurfaceを実装しています。

MGisects MGFace::intersection ( const MGObject obj2) const
virtual

Compute the intersections of two objects. Intersections are obtained from two objects, which are known using the MGisects::object1() and object2(). ****NOTE**** When two objects' manifold dimension are the same, object1 is this object at the invocation of MGObject::intersection(), and object2 is the argument object. However, their manifold dimension are not the same, object1 is always the lower dimension's object and object2 is the higer dimension's object.

MGTopologyを再実装しています。

MGisects MGFace::intersection ( const MGCurve obj2) const
virtual

MGTopologyを再実装しています。

MGisects MGFace::intersection ( const MGFSurface obj2) const
virtual

MGTopologyを再実装しています。

MGisects MGFace::intersection ( const MGSurface obj2) const
virtual

MGTopologyを再実装しています。

MGisects MGFace::intersection ( const MGFace obj2) const
virtual

MGTopologyを再実装しています。

MGisects MGFace::intersection ( const MGShell obj2) const
virtual

MGTopologyを再実装しています。

MGCSisect_list MGFace::isect ( const MGCurve curv) const
virtual

Intersection.

MGFSurfaceを実装しています。

MGSSisect_list MGFace::isect ( const MGFSurface fsurf) const
virtual

MGFSurfaceを実装しています。

MGSSisect_list MGFace::isect ( const MGFace fsurf) const
virtual

MGFSurfaceを実装しています。

MGSSisect_list MGFace::isect ( const MGSurface fsurf) const
virtual

MGFSurfaceを実装しています。

MGHHisect_vector MGFace::isect ( const MGShell shell2) const
virtual

Intersection.

MGFSurfaceを実装しています。

double MGFace::knot_u ( int  i) const
inlinevirtual

Access to i-th element of u knot.

MGFSurfaceを再実装しています。

double MGFace::knot_v ( int  i) const
inlinevirtual

Access to i-th element of v knot.

MGFSurfaceを再実装しています。

const MGKnotVector& MGFace::knot_vector_u ( ) const
inlinevirtual

Returns the u knot vector.

MGFSurfaceを実装しています。

MGKnotVector& MGFace::knot_vector_u ( )
inlinevirtual

MGFSurfaceを実装しています。

const MGKnotVector& MGFace::knot_vector_v ( ) const
inlinevirtual

Returns the v knot vector.

MGFSurfaceを実装しています。

MGKnotVector& MGFace::knot_vector_v ( )
inlinevirtual

MGFSurfaceを実装しています。

MGLoop* MGFace::loop ( int  i)

Obtain i-th boundary loop of the face.

MGLoop* MGFace::loop ( iterator  i)
const MGLoop* MGFace::loop ( int  i) const
const MGLoop* MGFace::loop ( const_iterator  i) const
MGCellNB* MGFace::make_binder ( ) const
virtual

Make a binder cell of this parameter cell. Returned is the binder pointer generated by new. The binder has no geometry, only has binder and parameter cell relationship.

MGCellを実装しています。

MGFace* MGFace::make_face ( )
inlinevirtual

This is a newed MGFace or MGSurface object. If this is a MGFace, returns this pointer. If this is a MGSurface, construct a newed MGFace using this newed MGSurface, and returns the MGFace*.

MGFSurfaceを実装しています。

void MGFace::make_outer_boundary ( )

Make outer boundary if not existed.

int MGFace::manifold_dimension ( ) const
inlinevirtual

Get manifold dimension.

MGCellを実装しています。

const MGFace* MGFace::member_partner_face ( int  i) const

Obtain the i-th member partner face.

void MGFace::negate ( )
virtual

Negate the face.

MGCellNBを再実装しています。

void MGFace::negateFS ( )
inlinevirtual

Negate the FSurface.

MGFSurfaceを実装しています。

bool MGFace::no_outer_boundaries ( ) const

Test if no outer boundary except the surface perimeters. That is, test if the following two conditions are satisfied:

  1. no perimeter boundaries.
  2. no outer boundary.
MGVector MGFace::normal ( const MGPosition uv) const
inlinevirtual

Compute normal vector(not unit) at uv.

MGFSurfaceを実装しています。

MGVector MGFace::normal ( double  u,
double  v 
) const
inlinevirtual

Compute normal vector(not unit) at (u,v).

MGFSurfaceを実装しています。

int MGFace::number_of_inner_boundaries ( ) const
inlinevirtual

Get number of inner boundaries as the output of the function.

MGFSurfaceを再実装しています。

int MGFace::number_of_inner_boundaries ( int &  i) const

Get number of inner boundary loops. Returned i is the id of the first inner boundary loop if inner boundaries exist.

int MGFace::number_of_loops ( ) const

Compute number of active loops.

int MGFace::number_of_perimeter_boundaries ( ) const

Get number of perimeter boundary loop.

MGObject* MGFace::object_pointer ( )
inlinevirtual

Return MGObject pointer if this MGGel is an MGObject, else return null.

MGFSurfaceを実装しています。

const MGObject* MGFace::object_pointer ( ) const
inlinevirtual

Get the object point of this MGFSurface.

MGFSurfaceを実装しています。

MGFace MGFace::offset ( double  distance,
int &  error 
) const

Offset. distance is plus value if the direction is toward normal vector of the face. Minus if against the normal vector. エラーコード 0:成功 -1:曲率半径以上のオフセット不可 -3:面生成コンストラクタエラー

int MGFace::offset ( double  distance,
MGPvector< MGFace > &  vecOfsFace 
) const

Offset. distance is plus value if the direction is toward normal vector of the face. Minus if against the normal vector. エラーコード 0:成功 -1:曲率半径以上のオフセット不可 -3:面生成コンストラクタエラー

int MGFace::offset_fs ( double  distance,
MGPvector< MGFSurface > &  vecOfsFSurface 
) const
virtual

Offset. distance is plus value if the direction is toward normal vector of the FSurface. Minus if against the normal vector. エラーコード 0:成功 -1:曲率半径以上のオフセット不可 -3:面生成コンストラクタエラー

MGFSurfaceを実装しています。

bool MGFace::on ( const MGPosition P,
MGPosition uv 
) const
virtual

Test if a point P is on the face. Returned is true if the point P is on the face. false(0) if P was not on the face.

引数
PTarget postion data.
uvParameter value of the face is returrned. Even if P is not on the face, nearest point parameter value will be returned.

MGFSurfaceを実装しています。

bool MGFace::on_a_perimeter ( double &  u,
double &  v,
int &  perim_num 
) const
virtual

Test if input (u,v) is parameter value on a perimeter of the base surface. If u or v is on a perimeter, they will be updated to the perimeter value.

引数
uSurface parameter u of (u,v).
vSurface parameter v of (u,v).
perim_numif function returns true, the perimete number is output.

MGFSurfaceを実装しています。

MGFace MGFace::operator* ( double  s) const

Faceのスケーリングを行い,Faceを作成する。 Scaling of the Face by a double.

MGFace MGFace::operator* ( const MGMatrix mat) const

与えられた変換でFaceの変換を行い,Faceを作成する。 Transformation of the Face by a matrix.

MGFace MGFace::operator* ( const MGTransf tr) const

与えられた変換によってトランスフォームをおこないFaceを生成する。 Transformation of the Face by a MGTransf.

MGFace MGFace::operator+ ( const MGVector v) const

Faceに平行移動を行ないオブジェクトを生成する。 Translation of the Face

MGFace MGFace::operator- ( const MGVector v) const

Faceに逆方向の平行移動を行ないオブジェクトを生成する。 Translation of the Face

MGFace MGFace::operator/ ( double  s) const
inline

Complexのスケーリングを行い,Complexを作成する。 Scaling of the Complex by a double.

bool MGFace::operator< ( const MGFace gel2) const
inline

Comparison of two curves.

bool MGFace::operator< ( const MGGel gel2) const
virtual

MGGelを再実装しています。

MGFace& MGFace::operator= ( const MGGel gel2)
virtual

Assignment. When the leaf object of this and cell2 are not equal, this assignment does nothing.

MGGelを再実装しています。

MGFace& MGFace::operator= ( const MGFace gel2)
std::ostream& MGFace::out ( std::ostream &  ostrm) const
virtual

Debug Function.

MGCellを再実装しています。

int MGFace::out_to_IGES ( MGIgesOfstream igesfile,
int  SubordinateEntitySwitch = 0 
) const
virtual

PD144=MGFace. Output to PD144(Trimmed surface).

MGGelを再実装しています。

MGPvector<MGCurve> MGFace::outer_boundary ( ) const
virtual

Obtain outer_boundary curves(world coordinates representation) of the FSurface. Let the output of outer_boundary() be wcurves and of outer_boundary_param() be pcurves, then wcurves[i] corresponds to pcurves[i] one to one. The output curves can be considered as a continuous counter-clockwise ordered boundary of the surface.

MGFSurfaceを実装しています。

MGPvector<MGCurve> MGFace::outer_boundary_param ( ) const
virtual

Obtain boundary curves(parameter space representation) of the face. Let the output of boundary() be wcurves and of boundary_parameter() be pcurves, then wcurves[i] corresponds to pcurves[i] one to one.

MGFSurfaceを実装しています。

std::ostream& MGFace::outFS ( std::ostream &  ostrm) const
inlinevirtual

Output virtual function.

MGFSurfaceを実装しています。

MGPosition MGFace::param ( const MGPosition P) const
virtual

Obtain parameter value of the face whose world coordinates are P.

MGFSurfaceを実装しています。

double MGFace::param_e_u ( ) const
virtual

Return ending parameter value.

MGFSurfaceを実装しています。

double MGFace::param_e_v ( ) const
virtual

MGFSurfaceを実装しています。

MGBox MGFace::param_range ( ) const
inlinevirtual

パラメータ範囲を返す。 Return parameter range.

MGFSurfaceを実装しています。

double MGFace::param_s_u ( ) const
virtual

Return starting parameter value of the base surface.

MGFSurfaceを実装しています。

double MGFace::param_s_v ( ) const
virtual

MGFSurfaceを実装しています。

MGPvector<MGCurve> MGFace::parameter_curves ( int  is_u,
double  x 
) const
virtual

Obtain parameter curves. In the case of surface, parameter curve is only one. However, in the case of face, number of parameter curves are more than one.

引数
is_uTrue(!=0) if x is u-value.(i.e. obtain u=const line)
xparameter value. u or v-value accordint to is_u.

MGFSurfaceを実装しています。

MGShell* MGFace::parent_shell ( )

Obtain parent shell that this face belongs to.

const MGShell* MGFace::parent_shell ( ) const
MGPvector<MGCurve> MGFace::PBloop_curves ( ) const

Obtain perimeter boundadary loop's curve representation. Returned are curves of perimeter boundaries, do not contain perimeter of the surface.

bool MGFace::perp_guess ( const MGPosition P,
const MGPosition uvguess,
MGPosition uv 
) const
virtual

Return the foot of the perpendicular straight line from P. Computation is done from the guess parameter value. Function's return value is whether point is obtained(true) or not(false).

引数
PPoint
uvguessguess parameter value of the shell
uvParameter value will be returned.

MGFSurfaceを実装しています。

bool MGFace::perp_guess ( const MGCurve curve,
const MGPosition uvguess,
double  tguess,
MGPosition uv,
double &  t 
) const
virtual

Compute perpendicular points of a curve and the face, given guess starting paramter values. Function's return value is: perp_guess=true if perpendicular points obtained, perp_guess=false if perpendicular points not obtained,

引数
curvecurve.
uvguessGuess parameter value of the face.
tguessGuess parameter value of the curve.
uvperpendicular point's parameter values of the shell
twill be output.

MGFSurfaceを実装しています。

int MGFace::perp_point ( const MGPosition p,
MGPosition uv,
const MGPosition uvguess = 0 
) const
virtual

指定点から最も近い、垂線の足とパラメータ値を返す。 Return the foot of the perpendicular straight line from p that is nearest to point p. Function's return value is whether point is obtained(1) or not(0)

引数
p指定点(point)
uvParameter value of the surface will be returned.
uvguessguess parameter value of surface

MGFSurfaceを実装しています。

MGPosition_list MGFace::perps ( const MGPosition P) const
virtual

Compute perpendicular points on the face from a point P((x,y,z)). MGPosition uv in the MGPosition_list is: uv(0): u parameter, and uv(1): v parameter of the face. Generally number of uv are more than one.

MGFSurfaceを実装しています。

MGPosition MGFace::pick_closest ( const MGStraight sl) const
virtual

Compute the parameter value of the closest point from the straight to this object. sl is the eye projection line whose direction is from yon to hither, and if sl had multiple intersection points, The closest point to the eye will be selected.

MGObjectを再実装しています。

MGPosition MGFace::range ( const MGPosition uv) const
virtual

Round the input parameter (u,v) of the face to the nearest point of the face parameter range.

MGFSurfaceを実装しています。

void MGFace::ReadMembers ( MGIfstream buf)
protectedvirtual

Read Object's member data.

MGCellを再実装しています。

std::auto_ptr<MGFace> MGFace::rebuild ( int  how_rebuild = 1,
int  parameter_normalization = 2,
double  tol = -1.,
int *  order = 0,
double *  range = 0 
) const

Rebuild this face. Rebuild means: 1) Rebuild the base surface. 2) Rebuild the parameter edges. 3) Rebuild the binder edges from the rebuilt parameter edges. This rebuild does not change the number of edges. All of the old edges does exist after the rebuild. Base surface rebuild is done only when the base surface is MGSBRep, or MGRSBRep.

引数
how_rebuildintdicates how rebuild be done. =0: no base surface approximation(only parameter change) =1: If base surface is MGRSBRep, reconstruct it with new knot configuration again as rational spline(MGRSBRep). If MGSBRep, reconstruct with new knot configuration as MGSBRep. =2: approximated by non-rational spline(MGSBRep) with new knot configuration, even base surface is MGRSBRep. If the base surface is MGSBRep, same as =1.
parameter_normalizationIndicates how the parameter normalization be done: =0: no surface parameter normalization. =1: normalize to u_range=(0., 1.), and v_range=(0.,1.); =2: normalize to make the average length of the 1st deriv along u and v of the base surface is as equal to 1. as possible. =3: Specify parameter range in range[4].
toltolerance allowed for the approximation. When tol<=0., MGTolerance::line_zero() will be employed.
orderorder of the new MGSBRep, >=4 is recomended. order[0]:u-order, [1]:v-order. When how_rebuild!=2, order is not used. When order=0 is input, order[0]=order[1]=4 are assumed.
rangevalid only when parameter_normalization=3, and range[]={umin, umax, vmin, vmax}. When parameter_normalization=3 and range=0, parameter_normalization=2 is assumed.
void MGFace::remove_inactive_loops ( )

Remove inactive loops from this face.

void MGFace::rotateBoundary ( const MGMatrix mat)

Rotate only the boundary of this face, but do not rotate the base surface. This is designed for the face of scalePolar().

void MGFace::scalePolar ( double  angleBase,
double  angle1,
double  angle2 
)

Execute polar-scaling to this MGFace. Parameter curve's (u,v) of the boundary loops are updated, and the binder edges extents are removed if exist. The base surface is unchanged. The updated result parameter curve is always MGLBRep.

Rotation is performed from the angle range (angleBase,angle1) to (angleBase,angle2). That is, when angle1=angle2, no change is done. When angle2 is angleBase, all the data will lie on the straight of from origin to (cos(angleBase), sin(angleBase)). angle1-angleBase must be >MGTolerance::angle_zero().

引数
angleBasebase angle.
void MGFace::shade ( mgVBO vbo,
const MGDrawParam para,
mgVBO::ELEMENT_TARGET  target = mgVBO::SHADING 
) const
virtual

Shade the object in world coordinates.

引数
vboTarget graphic object.
paraParameter to draw.
targetShading target.

MGObjectを再実装しています。

void MGFace::shrink_base_surface_to_knot ( int  multiple = 0)

Shrink the base surface of this face to the part limitted by the parameter range of uvbx. New parameter range uvbx2 is so determined that uvbx2 is the smallest box tha includes uvbx, and all of the u or v values of uvbx2 is one of the values of u or v knots of the surface knotvector. uvbx(0) is the parameter (us,ue) and uvbx(1) is (vs,ve). That is u range is from us to ue , and so on.

引数
multipleIndicates if start and end knot multiplicities are necessary. =0:unnecessary, !=0:necessary.
void MGFace::sort_boundaries ( )
virtual

Sort boundary occurreces in m_boundaries. Sorting is done according to operator< of MGBoundary. parameter space box will be set.

MGCellを再実装しています。

void MGFace::split ( double  param,
bool  is_u,
MGPvector< MGFSurface > &  surfaces 
) const
virtual

split this fsurface at the parameter param.

引数
paramparameter value of this fsurface. if is_u is true, param is u-value, else v-value.
is_uindicates if param is u or v of the surface parameter (u,v).
surfacessplitted surfaces will be output.

MGFSurfaceを実装しています。

void MGFace::split ( const MGPvector< MGLoop > &  networks,
MGPvector< MGFace > &  faces 
) const

Split the face giving networks loops. Splitting is done by finding the smallest closed areas out of networks.

引数
networksNetwork to split.
facesResult trimmed face(s) will be appended.
MGSurface* MGFace::surface ( )

Get surface pointer.

const MGSurface* MGFace::surface ( ) const
virtual void MGFace::triangulate ( const MGDrawParam para,
MGCL::TL_DATA_KIND  dkind,
std::vector< mgTL2Triangles > &  trisVec 
) const
virtual

Triangulate this object(MGShell, MGFace, or MGSurface is the target).

MGFSurfaceを実装しています。

int MGFace::trim ( const MGCurve pcrv)

Trim the face giving parameter curve and world curve of a curve on the face. crv has a direction. That is, when this face is divided into two faces, left part face of the crv is the face selected.

When the pcrv is connected to already existed boundary curve, no new boundary is generated, and inserted(connected) to the old boundary. However, new projection is floating, that is, not connected to any old boundaries, or this boundary is the first boundary, new boundary is generated. Function's return value is error code: 0= normal return (not error, this includes the case of inactive loop generation). 1= input pcrv includes a part that is outside surface parameter range. 2= tried to generate outer boundary loop inside perimeter boudary. 3= tried to generate inner boundary loop that incudes active loop inside. 4= tried to generate perimeter boudary loop that inactivates perimeter boundary loops existed. 5= tried to generate a loop outside the face.

引数
pcrvparameter(u,v) space curve of the face.
int MGFace::trim ( const MGLoop new_loop_in)

Trim the face giving a loop new_loop that does not have the parent face. new_loop mus be parrameter representaion of this face and must not have intersections with the loops of this face except the end points of new_loop.

Function's return value is error code: 0= normal return (not error, this includes the case of inactive loop generation). 2= tried to generate outer boundary loop inside perimeter boudary. 3= tried to generate inner boundary loop that incudes active loop inside. 4= tried to generate perimeter boudary loop that inactivates perimeter boundary loops existed. 5= tried to generate a loop outside the face.

void MGFace::trim ( const MGPvector< MGLoop > &  networks,
const MGPosition uv,
MGPvector< MGFace > &  faces 
) const

Trim the face giving networks loops. Trimming is done by removing the smallest closed area out of networks that includes the parameter position uv(u,v).

引数
networksnetwork to trim the face.
uvposition parameter data to indicate which part of the face to trim.
facesResult trimmed face(s) will be appended.
int MGFace::trim_projection ( const MGCurve crv,
const MGVector direction = mgNULL_VEC 
)

Trim the face by the projection of a curve along a vector direction. If mgNULL_VEC is specified as direction, surface normal projection will be employed. crv has a direction. That is, when this face is divided into two faces, left part face of the crv is the face selected.

When the projected curve on the face is connected to already existed boundary curve, no new boundary is generated, and inserted(connected) to the old boundary. However new projection is floating, that is, not connected to any old boundaries, or this boundary is the first boundary, new boundary is generated. Function's return value is error code: 0= normal return (not error, this includes the case of inactive loop generation) 2= tried to generate outer boundary loop inside perimeter boudary. 3= tried to generate inner boundary loop that incudes active loop inside. 4= tried to generate perimeter boudary loop that inactivates perimeter boundary loops existed. 5= tried to generate a loop outside the face.

引数
crvcurve of world coordinates. Generally this is not on face and always is projectd to the face.
directionProjection directin vector.
MGUnit_vector MGFace::unit_normal ( const MGPosition uv) const
inlinevirtual

Compute unit normal vector at uv.

MGFSurfaceを実装しています。

MGUnit_vector MGFace::unit_normal ( double  u,
double  v 
) const
inlinevirtual

Compute unit normal vector at (u,v).

MGFSurfaceを実装しています。

std::string MGFace::whoami ( ) const
inlinevirtual

MGCellを再実装しています。

void MGFace::WriteMembers ( MGOfstream buf) const
protectedvirtual

Write Object's Member Data.

MGCellを再実装しています。

フレンドと関連関数の詳解

MG_DLL_DECLR friend MGFace operator* ( double  s,
const MGFace face 
)
friend

Faceのスケーリングを行い,Faceを作成する。 Scaling of the Face by a double.


このクラス詳解は次のファイルから抽出されました: