MGCL V10
V10
MGCL V10
|
MGLoop is a boundary of a face, a boundary of 2D manifold cell. [詳解]
公開型 | |
enum | LoopKind { UNDEFINED =-1, INACTIVE =0, PERIMITER_LOOP =1, OUTER_LOOP =2, INNER_LOOP =3, NETWORK =4 } |
基底クラス MGComplex に属する継承公開型 | |
typedef std::list< MGCellNB * > | container_type |
typedef container_type::iterator | cellItr |
typedef container_type::const_iterator | const_cellItr |
typedef container_type::iterator | pcellItr |
typedef container_type::const_iterator | const_pcellItr |
typedef container_type::iterator | bcellItr |
typedef container_type::const_iterator | const_bcellItr |
公開メンバ関数 | |
MGLoop () | |
Void constructor. [詳解] | |
MGLoop (MGEdge *edge) | |
Construct a loop of one edge. [詳解] | |
MGLoop (const MGLoop &loop2) | |
Copy constructor. [詳解] | |
MGLoop (const MGCurve ¶m_curve, const MGCurve &world_curve) | |
MGLoop (const MGCurve ¶m_curve, const MGInterval &range1, const MGCurve &world_curve, const MGInterval &range2) | |
MGLoop (std::auto_ptr< MGCurve > ¶m_curve, std::auto_ptr< MGCurve > &world_curve) | |
MGLoop & | operator= (const MGGel &gel2) |
MGLoop & | operator= (const MGLoop &gel2) |
MGLoop & | operator+= (const MGVector &v) |
Object transformation. [詳解] | |
MGLoop & | operator-= (const MGVector &v) |
MGLoop & | operator*= (double scale) |
MGLoop & | operator*= (const MGMatrix &mat) |
MGLoop & | operator*= (const MGTransf &tr) |
bool | operator< (const MGLoop &gel2) const |
bool | operator< (const MGComplex &gel2) const |
comparison [詳解] | |
bool | operator< (const MGGel &gel2) const |
bool | active () const |
Test if this is active boundary. [詳解] | |
void | append (MGEdge *edge) |
void | append_edge_from_crv (const MGSurface &srf, const MGCurve &wcrv, double &tLast, double terror, const std::vector< double > &pspan, int peri_num, bool orientation_is_opposite=false) |
double | area () const |
bool | both_end_on_perimeter (int &pid_s, int &pid_e, const MGFSurface *srf=0) const |
MGLoop * | clone (MGCell &parent) const |
MGLoop * | clone () const |
MGLoop * | clone_without_binders (MGCell &parent) const |
MGLoop * | clone_without_binders () const |
bool | closed () const |
Test if this is closed boundary. [詳解] | |
MGLEPoint | closest (const MGPosition &P, double &distance) const |
bool | closest_world (const MGStraight &sl, MGLEPoint &closest, double &dist) const |
int | common (const MGLoop &loop2, std::vector< MGLEPoint > &pranges1, std::vector< double > &branges1, std::vector< MGLEPoint > &pranges2, std::vector< double > &branges2) const |
double | compute_area () const |
void | copy_boundary (const MGBoundary &loop) |
void | copy_boundary_without_binders (const MGBoundary &loop) |
Copy boundary data into this, but does not copy the binders. [詳解] | |
MGPvector< MGCurve > | curves () const |
MGPvector< MGCurve > | curves_world () const |
MGEdge * | edge (int i) |
Return i-th edge pointer. [詳解] | |
const MGEdge * | edge (int i) const |
bool | edge_exist () const |
Test if at least one edge is included in this loop. [詳解] | |
int | edge_num (const MGEdge *e) const |
MGPosition | end_point () const |
MGLEPoint | end_LPoint () const |
double | error () const |
MGVector | eval (const MGLPoint &t, int nderi=0) const |
Evaluation of the loop at the point t. [詳解] | |
MGVector | eval (int i, double t, int nderi=0) const |
Evaluation of the loop at i-th edge's parameter t. [詳解] | |
const MGFace * | face () const |
MGFace * | face () |
Return MGFace pointer if this MGGel is an MGFace, else return null. [詳解] | |
const MGEdge * | first_edge () const |
Return pointer of the first edge. [詳解] | |
MGEdge * | first_edge () |
int | get_loop_id_in_face () const |
int | inside (double u, double v) const |
int | inside (const MGPosition &uv) const |
long | identify_type () const |
Return Object's type ID (TID) [詳解] | |
MGLCisect_vector | isect (const MGCurve ¶m_curve) const |
MGLCisect_vector | isect (double error, const MGCurve ¶m_curve) const |
std::vector< MGLEPoint > | isect_1D (double f, int coordinate=0) const |
MGLCisect_vector | isect_with_endpoints (const MGCurve ¶m_curve) const |
bool | is_inactive (const MGFSurface *srf=0) const |
Test if this loop is inactive or not. [詳解] | |
bool | is_inner_boundary (const MGFSurface *srf=0) const |
bool | is_outer_boundary (const MGFSurface *srf=0) const |
bool | is_perimeter_boundary (const MGFSurface *srf=0) const |
bool | is_network (const MGFSurface *srf=0) const |
Test if this loop is network. [詳解] | |
MGLLisect_vector | isect (const MGLoop &loop2) const |
Compute intersections of two loops. [詳解] | |
void | join (bool start, const MGLoop &loop2) |
void | join (bool start, MGLoop *loop2) |
void | join (bool start, std::auto_ptr< MGLoop > &loop2) |
void | join_C1_edges (int parameter_normalization=2) |
const MGEdge * | last_edge () const |
Return edge pointer of the last edge. [詳解] | |
MGEdge * | last_edge () |
void | make_close () |
bool | make_vertex (const MGLEPoint &lp, MGEdge *&pre, MGEdge *&aft, MGPVertex **pvertex=0) |
int | manifold_dimension () const |
Get manifold dimension. [詳解] | |
bool | merge_network (const MGCurve ¶m_curve, double error) |
bool | merge_trim (const MGCurve ¶m_curve) |
bool | merge_trim (const MGCurve ¶m_curve, const MGInterval &range1) |
bool | merge_trim (const MGCurve ¶m_curve, const MGCurve &world_curve) |
bool | merge_trim (const MGCurve ¶m_curve, const MGInterval &range1, const MGCurve &world_curve) |
bool | merge_trim (const MGLoop &loop2) |
MGPosition | mid_point () const |
void | negate () |
void | negate_as_boundary (const MGCellNB *parent=0) |
int | number_of_edges () const |
Get the number of edge included. [詳解] | |
bool | on_perimeter_end (int &pid_e, const MGFSurface *surf=0) const |
bool | on_perimeter_start (int &pid_s, const MGFSurface *surf=0) const |
bool | on_surface_perimeter (const MGFace &f) const |
Test if all the edges included are on a surface perimeter. [詳解] | |
std::ostream & | out (std::ostream &) const |
Output function. [詳解] | |
void | prepend (MGEdge *e) |
Prepend edge to the start of the loop. [詳解] | |
bool | remove_pendent_edge (const MGFSurface &face) |
void | remove_garbage_edge (double error) |
const MGSurface * | surface () const |
Obtain parent surface pointer. [詳解] | |
MGLEPoint | start_LPoint () const |
MGPosition | start_point () const |
std::vector< MGEdge * > | subdivide (const std::vector< MGLEPoint > &ranges) |
MGEdge * | subdivide (MGLEPoint &le1, MGLEPoint &le2) |
void | trim (const MGLEPoint &t1, const MGLEPoint &t2) |
void | trim_end (const MGLEPoint &t1) |
Trim the loop. Result is from start to t1. [詳解] | |
void | trim_start (const MGLEPoint &t1) |
Trim the loop. Result is from t1 to end. [詳解] | |
基底クラス MGBoundary に属する継承公開メンバ関数 | |
MGBoundary () | |
Void constructor. [詳解] | |
MGBoundary (MGCellNB *pcell) | |
Constructor of one parameter cell. [詳解] | |
MGBoundary (std::list< MGCellNB * > &pcells) | |
Constructor from list of member pcells. [詳解] | |
MGBoundary (const MGBoundary &boundary) | |
Boundary data pcells that constitute complex. [詳解] | |
virtual | ~MGBoundary () |
original boundary. [詳解] | |
virtual MGBoundary & | operator= (const MGBoundary &gel2) |
MGUnit_vector | direction_star (int i) const |
bool | empty () |
bool | equal_direction (int i, const MGBoundary &bound2, int j) const |
int | number_of_pcells () const |
Obtain how many parameter cells are included in the boundary. [詳解] | |
void | set_binder (int i, MGCellNB &binder) const |
MGCell * | set_parent (MGCell &new_parent) const |
const MGCellNB * | star () const |
Get the star cell. [詳解] | |
MGCellNB * | star () |
基底クラス MGComplex に属する継承公開メンバ関数 | |
MGComplex () | |
Void constructor. [詳解] | |
MGComplex (const MGComplex &complex) | |
MGComplex (const MGCellNB &cell) | |
MGComplex (MGCellNB *cell) | |
virtual | ~MGComplex () |
virtual MGComplex & | operator= (const MGComplex &gel2) |
MGComplex | operator+ (const MGVector &v) const |
MGComplex | operator- (const MGVector &v) const |
MGComplex | operator* (double s) const |
MGComplex | operator* (const MGMatrix &mat) const |
MGComplex | operator* (const MGTransf &tr) const |
MGComplex | operator/ (double s) const |
const_bcellItr | bcell_begin () const |
Obtain first bcell iterator. [詳解] | |
bcellItr | bcell_begin () |
const_bcellItr | bcell_end () const |
Obtain end bcell iterator(next of the last bcell). [詳解] | |
bcellItr | bcell_end () |
const MGCellNB * | bcelli (int i) const |
Obtain i-the pcell in the m_bcells sequence. MGCellNB version. [詳解] | |
MGCellNB * | bcelli (int i) |
const_bcellItr | bcellIterator (int i) const |
Obtain i-the pcell in the m_bcells sequence. MGCellNB version. [詳解] | |
bcellItr | bcellIterator (int i) |
bool | bcell_exist () const |
Cehck if bcell exist. [詳解] | |
MGCellNB * | binder (int i) const |
Obtain the binder of i-the pcell, may be null. [詳解] | |
std::vector< MGCellNB * > | binders () const |
const MGBox & | box () const |
Return the box of this complex. [詳解] | |
MGPosition | center () const |
void | drawWire (mgVBO &vbo, double span_length, int line_density=1) const |
virtual void | drawWire_in_star (mgVBO &vbo, double span_length, int line_density=1) const |
virtual void | draw3DVertex (mgVBO &vbo) const |
virtual void | draw3DVertex_in_star (mgVBO &vbo) const |
void | erase_first_pcell () |
void | erase_last_pcell () |
erase first pcell. [詳解] | |
void | erase_pcell (MGCellNB *pcell) |
erase last pcell. [詳解] | |
const MGCellNB * | first_pcell () const |
Get fisrt pcell pointer. [詳解] | |
MGCellNB * | first_pcell () |
bool | includes (const MGCellNB *cell) const |
const MGCellNB * | last_pcell () const |
Get last pcell pointer. [詳解] | |
MGCellNB * | last_pcell () |
int | number_of_bcells () const |
count number of bcells of the complex [詳解] | |
int | number_of_pcells () const |
count number of pcells of the complex [詳解] | |
const_pcellItr | pcell_begin () const |
Obtain first pcell iterator. [詳解] | |
pcellItr | pcell_begin () |
const_pcellItr | pcell_end () const |
Obtain end pcell iterator(next of the last pcell). [詳解] | |
pcellItr | pcell_end () |
const MGCellNB * | pcelli (int i) const |
Obtain i-the pcell. MGCellNB version. [詳解] | |
MGCellNB * | pcelli (int i) |
const_pcellItr | pcellIterator (int i) const |
Obtain i-th pcell iterator. [詳解] | |
pcellItr | pcellIterator (int i) |
bool | pcell_exist () const |
Cehck if pcell exist. [詳解] | |
std::vector< MGCellNB * > | pcells () |
std::vector< const MGCellNB * > | pcells () const |
MGPosition | pick_closest (const MGStraight &sl) const |
const MGCellNB * | star () const |
MGCellNB * | star () |
基底クラス MGTopology に属する継承公開メンバ関数 | |
MGTopology () | |
Void constructor(初期化なしでオブジェクトを作成する。) [詳解] | |
MGTopology (const MGTopology &topo) | |
Copy constructor. [詳解] | |
virtual | ~MGTopology () |
virtual MGTopology & | operator= (const MGTopology &gel2) |
virtual MGisects | intersection (const MGObject &obj2) const |
virtual MGisects | intersection (const MGCurve &obj2) const |
virtual MGisects | intersection (const MGFSurface &obj2) const |
virtual MGisects | intersection (const MGSurface &obj2) const |
virtual MGisects | intersection (const MGFace &obj2) const |
virtual MGisects | intersection (const MGShell &obj2) const |
MGTopology * | topology () |
Return MGTopology pointer if this MGGel is an MGTopology, else return null. [詳解] | |
const MGTopology * | topology () const |
基底クラス MGObject に属する継承公開メンバ関数 | |
MGObject () | |
Void constructor(初期化なしでオブジェクトを作成する。) [詳解] | |
MGObject (const MGObject &obj2) | |
Copy constructor. [詳解] | |
virtual | ~MGObject () |
Virtual Destructor. [詳解] | |
virtual MGObject & | operator= (const MGObject &obj2) |
MGAppearance * | appearance () |
const MGAppearance * | appearance () const |
virtual void | shade (mgVBO &vbo, const MGDrawParam ¶, mgVBO::ELEMENT_TARGET target=mgVBO::SHADING) const |
Shade the object in world coordinates. [詳解] | |
MGAppearance * | ensure_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 MGObject * | includes_object () const |
Test if this gel includes an object. [詳解] | |
MGObject * | includes_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 MGObject * | object () |
Return MGObject pointer if this MGGel is an MGObject, else return null. [詳解] | |
virtual const MGObject * | object () const |
virtual const MGFSurface * | fsurface () const |
Get the MGFSurface pointer if this is MGSurface or MGFace. [詳解] | |
virtual MGFSurface * | fsurface () |
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 MGAttribedGel & | operator= (const MGAttribedGel &gel2) |
virtual | ~MGAttribedGel () |
void | copy_appearance (const MGAttribedGel &gel2) |
mgVBO * | dlist_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 MGName * | get_name () const |
void | set_color (const MGColor &newColor) |
const MGColor * | get_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 int | out_to_IGES (MGIgesOfstream &igesfile, int SubordinateEntitySwitch=0) const |
virtual MGAttrib * | attrib () |
Return MGAttrib pointer if this MGGel is an MGAttrib, else return null. [詳解] | |
virtual const MGAttrib * | attrib () const |
virtual MGGroup * | group () |
Return MGGroup pointer if this MGGel is an MGGroup, else return null. [詳解] | |
virtual const MGGroup * | group () const |
virtual MGGeometry * | geometry () |
Return MGGeometry pointer if this MGGel is an MGGeometry, else return null. [詳解] | |
virtual const MGGeometry * | geometry () const |
virtual MGPoint * | point () |
Return point pointer if this MGGel is an MGPoint, else return null. [詳解] | |
virtual const MGPoint * | point () const |
virtual MGCurve * | curve () |
Return curve pointer if this MGGel is an MGCurve, else return null. [詳解] | |
virtual const MGCurve * | curve () const |
virtual MGSurface * | surf () |
Return MGSurface pointer if this MGGel is an MGSurface, else return null. [詳解] | |
virtual const MGSurface * | surf () const |
virtual MGShell * | shell () |
Return MGShell pointer if this MGGel is an MGShell, else return null. [詳解] | |
virtual const MGShell * | shell () const |
std::string | string_content () const |
bool | type_is (const MGAbstractGels &types) const |
virtual void | display_arrows (mgSysGL &sgl) const |
virtual void | display_break_points (mgSysGL &sgl) const |
virtual void | display_control_polygon (mgSysGL &sgl) const |
virtual void | display_curvatures (mgSysGL &sgl, double scale, int density, bool use_radius) const |
限定公開メンバ関数 | |
MGLoop (std::list< MGCellNB * > boundaries) | |
MGLoop (const MGLoop &loop, MGCellMap &cmap) | |
MGLoop * | clone (MGCell &parent, MGCellMap &cmap) const |
MGLoop * | clone (MGCellMap &cmap) const |
std::string | whoami () const |
void | ReadMembers (MGIfstream &buf) |
Read Object's member data. [詳解] | |
void | WriteMembers (MGOfstream &buf) const |
Write Object's Member Data. [詳解] | |
基底クラス MGBoundary に属する継承限定公開メンバ関数 | |
MGBoundary (const MGBoundary &boundary, MGCellMap &cmap) | |
void | connect_bound (int i, MGBoundary *bound2, int j) |
void | disconnect (int i) |
void | free_binders () |
MGBoundary & | set_boundary (const MGBoundary &gel2) |
基底クラス MGComplex に属する継承限定公開メンバ関数 | |
MGComplex (std::list< MGCellNB * > &pcells) | |
MGComplex (const MGComplex &complex, MGCellMap &cmap) | |
Binder cells of the pcells in complex will be registered in cmap. [詳解] | |
cellItr | append_bcell (MGCellNB *cell) const |
cellmap to register binder association. [詳解] | |
cellItr | add_cell (MGCellNB *cell, bool pcell, cellItr loc) |
cellItr | append_pcell (MGCellNB *cell) |
Append a PCell to the end of pcell sequence. [詳解] | |
virtual void | compute_box () const |
Compute the box from the scratch. [詳解] | |
void | copy_without_binders (const MGComplex &comp) |
void | erase_all_elements () |
cellItr | prepend_pcell (MGCellNB *cell) |
Prepend a PCell to the end of pcell sequence. [詳解] | |
MGComplex & | set_complex (const MGComplex &comp2) |
基底クラス MGObject に属する継承限定公開メンバ関数 | |
MGObject & | set_object (const MGObject &gel2) |
フレンド | |
MG_DLL_DECLR friend MGEdge * | edge_from_iterator (pcellItr i) |
Get edge pointer from its iterator in MGComplex of MGBoudarynD. [詳解] | |
MG_DLL_DECLR friend const MGEdge * | edge_from_iterator (const_pcellItr i) |
MG_DLL_DECLR friend MGVector | eval (const MGLEPoint &t, int nderi=0) |
Evaluation of the loop at the point t. [詳解] | |
MG_DLL_DECLR friend int | inside_outer_loop (const MGPosition &uv, const std::vector< const MGLoop * > &loop, const MGSurface *surf=0) |
Test if (u,v) is inside the outer boundary(of std::vector<MGLoop*>& boundaries). [詳解] | |
その他の継承メンバ | |
基底クラス MGBoundary に属する継承限定公開変数類 | |
MGCell * | m_parent_cell |
Cell that has this boundary as a boundary. [詳解] | |
基底クラス MGComplex に属する継承限定公開変数類 | |
MGBox | m_box |
基底クラス MGAttribedGel に属する継承限定公開変数類 | |
std::auto_ptr< mgVBO > | m_dlistName |
display name if m_dlistName!=0; [詳解] | |
MGLoop is a boundary of a face, a boundary of 2D manifold cell.
MGLoop accepts parameter space curve and world space curve of of a boundary curve, and constructs a boundary of a face from the two types of curves. Input curves direction indicate which part of the face will be target part after trimed by the boundary. In 2D space (u,v) of the parameter space, LEFT side of the parameter curve along the curve's direction is the target part of face.
MGLoop::MGLoop | ( | ) |
Void constructor.
|
explicit |
Construct a loop of one edge.
MGLoop::MGLoop | ( | const MGLoop & | loop2 | ) |
Copy constructor.
Construct a Loop of one edge of one curve cell. param_curve is parameter space representation of the face of which this loop will be a boundary, will make parameter cell. world_curve is world coordinate representation of the face of which this loop will be a boundary, will make binder cell. range1 is parameter range of the curve param_curve, range2 is parameter range of the curve world_curve. When range1,2 are not specified, the start and the end of the curve are treated as their ranges. ***param_curve and world_curve must have the same direction.
MGLoop::MGLoop | ( | const MGCurve & | param_curve, |
const MGInterval & | range1, | ||
const MGCurve & | world_curve, | ||
const MGInterval & | range2 | ||
) |
|
protected |
Fundamental constructor. Construct from boundary complex(i.e. MGLoop). This constructor takes the ownership of MGCell* in boundary.
boundaries | Boundary data of the super class MGBoundary. |
|
protected |
Copy constructor with mapping. Binder cells of the pcells in loop will be registered in cmap
loop | original Loop. |
cmap | cellmap to register binder association. |
|
virtual |
Test if this is active boundary.
MGBoundaryを実装しています。
void MGLoop::append | ( | MGEdge * | edge | ) |
Append edge to the end of loop. "append" connects the edge's start to the end of the loop.
void MGLoop::append_edge_from_crv | ( | const MGSurface & | srf, |
const MGCurve & | wcrv, | ||
double & | tLast, | ||
double | terror, | ||
const std::vector< double > & | pspan, | ||
int | peri_num, | ||
bool | orientation_is_opposite = false |
||
) |
Build one edge of srf from the curve wcrv on srf and common information pspan and peri_num, which are a perimeter peri_num's parameter spans(psapn). wcrv must not be a MGCompositeCurve. One edge is generated and append to this loop.
srf | The target surface. |
wcrv | curve of world coordinates on this face that may coincide to a perimeter of the surface of this face. |
tLast | wcrv's parameter value to start is input and the end param value of the last edge generated will be output. |
terror | wcrv's parameter space error. |
pspan | common parameter value of a perimeter peri_num. |
peri_num | pspan and peri_num are output of getPerimeterCommon(). Refer to it. |
orientation_is_opposite | orientation flag of wcrv to edge. True if opposite. |
double MGLoop::area | ( | ) | const |
Compute curvilinear integral of the parameter space of the area sorrounded by the loop.
bool MGLoop::both_end_on_perimeter | ( | int & | pid_s, |
int & | pid_e, | ||
const MGFSurface * | srf = 0 |
||
) | const |
Test if loop is a perimeter boundary or not. If yes, get the perimeter ids. pid_s, e are valid only when both_end_on_perimeter() is true, contain perimeter numbers of the start or end of the loop.
Make a clone. Output is a newed object, must be deleted by calling program.
MGBoundaryを実装しています。
|
virtual |
Construct new object by copying to newed area. User must delete this copied object by "delete".
MGBoundaryを実装しています。
Make a clone. The forms that have cmap as an argumetnt is to register binder association. Returned is pointer of newed object, must be deleted. When parent is specified, clone's parent is set to the parent.
MGBoundaryを実装しています。
|
protectedvirtual |
MGBoundaryを実装しています。
Make a clone that has not binders. Output is a newed object, must be deleted by calling program.
MGBoundaryを実装しています。
|
virtual |
MGBoundaryを実装しています。
|
virtual |
Test if this is closed boundary.
MGBoundaryを実装しています。
MGLEPoint MGLoop::closest | ( | const MGPosition & | P, |
double & | distance | ||
) | const |
Compute closest point from the point P to this loop. Returned is the loop's point, and distance is the length of distance between P and MGLEPoint. All the coordinate values are of parameter space of the face's surface.
bool MGLoop::closest_world | ( | const MGStraight & | sl, |
MGLEPoint & | closest, | ||
double & | dist | ||
) | const |
Compute closest point closest(P in the world) of the loop(MGLEPoint) from the straight sl to this loop's world coordinate rep. The function's return value is true: if a point whose distance is smaller than dist is found, false: if not. Returned to closest is the loop's point, and the distance between P and MGLEPoint's world rep is set into dist if found. The coordinates of P are of world coordinate space of the loops world coordinate rep. This must be a boundary of a surface(that is, face() must not be null.
int MGLoop::common | ( | const MGLoop & | loop2, |
std::vector< MGLEPoint > & | pranges1, | ||
std::vector< double > & | branges1, | ||
std::vector< MGLEPoint > & | pranges2, | ||
std::vector< double > & | branges2 | ||
) | const |
Compute common range of two loops, this and loop2. Function's return value is number of ranges obtained. In variable ranges, common ranges are output as: Let n be output of the function, then ranges1.size()=ranges2.size()=2*n. ranges1[2*i+0] and ranges1[2*i+1] are parameter values of this loop, and ranges2[2*i+0] and ranges2[2*i+1] are parameter values of loop2. Although ranges1[2*i+0] < ranges1[2*i+1] always holds, ranges2[2*i+0] < ranges2[2*i+1], or ranges2[2*i+0] > ranges2[2*i+1]. Let f1() be this loop, and f2() be loop2, then f1(ranges1[j]) and f2(ranges2[j]) represent the same point in star Face world for 0<=j<n*2 . This and loop2 must have each star faces.
double MGLoop::compute_area | ( | ) | const |
Compute curvilinear integral of the loop. Computation is done in the parameter space of the face.
|
virtual |
Copy loop data into this. This boundary data is cleared and loop's boundary is copied into this.
MGBoundaryを再実装しています。
|
virtual |
Copy boundary data into this, but does not copy the binders.
MGBoundaryを再実装しています。
Obtain vector of curves(TrimmedCurve) of the loop. The curves are of parameter space expression. Let crvs be the output of curves() and wcrvs of curves_world(), then crvs[i] corresponds to wcrvs[i] one by one.
Obtain vector of curves(world coordinate expression) of the loop. Output curves are MGTrimmedCurve of edge's binders. When some of the edges do not have binders, they will be created. Let crvs be the output of curves() and wcrvs of curves_world(), then crvs[i] corresponds to wcrvs[i] one by one.
MGEdge* MGLoop::edge | ( | int | i | ) |
Return i-th edge pointer.
const MGEdge* MGLoop::edge | ( | int | i | ) | const |
|
inline |
Test if at least one edge is included in this loop.
int MGLoop::edge_num | ( | const MGEdge * | e | ) | const |
Get edge number in this loop. If e is not a member of this loop, 0 will be returned.
MGLEPoint MGLoop::end_LPoint | ( | ) | const |
Return end point of this loop as MGLEPoint. loop must include at least one edge, or this output is undefined.
MGPosition MGLoop::end_point | ( | ) | const |
Return end point of this loop as MGPosition. The point is of parameter space.
double MGLoop::error | ( | ) | const |
Get error of this loop. This is obtained from the parent surface. If parent surface did not exist, error=the box of the loop by relative zero.
Evaluation of the loop at the point t.
MGVector MGLoop::eval | ( | int | i, |
double | t, | ||
int | nderi = 0 |
||
) | const |
Evaluation of the loop at i-th edge's parameter t.
|
virtual |
Return pointer of the face. If the loop is not a boundary of any face, null will be returned.
MGGelを再実装しています。
|
virtual |
const MGEdge* MGLoop::first_edge | ( | ) | const |
Return pointer of the first edge.
MGEdge* MGLoop::first_edge | ( | ) |
int MGLoop::get_loop_id_in_face | ( | ) | const |
Get the loop id of this loop in the star face baoundary. Let face=face(), then face->loop(get_loop_id_in_face())=this; When this does not have star face, or this is not a boundary of a face, -1 will be returned.
|
virtual |
Return Object's type ID (TID)
MGBoundaryを実装しています。
int MGLoop::inside | ( | double | u, |
double | v | ||
) | const |
Test if parameter value (u,v) is inside this loop or not. inside means inside face, that is, if the loop is inner, outside inner loops and if the loop is outer boundary loop, inside the outer boundary loop. This can be used for perimeter boundary loops. Returned is: 0:outside(not on the loop) 1:unknown 2:inside(not on the loop) otherwise:on the loop(int(parameter edge id +100))will be returned.
int MGLoop::inside | ( | const MGPosition & | uv | ) | const |
bool MGLoop::is_inactive | ( | const MGFSurface * | srf = 0 | ) | const |
Test if this loop is inactive or not.
bool MGLoop::is_inner_boundary | ( | const MGFSurface * | srf = 0 | ) | const |
Test if this loop is inner boundary. Inner boundary is: (1) closed loop. (2) the direction is clockwise.
|
inline |
Test if this loop is network.
bool MGLoop::is_outer_boundary | ( | const MGFSurface * | srf = 0 | ) | const |
Test if this loop is outer boundary. outer boundary is: (1) closed loop. (2) the direction is anti-clockwise.
bool MGLoop::is_perimeter_boundary | ( | const MGFSurface * | srf = 0 | ) | const |
Test if this loop is perimeter boundary. Perimeter boundary is: both ends are on the surface perimeter.
MGLCisect_vector MGLoop::isect | ( | const MGCurve & | param_curve | ) | const |
Compute intersections of this loop(parameter rep of a face) and param_curve.
MGLCisect_vector MGLoop::isect | ( | double | error, |
const MGCurve & | param_curve | ||
) | const |
Compute intersections of this loop(parameter rep of a face) and param_curve.
MGLLisect_vector MGLoop::isect | ( | const MGLoop & | loop2 | ) | const |
Compute intersections of two loops.
std::vector<MGLEPoint> MGLoop::isect_1D | ( | double | f, |
int | coordinate = 0 |
||
) | const |
Compute intersection points of 1D sub curves of the original loop. Parameter values of intersection points(MGLEPoint's) will be returned.
f | Coordinate value |
coordinate | Coordinate kind of the data f(from 0). |
MGLCisect_vector MGLoop::isect_with_endpoints | ( | const MGCurve & | param_curve | ) | const |
Compute intersections of this loop(parameter rep of the face) and param_curve. isect_with_endpoints() includes endpoints of both if they are close enough (within tolerance).
void MGLoop::join | ( | bool | start, |
const MGLoop & | loop2 | ||
) |
Join two loops. start indicates which end of this loop loop2 should be connected to. start=true: connect start of this and loop2's end. start=false: connect end of this and loop2's start. The 2nd form takes the ownership of loop2, will delete loop2.
void MGLoop::join | ( | bool | start, |
MGLoop * | loop2 | ||
) |
void MGLoop::join | ( | bool | start, |
std::auto_ptr< MGLoop > & | loop2 | ||
) |
void MGLoop::join_C1_edges | ( | int | parameter_normalization = 2 | ) |
Join adjacent two C1 continuous edges to one edge. When the number of edges is equal to or less than 4, join is not executed.
parameter_normalization | Specify how rebuilt edes's parameterization be done. |
const MGEdge* MGLoop::last_edge | ( | ) | const |
Return edge pointer of the last edge.
MGEdge* MGLoop::last_edge | ( | ) |
void MGLoop::make_close | ( | ) |
Make this loop as closed. This loop's 1st edge's start point must be the same as the last edge's end point. However, this is not tested in make_close.
bool MGLoop::make_vertex | ( | const MGLEPoint & | lp, |
MGEdge *& | pre, | ||
MGEdge *& | aft, | ||
MGPVertex ** | pvertex = 0 |
||
) |
Make a vertex at lp and subdivide the edge into two edges. Returned is true if subdivision is done and false if no subdivision is done since lp was one of existed vertex. When function's return value is true, pre is always the same edge as lp's edge and the iterator is unchanged.
lp | point to subdivide of this loop. |
pre | pre and aft-edge of the lp will be output |
aft | after make_vertex's execution, may be null. |
pvertex | MGPVertex of the made vertex which is the boundary of lp. |
|
inlinevirtual |
Get manifold dimension.
MGBoundaryを実装しています。
bool MGLoop::merge_network | ( | const MGCurve & | param_curve, |
double | error | ||
) |
Merge with param_curve as a network loop. Function's return value is: true: merge is done and param_curve is processed into this loop as a network. false: merge is not performed since no intersection with this loop were found. When false is returned, this loop does not have the input param_curve information as an edge information. This loop must not be empty loop, ant the kind is always changed to NETWORK.
param_curve | Curve to merge. |
error | Error to judge two param_curve' points are equal. |
bool MGLoop::merge_trim | ( | const MGCurve & | param_curve | ) |
Merge loop2 or param_curve to the existing loop data, and build a loop. Returned is if merge was done(true) or not(false). When no intersection was found, merge is not executed. param_curve is parameter space representation of the face of which this loop will be a boundary, will make parameter cell. world_curve is world coordinate representation of the face of which this loop will be a boundary, will make binder cell. range1 is parameter range of the curve param_curve. When world_curve is input, it will be trimmed accordin to the range of param_curve. param_curve and world_curve may be opposite direction. When more than one closed loops are detected, first one from the old loop start point is employed, and other loops are discarded.
bool MGLoop::merge_trim | ( | const MGCurve & | param_curve, |
const MGInterval & | range1 | ||
) |
bool MGLoop::merge_trim | ( | const MGCurve & | param_curve, |
const MGInterval & | range1, | ||
const MGCurve & | world_curve | ||
) |
bool MGLoop::merge_trim | ( | const MGLoop & | loop2 | ) |
MGPosition MGLoop::mid_point | ( | ) | const |
Compute the mid point of this loop. Mid point is the point of the mid point of m-th edge, where m=number_edges()/2.
|
virtual |
Reverse the direction of the boundary. (Coordinate transformation is not performed.)
MGBoundaryを再実装しています。
|
virtual |
Negate the boundary according to the parent cell negation. That is,
MGBoundaryを再実装しています。
|
inline |
Get the number of edge included.
bool MGLoop::on_perimeter_end | ( | int & | pid_e, |
const MGFSurface * | surf = 0 |
||
) | const |
Test if start or end point of the loop is on perimeter of the surface. Returned is true when on perimeter, false if not. When on perimeter, perimeter number of the surface is returned in pid_x.
bool MGLoop::on_perimeter_start | ( | int & | pid_s, |
const MGFSurface * | surf = 0 |
||
) | const |
bool MGLoop::on_surface_perimeter | ( | const MGFace & | f | ) | const |
Test if all the edges included are on a surface perimeter.
|
virtual |
MGBoundaryを再実装しています。
MGBoundaryを再実装しています。
MGBoundaryを再実装しています。
Object transformation.
MGBoundaryを再実装しています。
MGBoundaryを再実装しています。
bool MGLoop::operator< | ( | const MGLoop & | gel2 | ) | const |
This operator is to sort loops in the order:
Assignment. When the leaf object of this and bnd2 are not equal, this assignment does nothing.
MGComplexを再実装しています。
|
virtual |
Output function.
MGBoundaryを再実装しています。
void MGLoop::prepend | ( | MGEdge * | e | ) |
Prepend edge to the start of the loop.
|
protectedvirtual |
Read Object's member data.
MGBoundaryを再実装しています。
void MGLoop::remove_garbage_edge | ( | double | error | ) |
Remove garbage edge. Error is the parameter error allowed of the edge length to judge removal.
bool MGLoop::remove_pendent_edge | ( | const MGFSurface & | face | ) |
Remove pendent edge. Function's return value is true if an edge was removed.
MGLEPoint MGLoop::start_LPoint | ( | ) | const |
Return start point of this loop as MGLEPoint. loop must include at least one edge, or this output is undefined.
MGPosition MGLoop::start_point | ( | ) | const |
Return start point of this loop as MGPosition. The point is of parameter space.
Subdivide this loop so that one parameter range in ranges becomes one edge. In ranges, parameter range of this loop is stored as: Let n=ranges.size()/2, then span from ranges[2*i] to ranges[2*i+1] is one parameter span that is supposed to be one edge for 0<=i<n. Returned are new edge pointers that correspond to ranges[2*i] to ranges[2*i+1] after subdivided for 0<=i<n. ****Currently this does not conform to non_manifold model. That is, this loop must not have partner edges already.
Subdivide this loop so that one parameter range from le1 to le2 becomes one edge. le1, and 2 must be of the same edge. new edge between le1 and le2 will be output.
const MGSurface* MGLoop::surface | ( | ) | const |
Obtain parent surface pointer.
Trim the loop. Result loop is from t1 to t2; The loop can be closed one. In this case, t1 can be >t2. When not closed, t1 must be less than t2.
void MGLoop::trim_end | ( | const MGLEPoint & | t1 | ) |
Trim the loop. Result is from start to t1.
void MGLoop::trim_start | ( | const MGLEPoint & | t1 | ) |
Trim the loop. Result is from t1 to end.
|
inlineprotectedvirtual |
MGBoundaryを再実装しています。
|
protectedvirtual |
Write Object's Member Data.
MGBoundaryを再実装しています。
Get edge pointer from its iterator in MGComplex of MGBoudarynD.
|
friend |
Evaluation of the loop at the point t.
When nderi=0, get a parameter (u,v) of the surface at the boundary point.
|
friend |
Test if (u,v) is inside the outer boundary(of std::vector<MGLoop*>& boundaries).
Inside the outer boundary means that inside outer_boudary_param() or not. This must not be used for faces that do not have perimeter or outer boundary loop. Function's return value is: 0:outside the outer boundary(not on a loop) 1:unknown 2:inside the outer boundary(not on a loop) otherwise:on the outer boundary loop