MGCL V10
V10
MGCL V10
|
MGFace is a trimmed surface. [詳解]
公開メンバ関数 | |
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) | |
MGFace & | operator= (const MGGel &gel2) |
MGFace & | operator= (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) |
MGFace * | binder_face () const |
MGPvector< MGCurve > | face_boundaries () const |
const MGBox & | box_param () const |
const MGBox | box_param2 () const |
std::auto_ptr< MGLoop > | build_loop (const MGCurve &crv) const |
MGFace * | clone () const |
MGFace * | clone_without_boundaries () const |
MGFSurface * | clone_fsurface () const |
Get the clone of this MGFSurface. [詳解] | |
MGFace * | clone_as_face () const |
MGFace * | clone_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 ¶, mgVBO::ELEMENT_TARGET target=mgVBO::SHADING) const |
Shade the object in world coordinates. [詳解] | |
virtual void | triangulate (const MGDrawParam ¶, 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 |
MGFace * | face () |
Return MGFace pointer if this MGGel is an MGFace, else return null. [詳解] | |
const MGFace * | face () const |
const MGFSurface * | fsurface () const |
Get the MGFSurface pointer if this is MGSurface or MGFace. [詳解] | |
MGFSurface * | fsurface () |
std::vector< const MGLoop * > | get_inner_boundary_loops (const MGBox &uvbox) const |
Get inner_aboundary loops included in the input box. [詳解] | |
MGFace * | get_face_pointer () |
Judge if the display list for vmode is made or not. [詳解] | |
const MGFace * | get_face_pointer () const |
MGSurface * | get_surface_pointer () |
const MGSurface * | get_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< MGCurve > | inner_boundary (int i) const |
MGPvector< MGCurve > | inner_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 MGKnotVector & | knot_vector_u () const |
Returns the u knot vector. [詳解] | |
MGKnotVector & | knot_vector_u () |
const MGKnotVector & | knot_vector_v () const |
Returns the v knot vector. [詳解] | |
MGKnotVector & | knot_vector_v () |
MGLoop * | loop (int i) |
Obtain i-th boundary loop of the face. [詳解] | |
MGLoop * | loop (iterator i) |
const MGLoop * | loop (int i) const |
const MGLoop * | loop (const_iterator i) const |
MGCellNB * | make_binder () const |
MGFace * | make_face () |
void | make_outer_boundary () |
Make outer boundary if not existed. [詳解] | |
int | manifold_dimension () const |
Get manifold dimension. [詳解] | |
const MGFace * | member_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. [詳解] | |
MGObject * | object_pointer () |
Return MGObject pointer if this MGGel is an MGObject, else return null. [詳解] | |
const MGObject * | object_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< MGCurve > | outer_boundary () const |
MGPvector< MGCurve > | outer_boundary_param () const |
MGPosition | param (const MGPosition &P) const |
Obtain parameter value of the face whose world coordinates are P. [詳解] | |
MGPvector< MGCurve > | parameter_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 |
MGShell * | parent_shell () |
Obtain parent shell that this face belongs to. [詳解] | |
const MGShell * | parent_shell () const |
MGPvector< MGCurve > | PBloop_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< MGFace > | rebuild (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 |
MGSurface * | surface () |
Get surface pointer. [詳解] | |
const MGSurface * | surface () 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 MGCell & | operator= (const MGCell &gel2) |
virtual bool | operator< (const MGCell &gel2) const |
comparison [詳解] | |
MGBoundary * | boundary (int i) |
Obtain i-th boundary pointer. [詳解] | |
const MGBoundary * | boundary (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 MGBox & | box () 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 MGBoundary * | free_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 MGCellNB & | operator= (const MGCellNB &gel2) |
virtual MGCellNB & | operator+= (const MGVector &v) |
Object transformation. [詳解] | |
virtual MGCellNB & | operator-= (const MGVector &v) |
virtual MGCellNB & | operator*= (double scale) |
virtual MGCellNB & | operator*= (const MGMatrix &mat) |
virtual MGCellNB & | operator*= (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 MGGeometry * | extent () const |
Get extent geometry, may be null if this does not have extent. [詳解] | |
MGGeometry * | extent () |
MGGeometry * | free_extent () |
MGComplex * | free_from_parent () |
void | free_partner (const MGCellBase *cellin) const |
Free specified partner(cellin). [詳解] | |
bool | is_bcell () const |
Ask if this is binder cell. [詳解] | |
const MGCellBase * | member_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 MGComplex * | parent_complex () const |
Obtain parent complex. [詳解] | |
MGComplex * | parent_complex () |
virtual void | set_extent (MGGeometry *extent=0) |
Set extent of this cell. [詳解] | |
const MGCellNB * | star () const |
Obtain star cells. [詳解] | |
MGCellNB * | star () |
基底クラス MGCellBase に属する継承公開メンバ関数 | |
MGCellBase () | |
Void constructor. Constructor of pcell. [詳解] | |
MGCellBase (const MGCellBase &cell) | |
virtual | ~MGCellBase () |
virtual MGCellBase & | operator= (const MGCellBase &gel2) |
MGCellNB * | binder () 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 MGCellNB * | make_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 MGTopology & | operator= (const MGTopology &gel2) |
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 |
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 |
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 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_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 MGBox & | get_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< MGCurve > | get_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< MGCurve > | inner_skeleton (int density) const |
virtual MGPvector< MGCurve > | skeleton (int density=1) const |
virtual MGPvector< MGCurve > | skeleton_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 ¶, 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. [詳解] | |
MGCell & | set_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. [詳解] | |
MGCellNB & | set_cellnb (const MGCellNB &cell2) |
基底クラス MGCellBase に属する継承限定公開メンバ関数 | |
MGCellBase & | set_cellbase (const MGCellBase &cb2) |
基底クラス MGObject に属する継承限定公開メンバ関数 | |
MGObject & | set_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 に属する継承限定公開変数類 | |
MGComplex * | m_parent_complex |
MGGeometry * | m_extent |
Geometry. [詳解] | |
std::vector< const MGCellBase * > | m_partners |
vector of partner cells who share this bcell(for bcell). [詳解] | |
基底クラス MGCellBase に属する継承限定公開変数類 | |
MGCellNB * | m_binder |
基底クラス MGAttribedGel に属する継承限定公開変数類 | |
std::auto_ptr< mgVBO > | m_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.
|
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.
|
inline |
Face of whole surface of no boundary.
MGFace::MGFace | ( | const MGFSurface & | surf | ) |
Conversion constructor from MGFSurface to MGFace.
|
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.
|
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を再実装しています。
|
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を実装しています。
|
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.
|
inlinevirtual |
Return box of the parameter space of the FSurface. After trimmed one.
MGFSurfaceを実装しています。
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.
crv | curve of world coordinates. Generally this is not on face and always is projectd onto the face. |
|
virtual |
Make a clone of the cell. clone(), clone_without_boundaries() does not copy the binder cell relation.
MGCellを実装しています。
|
inlinevirtual |
Get the clone of this as a MGFace. If this is MGSurface, it is converted to MGFace.
MGFSurfaceを実装しています。
|
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を実装しています。
|
inlinevirtual |
Get the clone of this MGFSurface.
MGFSurfaceを実装しています。
|
virtual |
Make a clone of the cell without boundaries. clone_without_boundaries() does not copy the binder cell relation.
MGCellを実装しています。
|
virtual |
Compute closest point from a point. Returned is the parameter value of the face that is closest to point.
MGFSurfaceを実装しています。
|
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を実装しています。
|
virtual |
|
inlinevirtual |
Draw 3D curve in world coordinates. The object is converted to curve(s) and is drawn.
vbo | Target graphic object. |
span_length | Line segment span length. |
line_density | line 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.
wcurves | output of outer_boundary() or inner_boundary(). |
pcurves | output of outer_boundary_param() or inner_boundary_param(). |
i | id of the curve in wcurves and pcurves to test the direction. |
|
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.
u | Face parameter value u of (u,v). |
v | v of (u.v). |
ndu | Order of derivative along u. |
ndv | along v. |
MGFSurfaceを実装しています。
|
virtual |
Evaluate at uv.
uv | Face parameter value(u,v) |
ndu | Order of derivative along u. |
ndv | Order 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. |
uv | Parameter value to indicate which part of the face to extract. |
face | Result extracted face will be output. |
|
inlinevirtual |
Obtain all the boundary curves(world coordinates representation) of the face. That is, all of the outer boundaries and all of the inner boundaries.
|
inlinevirtual |
Get the MGFSurface pointer if this is MGSurface or MGFace.
MGObjectを再実装しています。
|
inlinevirtual |
MGObjectを再実装しています。
|
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を実装しています。
|
inlinevirtual |
MGFSurfaceを実装しています。
Get inner_aboundary loops included in the input box.
|
inlinevirtual |
Get number of inner boundaries as the output of the function.
MGFSurfaceを実装しています。
|
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を実装しています。
|
inlinevirtual |
MGFSurfaceを実装しています。
|
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.
|
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.
|
virtual |
Return Object's type ID (TID)
MGCellを実装しています。
|
virtual |
Test if parameter value (u,v) is in the range of the face parameter.
MGFSurfaceを実装しています。
|
virtual |
MGFSurfaceを実装しています。
|
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を実装しています。
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を実装しています。
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を実装しています。
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を再実装しています。
MGTopologyを再実装しています。
|
virtual |
MGTopologyを再実装しています。
MGTopologyを再実装しています。
MGTopologyを再実装しています。
MGTopologyを再実装しています。
|
virtual |
Intersection.
MGFSurfaceを実装しています。
|
virtual |
MGFSurfaceを実装しています。
|
virtual |
MGFSurfaceを実装しています。
|
virtual |
MGFSurfaceを実装しています。
|
virtual |
Intersection.
MGFSurfaceを実装しています。
|
inlinevirtual |
Access to i-th element of u knot.
MGFSurfaceを再実装しています。
|
inlinevirtual |
Access to i-th element of v knot.
MGFSurfaceを再実装しています。
|
inlinevirtual |
Returns the u knot vector.
MGFSurfaceを実装しています。
|
inlinevirtual |
MGFSurfaceを実装しています。
|
inlinevirtual |
Returns the v knot vector.
MGFSurfaceを実装しています。
|
inlinevirtual |
MGFSurfaceを実装しています。
MGLoop* MGFace::loop | ( | int | i | ) |
Obtain i-th boundary loop of the face.
const MGLoop* MGFace::loop | ( | int | i | ) | const |
const MGLoop* MGFace::loop | ( | const_iterator | i | ) | 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を実装しています。
|
inlinevirtual |
void MGFace::make_outer_boundary | ( | ) |
Make outer boundary if not existed.
|
inlinevirtual |
Get manifold dimension.
MGCellを実装しています。
const MGFace* MGFace::member_partner_face | ( | int | i | ) | const |
Obtain the i-th member partner face.
|
virtual |
Negate the face.
MGCellNBを再実装しています。
|
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:
|
inlinevirtual |
Compute normal vector(not unit) at uv.
MGFSurfaceを実装しています。
|
inlinevirtual |
Compute normal vector(not unit) at (u,v).
MGFSurfaceを実装しています。
|
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.
|
inlinevirtual |
Return MGObject pointer if this MGGel is an MGObject, else return null.
MGFSurfaceを実装しています。
|
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:面生成コンストラクタエラー
Offset. distance is plus value if the direction is toward normal vector of the face. Minus if against the normal vector. エラーコード 0:成功 -1:曲率半径以上のオフセット不可 -3:面生成コンストラクタエラー
|
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を実装しています。
|
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.
P | Target postion data. |
uv | Parameter value of the face is returrned. Even if P is not on the face, nearest point parameter value will be returned. |
MGFSurfaceを実装しています。
|
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.
u | Surface parameter u of (u,v). |
v | Surface parameter v of (u,v). |
perim_num | if function returns true, the perimete number is output. |
MGFSurfaceを実装しています。
MGFace MGFace::operator* | ( | double | s | ) | const |
Faceのスケーリングを行い,Faceを作成する。 Scaling of the Face by a double.
与えられた変換でFaceの変換を行い,Faceを作成する。 Transformation of the Face by a matrix.
与えられた変換によってトランスフォームをおこないFaceを生成する。 Transformation of the Face by a MGTransf.
Faceに平行移動を行ないオブジェクトを生成する。 Translation of the Face
Faceに逆方向の平行移動を行ないオブジェクトを生成する。 Translation of the Face
|
inline |
Complexのスケーリングを行い,Complexを作成する。 Scaling of the Complex by a double.
|
inline |
Comparison of two curves.
Assignment. When the leaf object of this and cell2 are not equal, this assignment does nothing.
MGGelを再実装しています。
|
virtual |
Debug Function.
MGCellを再実装しています。
|
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を実装しています。
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を実装しています。
|
inlinevirtual |
Output virtual function.
MGFSurfaceを実装しています。
|
virtual |
Obtain parameter value of the face whose world coordinates are P.
MGFSurfaceを実装しています。
|
virtual |
Return ending parameter value.
MGFSurfaceを実装しています。
|
virtual |
MGFSurfaceを実装しています。
|
inlinevirtual |
パラメータ範囲を返す。 Return parameter range.
MGFSurfaceを実装しています。
|
virtual |
Return starting parameter value of the base surface.
MGFSurfaceを実装しています。
|
virtual |
MGFSurfaceを実装しています。
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_u | True(!=0) if x is u-value.(i.e. obtain u=const line) |
x | parameter 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 |
Obtain perimeter boundadary loop's curve representation. Returned are curves of perimeter boundaries, do not contain perimeter of the surface.
|
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).
P | Point |
uvguess | guess parameter value of the shell |
uv | Parameter value will be returned. |
MGFSurfaceを実装しています。
|
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,
curve | curve. |
uvguess | Guess parameter value of the face. |
tguess | Guess parameter value of the curve. |
uv | perpendicular point's parameter values of the shell |
t | will be output. |
MGFSurfaceを実装しています。
|
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) |
uv | Parameter value of the surface will be returned. |
uvguess | guess parameter value of surface |
MGFSurfaceを実装しています。
|
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を実装しています。
|
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を再実装しています。
|
virtual |
Round the input parameter (u,v) of the face to the nearest point of the face parameter range.
MGFSurfaceを実装しています。
|
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_rebuild | intdicates 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_normalization | Indicates 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]. |
tol | tolerance allowed for the approximation. When tol<=0., MGTolerance::line_zero() will be employed. |
order | order 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. |
range | valid 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().
angleBase | base angle. |
|
virtual |
Shade the object in world coordinates.
vbo | Target graphic object. |
para | Parameter to draw. |
target | Shading 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.
multiple | Indicates if start and end knot multiplicities are necessary. =0:unnecessary, !=0:necessary. |
|
virtual |
Sort boundary occurreces in m_boundaries. Sorting is done according to operator< of MGBoundary. parameter space box will be set.
MGCellを再実装しています。
|
virtual |
split this fsurface at the parameter param.
param | parameter value of this fsurface. if is_u is true, param is u-value, else v-value. |
is_u | indicates if param is u or v of the surface parameter (u,v). |
surfaces | splitted surfaces will be output. |
MGFSurfaceを実装しています。
Split the face giving networks loops. Splitting is done by finding the smallest closed areas out of networks.
networks | Network to split. |
faces | Result trimmed face(s) will be appended. |
MGSurface* MGFace::surface | ( | ) |
Get surface pointer.
const MGSurface* MGFace::surface | ( | ) | 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.
pcrv | parameter(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).
networks | network to trim the face. |
uv | position parameter data to indicate which part of the face to trim. |
faces | Result trimmed face(s) will be appended. |
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.
crv | curve of world coordinates. Generally this is not on face and always is projectd to the face. |
direction | Projection directin vector. |
|
inlinevirtual |
Compute unit normal vector at uv.
MGFSurfaceを実装しています。
|
inlinevirtual |
Compute unit normal vector at (u,v).
MGFSurfaceを実装しています。
|
inlinevirtual |
MGCellを再実装しています。
|
protectedvirtual |
Write Object's Member Data.
MGCellを再実装しています。
Faceのスケーリングを行い,Faceを作成する。 Scaling of the Face by a double.