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

MGSurface is an abstract class of 3D surface. [詳解]

MGSurface の継承関係図
MGGeometry MGFSurface MGObject MGAttribedGel MGGel MGBSumSurf MGCylinder MGPlane MGRSBRep MGSBRep MGSphere MGPlaneImage

公開メンバ関数

 MGSurface (void)
 Void Constructor. 初期化なしでオブジェクトを作成する。 [詳解]
 
 MGSurface (const MGSurface &srf)
 Copy Constructor. [詳解]
 
virtual ~MGSurface ()
 
virtual MGSurfaceoperator= (const MGSurface &gel2)
 
MGSurfaceoperator+= (const MGVector &v)=0
 Object transformation. [詳解]
 
MGSurfaceoperator-= (const MGVector &v)=0
 
MGSurfaceoperator*= (double scale)=0
 
MGSurfaceoperator*= (const MGMatrix &mat)=0
 
MGSurfaceoperator*= (const MGTransf &tr)=0
 
virtual bool operator== (const MGGel &gel2) const =0
 comparison [詳解]
 
virtual bool operator< (const MGGel &gel2) const =0
 
std::auto_ptr< MGSBRepapproximate_as_SBRep (int parameter_normalization=2, double tol=-1., int *order=0) const
 Approximate this surface as an MGSBRep. [詳解]
 
double average_chord_length (int is_u, const double para[3], const MGNDDArray &tau) const
 
void arrow (double u, double v, MGPosition data[10]) const
 Generate arrow data of the tangent along u and v and the normal. [詳解]
 
void arrow (const MGPosition &uv, MGPosition data[10]) const
 
void arrow (const MGBox &box, double u, double v, MGPosition data[10]) const
 Generate arrow data, given box. The length of the arrows are defined from box.len(). [詳解]
 
virtual int bdim_u () const
 Returns B-Rep Dimension of u. [詳解]
 
virtual int bdim_v () const
 Returns B-Rep Dimension of v. [詳解]
 
virtual MGBox box_limitted (const MGBox &uvrange) const =0
 Return minimum box that includes limitted surface by uvrange. [詳解]
 
MGBox box_param () const
 Return box of the parameter space of the surface. [詳解]
 
const MGBox box_param2 () const
 Return box of the parameter space of the FSurface after trimmed one. [詳解]
 
virtual MGPosition center () const
 Obtain ceter coordinate of the geometry. [詳解]
 
virtual MGPosition center_param () const
 Obtain ceter parameter value of the geometry. [詳解]
 
virtual MGSurfacechange_dimension (int sdim, int start1=0, int start2=0)=0
 Changing this object's space dimension. [詳解]
 
virtual MGSurfacechange_range (int is_u, double t1, double t2)=0
 Change parameter range, able to change the direction by providing t1 greater than t2. [詳解]
 
virtual int coef_sdim () const
 Obtain coefficient's space dimension. [詳解]
 
virtual MGFSurfaceclone_fsurface () const
 Get the clone of this MGFSurface. [詳解]
 
MGFaceclone_as_face () const
 Get the clone of this as a MGFace. [詳解]
 
virtual MGPosition closest (const MGPosition &point) const
 Compute the closest point parameter value (u,v)of this surface from a point. [詳解]
 
virtual MGPosition closest_on_perimeter (const MGPosition &point) const
 Compute the closest point on all the perimeters of the surface. [詳解]
 
virtual MGPosition closest_on_perimeter (const MGStraight &sl) const
 
virtual MGPosition closest_on_boundary (const MGStraight &sl) const
 Compute closest point from a line to the boundary of the MGFSurface. [詳解]
 
virtual MGSurfaceclone () const =0
 Construct new surface object by copying to newed area. [詳解]
 
void compute_sample_point (double u0, double u1, double v0, double v1, MGPosition Pn[9], MGPosition &center, MGUnit_vector &normal, MGVector *Nn_in=0) const
 compute sample point of the surface to get the approximate plane. [詳解]
 
virtual MGSurfacecopy_change_dimension (int sdim, int start1=0, int start2=0) const =0
 Construct new surface object by changing the original object's space dimension. [詳解]
 
void curvatures (const MGPosition &uv, double value[4], MGUnit_vector &N) const
 Compute surface curvatures. [詳解]
 
void curvatures (double u, double v, double value[4], MGUnit_vector &N) const
 
MGUnit_vector direction (const MGPosition &param) const
 Compute direction unit vector of the geometry. [詳解]
 
virtual void drawWire (mgVBO &vbo, double span_length, int line_density=1) const
 Draw 3D curve in world coordinates. [詳解]
 
virtual MGSurfacecopy_surface () const
 Construct new curve object by copying to newed area. [詳解]
 
virtual void display_arrows (mgSysGL &sgl) const
 
virtual int divide_multi_knot (MGPvector< MGSurface > &srfl) const
 
int equal_direction (const MGCurve &param_curve, const MGCurve &world_curve) const
 Compute if MGSurfCurve scurve(*this, param_curve) has the same direction to world_curve. [詳解]
 
virtual MGVector eval (double u, double v, int ndu=0, int ndv=0) const =0
 Evaluate surface data. [詳解]
 
MGVector eval (const MGPosition &uv, int ndu=0, int ndv=0) const
 
virtual void eval_spoint (const MGNDDArray &utau, const MGNDDArray &vtau, MGSPointSeq &spoint) const
 Evaluate all the points (ui, vj) into spoint(i,j,.). [詳解]
 
virtual void eval_all (double u, double v, MGPosition &f, MGVector &fu, MGVector &fv, MGVector &fuv, MGVector &fuu, MGVector &fvv) const
 Evaluate right continuous surface data. [詳解]
 
virtual void eval_all (const MGPosition &uv, MGPosition &f, MGVector &fu, MGVector &fv, MGVector &fuv, MGVector &fuu, MGVector &fvv) const
 Evaluate right continuous surface data. [詳解]
 
double eval_gap (const MGCurve &curve, int iperi, MGPosition &uv) const
 evaluate gap between this surface's perimeter iperi and the given curve curve. [詳解]
 
double eval_gap (const MGCurve *curve[4], MGPosition &uv) const
 evaluate gap between this surface's perimeters and the given curve curve. [詳解]
 
MGVector evaluate (const MGPosition &t, const int *nderiv) const
 Evaluate n'th derivative data. n=0 means positional data evaluation. [詳解]
 
virtual MGSurfaceexchange_uv ()=0
 Exchange parameter u and v. [詳解]
 
virtual MGSurfaceextend (int perimeter, double param, double length, double dk=0.)
 Modify the original Surface by extrapolating the specified perimeter. [詳解]
 
const MGFSurfacefsurface () const
 Get the MGFSurface pointer if this is MGSurface or MGFace. [詳解]
 
MGFSurfacefsurface ()
 
void fundamentals (const MGPosition &uv, double Q[6], MGUnit_vector &UN) const
 Compute 1st and 2nd fundamental quantities of the surface. [詳解]
 
void fundamentals (double u, double v, double Q[6], MGUnit_vector &N) const
 
void get_approximate_plane (double u0, double u1, double v0, double v1, MGPlane &plane, double *width=0, double *height=0) const
 Compute the approximate plane in the parameter range from (u0, v0) to (u1,v1). [詳解]
 
MGFaceget_face_pointer ()
 get face pointer if this is MGFace, else null will be returned. [詳解]
 
const MGFaceget_face_pointer () const
 
int getPerimeterCommon (const MGCurve &crv, std::vector< double > pspan[2], int peri_num[2]) const
 Compute common curve part of this surface's perimeter and the crv. [詳解]
 
MGSurfaceget_surface_pointer ()
 get surface pointer. Null will never be returned if this is valid MGFSurface. [詳解]
 
const MGSurfaceget_surface_pointer () const
 
virtual int get_number_of_boundaries () const
 Get number of inner boundaries as the output of the function. [詳解]
 
MGCurveget_parameterCurve (const MGCurve &wcrv) const
 Given world curve wcrv on this face, get the parameter space representation pcrv. [詳解]
 
void get_new_surface_knots (int parameter_normalization, MGKnotVector &uknots, MGKnotVector &vknots, double *Oldparameter=0) const
 Given MGSBRep or MGRSBRep as srf, compute normalize MGKnotVector along u and v. [詳解]
 
virtual bool on_a_perimeter (double &u, double &v, int &perim_num) const
 Test if input (u,v) is parameter value on a perimeter of the surface. [詳解]
 
bool on_a_perimeter2 (int is_u, double &x, int &perim_num) const
 Test if input x is parameter value on a perimeter of the surface. [詳解]
 
virtual bool has_commonFS (const MGObject &obj2) const
 Test if this and 2nd object has common area about their box(),taking error into account. [詳解]
 
virtual 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 test_and_get_approximate_plane (double u0, double u1, double v0, double v1, double surface_tol, double angle, MGPlane &plane, double &width, double &height) const
 Compute the approximate plane in the parameter range from (u0, v0) to (u1,v1). [詳解]
 
virtual long identify_type () const =0
 Return This object's typeID. [詳解]
 
virtual bool in_range (double u, double v) const =0
 Test if the parameter(u,v) is in this surface's parameter range. [詳解]
 
bool in_range (const MGPosition &uv) const
 
int in_range_with_on (const MGPosition &uv) const
 Test if (u,v) is inside the face. [詳解]
 
bool is_flat_and_small (const MGBox &bx, double surftol, double melen2, bool &direction) const
 Test if surface limitted by the parameter range bx is flat and small. [詳解]
 
virtual MGPvector< MGCurveinner_boundary (int i) const
 Obtain i-th inner_boundary curves(world coordinates representation) of the FSurface. [詳解]
 
virtual MGPvector< MGCurveinner_boundary_param (int i) const
 Obtain i-th inner_boundary curves. [詳解]
 
MGCSisect_list intersect (const MGCurve &curve) const
 Default surface-curve intersection function. [詳解]
 
MGCSisect_list intersect (const MGEllipse &el) const
 Default surface-curve intersection function. [詳解]
 
MGisects intersection (const MGObject &obj2) const
 Compute the intersections of two objects. [詳解]
 
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
 
virtual MGSSisect_list isect (const MGSurface &srf2) const =0
 Surface and Surface intersection. [詳解]
 
virtual MGSSisect_list isect (const MGPlane &srf2) const =0
 
virtual MGSSisect_list isect (const MGSphere &srf2) const =0
 
virtual MGSSisect_list isect (const MGCylinder &srf2) const =0
 
virtual MGSSisect_list isect (const MGSBRep &srf2) const =0
 
virtual MGSSisect_list isect (const MGRSBRep &srf2) const =0
 
virtual MGSSisect_list isect (const MGBSumSurf &srf2) const =0
 
MGSSisect_list isect (const MGFace &f) const
 
MGSSisect_list isect (const MGFSurface &fsurf) const
 
MGHHisect_vector isect (const MGShell &shl) const
 Intersection. [詳解]
 
virtual MGCSisect_list isect (const MGCurve &curve) const =0
 Curve and Surface intersection. [詳解]
 
virtual int isect_order () const =0
 
virtual double knot_u (int i) const
 Access to i-th element of u knot. [詳解]
 
virtual double knot_v (int i) const
 Access to i-th element of v knot. [詳解]
 
virtual const MGKnotVectorknot_vector_u () const =0
 Returns the u knot vector. [詳解]
 
virtual MGKnotVectorknot_vector_u ()=0
 
virtual const MGKnotVectorknot_vector_v () const =0
 Returns the v knot vector. [詳解]
 
virtual MGKnotVectorknot_vector_v ()=0
 
virtual bool less_than (int i, const MGPosition &uv1, const MGPosition &uv2) const
 Compare two parameter values. If uv1 is less than uv2, return true. [詳解]
 
int manifold_dimension () const
 Get manifold dimension. [詳解]
 
virtual void negate ()
 Negate direction of surface. [詳解]
 
virtual void negateFS ()
 Negate the FSurface. [詳解]
 
virtual void negate (int is_u)=0
 Negate direction of surface. [詳解]
 
void negate_transform (MGGeometry &boundary) const
 Transform the coordinates of boundary of this geometry. [詳解]
 
virtual MGVector normal (double u, double v) const
 Compute normal vector(not unit) at uv. [詳解]
 
virtual MGVector normal (const MGPosition &uv) const
 Compute normal vector(not unit) at uv. [詳解]
 
virtual const MGObjectobject_pointer () const
 Get the object point of this MGFSurface. [詳解]
 
virtual MGObjectobject_pointer ()
 
virtual MGPvector< MGSurfaceoffset (double ofs_value, int &error) const
 Surface offset. [詳解]
 
int offset_fs (double distance, MGPvector< MGFSurface > &vecOfsFSurface) const
 Offset. [詳解]
 
virtual std::auto_ptr< MGSurfaceoffset_c1 (double ofs_value, int &error) const
 C1 continuous Surface offset. [詳解]
 
virtual bool on (const MGPosition &P, MGPosition &) const
 Test if point P is ont the surface or not. [詳解]
 
virtual bool on_the_perimeter (int perim_num, double u, double v) const
 Test if input (u,v) is on the perimeter perim_num. [詳解]
 
virtual bool on_perimeter (const MGCurve &uvcurve, int &perim_num) const
 Test the uvcurve is on a perimeter. [詳解]
 
virtual int order_u () const
 Returns the order of u. [詳解]
 
virtual int order_v () const
 Returns the order of v. [詳解]
 
virtual std::ostream & out (std::ostream &ostrm) const
 Output virtual function. [詳解]
 
std::ostream & outFS (std::ostream &ostrm) const
 Output virtual function. [詳解]
 
virtual MGPvector< MGCurveouter_boundary () const
 Obtain outer_boundary curves(world coordinates representation) of the FSurface. [詳解]
 
virtual MGPvector< MGCurveouter_boundary_param () const
 Obtain boundary curves(parameter space representation) of the FSurface. [詳解]
 
virtual MGPosition param (const MGPosition &) const
 Return surface parameter value of a point on the surface. [詳解]
 
double param_of_pcurve (double tw, const MGCurve &wcurve, const MGCurve &pcurve, const double *guess=0) const
 Obtain the parameter of pcurve that represent the same point as wcurve.eval(tw). [詳解]
 
MGPosition parameter (const MGPosition &P) const
 Compute parameter value of given point. [詳解]
 
virtual MGCurveparameter_curve (int is_u, double x) const =0
 Compute parameter curve. [詳解]
 
MGPvector< MGCurveparameter_curves (int is_u, double x) const
 Obtain parameter curves. [詳解]
 
virtual double param_error () const
 Obtain parameter space error. [詳解]
 
virtual double param_error_u () const
 
virtual double param_error_v () const
 
virtual double param_e_u () const =0
 Return ending parameter value. [詳解]
 
virtual double param_e_v () const =0
 
MGPosition param_mid () const
 Return parameter value of the middle point of the surface. [詳解]
 
virtual MGBox param_range () const
 Return parameter range. [詳解]
 
MGBox parameter_range () const
 Return parameter range of the geometry(パラメータ範囲を返す). [詳解]
 
virtual double param_s_u () const =0
 Return starting parameter value. [詳解]
 
virtual double param_s_v () const =0
 
virtual double param_span () const
 Compute square of parameter span length from (u.min, v.min) to (u.max, v.max). [詳解]
 
virtual MGSurfacepart (const MGBox &bx, int multiple=0) const =0
 Compute part of the surface limitted by the parameter range bx. [詳解]
 
virtual MGCurveperimeter_curve (int i) const
 Retrieve perimeter i of this surface. [詳解]
 
virtual int perimeter_num () const =0
 Return how many perimeters this surface has. [詳解]
 
virtual MGPosition perimeter_uv (int i, double t) const
 Construct perimeter i's (u,v) parameter position. [詳解]
 
virtual int perp_guess (const MGPosition &uv0, const MGPosition &uv1, const MGPosition &P, const MGPosition &uvguess, MGPosition &uv) const
 Compute a perpendicular point from a point P, given guess parameter value uvguess. [詳解]
 
bool perp_guess (const MGPosition &P, const MGPosition &uvguess, MGPosition &uv) const
 Return the foot of the perpendicular straight line from P. [詳解]
 
virtual int perp_guess (const MGPosition &uv0, const MGPosition &uv1, const MGCurve &curve, double t0, double t1, const MGPosition &tuvg, MGPosition &tuv) const
 Compute perpendicular points of a curve and a surface. [詳解]
 
virtual int perp_guess (const MGPosition &uv0, const MGPosition &uv1, const MGCompositeCurve &crv, double t0, double t1, const MGPosition &tuvg, MGPosition &tuv) const
 Compute perpendicular points of a curve and a surface. [詳解]
 
virtual bool perp_guess (const MGCurve &curve, const MGPosition &uvguess, double tguess, MGPosition &uv, double &t) const
 Compute perpendicular points of a curve and a surface. [詳解]
 
virtual int perp_point (const MGPosition &P, MGPosition &uv, const MGPosition *uvguess=0) const
 Return the foot of the perpendicular straight line from P. [詳解]
 
virtual MGPosition_list perps (const MGPosition &P) const
 Return all foots of perpendicular straight lines from P. [詳解]
 
MGPosition pick_closest (const MGStraight &sl) const
 Compute the parameter value of the closest point from the straight to this object. [詳解]
 
virtual MGPosition range (const MGPosition &) const
 Round the input parameter value uv. [詳解]
 
virtual void remove_knot ()
 removal redundant knots within the tolerance line_zero(). [詳解]
 
virtual MGSurfacerotate_self (const MGVector &vec, double angle, const MGPosition &origin=mgORIGIN)
 Rotate the surface around the straight line. [詳解]
 
virtual int sdim () const =0
 Return the surface type. [詳解]
 
virtual void shrink_to_knot (const MGBox &uvbx, int multiple=0)
 Shrink this surface to the part limitted by the parameter range of uvbx. [詳解]
 
virtual void split (double param, bool is_u, MGPvector< MGFSurface > &surfaces) const
 split this fsurface at the parameter param. [詳解]
 
const MGSurfacesurf () const
 Return MGSurface pointer. [詳解]
 
MGSurfacesurf ()
 Return MGSurface pointer if this MGGel is an MGSurface, else return null. [詳解]
 
virtual MGSURFACE_TYPE type () const =0
 Return the surface type. [詳解]
 
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 uv. [詳解]
 
virtual std::string whoami () const
 
- 基底クラス MGGeometry に属する継承公開メンバ関数
 MGGeometry ()
 Void constructor(初期化なしでオブジェクトを作成する。) [詳解]
 
 MGGeometry (const MGGeometry &geo2)
 Copy constructor. [詳解]
 
virtual ~MGGeometry ()
 Virtual Destructor. [詳解]
 
virtual MGGeometryoperator= (const MGGeometry &gel2)
 
virtual MGGeometrygeometry ()
 Return MGGeometry pointer if this MGGel is an MGGeometry, else return null. [詳解]
 
virtual const MGGeometrygeometry () const
 
const MGBoxbox () const
 Return minimum box that includes whole of the geometry. [詳解]
 
virtual void draw3DVertex (mgVBO &vbo) const
 
bool is_null () const
 Test if this is null. [詳解]
 
double parameter_error () const
 Error allowed in the parameter space of the geometry. [詳解]
 
- 基底クラス 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 MGGeloperator= (const MGGel &gel2)
 
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 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 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 MGTopologytopology ()
 Return MGTopology pointer if this MGGel is an MGTopology, else return null. [詳解]
 
virtual const MGTopologytopology () const
 
virtual MGFaceface ()
 Return MGFace pointer if this MGGel is an MGFace, else return null. [詳解]
 
virtual const MGFaceface () 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_control_polygon (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
 
virtual bool hasLoop (const MGBox &uvbox) const
 
int in_range_with_on (double u, double v) const
 
void intersect12Boundary (const MGFSurface &face2, MGPosition_list &uvuv_list) const
 
virtual int isect_boundary (const MGFSurface &face2, MGPosition_list &uvuvs, int id1=0) const =0
 
virtual int isect_incurves (const MGFSurface &face2, int iid, MGPosition_list &uvuv_list, int id1) const =0
 
virtual int isect_outcurves (const MGFSurface &face2, MGPosition_list &uvuv_list, int id1) const =0
 
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
 
virtual MGFacemake_face ()=0
 
virtual int number_of_inner_boundaries () const
 Get number of inner boundaries as the output of the function. [詳解]
 
double param_error () const
 Obtain parameter space error. [詳解]
 
double param_error_u () const
 
double param_error_v () 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
 

限定公開メンバ関数

virtual bool flat (const MGBox &uvbox, double tol, int &direction, MGPosition &P, MGUnit_vector &N) const
 
MGSSisect_list intersect (const MGSurface &srf2) const
 
MGSSisect_list intersectPl (const MGPlane &srf2) const
 Default intersection program of MGSurface with a plane. [詳解]
 
MGPosition_list intersectInner (const MGSurface &sf2) const
 
virtual int intersect_dnum_u () const =0
 
virtual int intersect_dnum_v () const =0
 
virtual int isect_area_length () const
 
virtual int isect_direction (const MGFSurface &sf2, int m1, MGPosition &uvuvS, double &du, double &dv, double acuRatio=1.) const
 
int isect_div_id_max () const
 
virtual MGCurveisect_incr_pline (const MGPosition &uv, int kdt, double du, double dv, double &u, double &v, int incr=0) const =0
 
virtual void isect_inner_dt (int n, const MGPosition &uvnow, double &du, double &dv, int &kdt, double acuRatio=1.) const
 
virtual MGCSisect_list isect_withC1LB (const MGLBRep &lb) const
 Compute intersections with MGLBRep lb that does not have C0 continuity in it. [詳解]
 
virtual MGCSisect_list isect_with_noCompoSC (const MGSurfCurve &scrv) const
 isect with SurfCurve whose m_curve is not a MGTrimmedCurve of MGCompositeCurve. [詳解]
 
virtual MGCSisect_list isectSl (const MGStraight &sl, const MGBox &uvbox=mgNULL_BOX) const
 Intersection of Surface and a straight line. [詳解]
 
virtual MGSBRepsurf1D (const MGPlane &pl) const =0
 
virtual void ReadMembers (MGIfstream &buf)
 
virtual void WriteMembers (MGOfstream &buf) const
 
- 基底クラス MGGeometry に属する継承限定公開メンバ関数
MGGeometryset_geometry (const MGGeometry &geo2)
 Assignment. [詳解]
 
virtual void update_mark ()
 Mark this as updated. [詳解]
 
- 基底クラス MGObject に属する継承限定公開メンバ関数
MGObjectset_object (const MGObject &gel2)
 
- 基底クラス MGFSurface に属する継承限定公開メンバ関数
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
 
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 int isect_start_tan (const MGFSurface &sf1, const MGFSurface &sf2, const MGLBRep &lineb, MGVector *Tse[2])
 
MG_DLL_DECLR friend void isect_start_adjustSE (int ngtan, MGNDDArray &tau, MGBPointSeq &point, MGLBRep &lineb, MGVector *tan[2])
 Update lineb so as to have the tangent tan for start or end according to ngtan. [詳解]
 

その他の継承メンバ

- 基底クラス MGGeometry に属する継承限定公開変数類
MGBoxm_box
 
- 基底クラス MGAttribedGel に属する継承限定公開変数類
std::auto_ptr< mgVBOm_dlistName
 display name if m_dlistName!=0; [詳解]
 

詳解

MGSurface is an abstract class of 3D surface.

Surface is represented using two parameter u and v:f(u,v).

構築子と解体子

MGSurface::MGSurface ( void  )

Void Constructor. 初期化なしでオブジェクトを作成する。

MGSurface::MGSurface ( const MGSurface srf)
inline

Copy Constructor.

virtual MGSurface::~MGSurface ( )
virtual

関数詳解

std::auto_ptr<MGSBRep> MGSurface::approximate_as_SBRep ( int  parameter_normalization = 2,
double  tol = -1.,
int *  order = 0 
) const

Approximate this surface as an MGSBRep.

引数
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 derivative along u and v of the base surface is as equal to 1. as possible.
toltolerance allowed for the approximation.
orderWhen tol<=0., MGTolerance::line_zero() will be employed.order of the new MGSBRep, >=4 is recommended. order[0]:u-order, [1]:v-order. When order=0 is input, order[0]=order[1]=4 are assumed.
void MGSurface::arrow ( double  u,
double  v,
MGPosition  data[10] 
) const
virtual

Generate arrow data of the tangent along u and v and the normal.

Arrow 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 MGSurface::arrow ( const MGPosition uv,
MGPosition  data[10] 
) const
inlinevirtual

MGFSurfaceを実装しています。

void MGSurface::arrow ( const MGBox box,
double  u,
double  v,
MGPosition  data[10] 
) const

Generate arrow data, given box. The length of the arrows are defined from box.len().

double MGSurface::average_chord_length ( int  is_u,
const double  para[3],
const MGNDDArray tau 
) const

Compute average chord length along u(is_u==false) or v(is_u==true). Function's return value is the chord length.

引数
is_u=0, or 1. Indicates if para is u-value(is_u=1) or v(is_u=0).
parathree parameter value of srf, start, middle, and end of u parameter value if is_u==1, of v if is_u==0.
taudata points to evaluate on is_u parameter line. tau[.] is v values if is_u==1, u values if 0.
virtual int MGSurface::bdim_u ( ) const
inlinevirtual

Returns B-Rep Dimension of u.

MGSBRep, MGRSBRep, MGBSumSurfで再実装されています。

virtual int MGSurface::bdim_v ( ) const
inlinevirtual

Returns B-Rep Dimension of v.

MGSBRep, MGRSBRep, MGBSumSurfで再実装されています。

virtual MGBox MGSurface::box_limitted ( const MGBox uvrange) const
pure virtual

Return minimum box that includes limitted surface by uvrange.

入力のパラメータ範囲の曲線部分を囲むボックスを返す.

引数
uvrangeParameter Range of the curve.

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

MGBox MGSurface::box_param ( ) const

Return box of the parameter space of the surface.

const MGBox MGSurface::box_param2 ( ) const
inlinevirtual

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

MGFSurfaceを実装しています。

virtual MGPosition MGSurface::center ( ) const
virtual

Obtain ceter coordinate of the geometry.

MGGeometryを実装しています。

MGPlane, MGCylinder, MGPlaneImageで再実装されています。

virtual MGPosition MGSurface::center_param ( ) const
virtual

Obtain ceter parameter value of the geometry.

MGGeometryを実装しています。

virtual MGSurface& MGSurface::change_dimension ( int  sdim,
int  start1 = 0,
int  start2 = 0 
)
pure virtual

Changing this object's space dimension.

引数
sdimnew space dimension
start1Destination order of new object.
start2Source order of this object.

MGGeometryを実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

virtual MGSurface& MGSurface::change_range ( int  is_u,
double  t1,
double  t2 
)
pure virtual

Change parameter range, able to change the direction by providing t1 greater than t2.

引数
is_uif true, (t1,t2) are u-value. if not, v.
t1Parameter value for the start of original.
t2Parameter value for the end of original.

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

virtual MGSurface* MGSurface::clone ( ) const
pure virtual

Construct new surface object by copying to newed area.

User must delete this copied object by "delete".

MGGeometryを実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurf, MGPlaneImageで実装されています。

MGFace* MGSurface::clone_as_face ( ) const
virtual

Get the clone of this as a MGFace.

If this is MGSurface, it is converted to MGFace.

MGFSurfaceを実装しています。

virtual MGFSurface* MGSurface::clone_fsurface ( ) const
inlinevirtual

Get the clone of this MGFSurface.

MGFSurfaceを実装しています。

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

Compute the closest point parameter value (u,v)of this surface from a point.

MGFSurfaceを実装しています。

MGPlane, MGSphere, MGCylinderで再実装されています。

virtual MGPosition MGSurface::closest_on_boundary ( const MGStraight sl) const
inlinevirtual

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 MGPosition MGSurface::closest_on_perimeter ( const MGPosition point) const
virtual

Compute the closest point on all the perimeters of the surface.

The point is returned as the parameter value (u,v) of this surface.

MGSphereで再実装されています。

virtual MGPosition MGSurface::closest_on_perimeter ( const MGStraight sl) const
virtual
virtual int MGSurface::coef_sdim ( ) const
inlinevirtual

Obtain coefficient's space dimension.

This function is used in isect_start etc.

MGFSurfaceを実装しています。

void MGSurface::compute_sample_point ( double  u0,
double  u1,
double  v0,
double  v1,
MGPosition  Pn[9],
MGPosition center,
MGUnit_vector normal,
MGVector Nn_in = 0 
) const

compute sample point of the surface to get the approximate plane.

The approximate plane is of the surface within the parameter range (u0,v0) to (u1, v1).

引数
u0Parameter range.
u1Parameter range.
v0Parameter range.
v1Parameter range.
Pnsample points will be output.
centercenter of the sample points will be output.
normalaverage normal of Nn[] will be output.
Nn_in9 normals of the surface will be output.
virtual MGSurface* MGSurface::copy_change_dimension ( int  sdim,
int  start1 = 0,
int  start2 = 0 
) const
pure virtual

Construct new surface object by changing the original object's space dimension.

User must delete this copied object by "delete".

引数
sdimnew space dimension
start1Destination order of new line.
start2Source order of this line.

MGGeometryを実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

virtual MGSurface* MGSurface::copy_surface ( ) const
inlinevirtual

Construct new curve object by copying to newed area.

User must delete this copied object by "delete".

void MGSurface::curvatures ( const MGPosition uv,
double  value[4],
MGUnit_vector N 
) const

Compute surface curvatures.

value[0]=K:Gaussian curvature=k1*k2, value[1]=H:Mean curvature=(k1+k2)/2, value[2]=k1:minimum curvature, and value[3]=k2=maximum curvature. N is the unit normal vector at position (u,v).

void MGSurface::curvatures ( double  u,
double  v,
double  value[4],
MGUnit_vector N 
) const
MGUnit_vector MGSurface::direction ( const MGPosition param) const
virtual

Compute direction unit vector of the geometry.

MGGeometryを再実装しています。

virtual void MGSurface::display_arrows ( mgSysGL sgl) const
virtual

MGGelを再実装しています。

MGPlaneで再実装されています。

virtual int MGSurface::divide_multi_knot ( MGPvector< MGSurface > &  srfl) const
virtual

uまたはv方向に折れ(マルチノット)があるとき面を分割する 戻り値は、分割数を返却する

引数
srfl分割した曲面リスト

MGSBRep, MGRSBRepで再実装されています。

virtual void MGSurface::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.

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

MGObjectを実装しています。

MGPlane, MGPlaneImageで再実装されています。

int MGSurface::equal_direction ( const MGCurve param_curve,
const MGCurve world_curve 
) const

Compute if MGSurfCurve scurve(*this, param_curve) has the same direction to world_curve.

Assuming that scurve and world_curve are the same curve. Function's return value is: 1: same direction, -1:oppositie direction.

引数
param_curve(u,v) parameter representation curve of this.
world_curveworld representation curve.
virtual MGVector MGSurface::eval ( double  u,
double  v,
int  ndu = 0,
int  ndv = 0 
) const
pure virtual

Evaluate surface data.

引数
uU Parameter value of the surface.
vV Parameter value of the surface.
nduOrder of derivative along u.
ndvOrder of derivative along v.

MGFSurfaceを実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

MGVector MGSurface::eval ( const MGPosition uv,
int  ndu = 0,
int  ndv = 0 
) const
inlinevirtual
引数
uvFSurface parameter value(u,v)
nduOrder of derivative along u.
ndvOrder of derivative along v.

MGFSurfaceを実装しています。

virtual void MGSurface::eval_all ( double  u,
double  v,
MGPosition f,
MGVector fu,
MGVector fv,
MGVector fuv,
MGVector fuu,
MGVector fvv 
) const
virtual

Evaluate right continuous surface data.

Evaluate all positional data, 1st and 2nd derivatives.

引数
uU Parameter value of the surface.
vV Parameter value of the surface.
fPositional data.
fudf(u,v)/du
fvdf/dv
fuvd**2f/(du*dv)
fuud**2f/(du**2)
fvvd**2f/(dv**2)

MGSBRep, MGRSBRep, MGPlane, MGCylinderで再実装されています。

virtual void MGSurface::eval_all ( const MGPosition uv,
MGPosition f,
MGVector fu,
MGVector fv,
MGVector fuv,
MGVector fuu,
MGVector fvv 
) const
virtual

Evaluate right continuous surface data.

Evaluate all positional data, 1st and 2nd derivatives.

引数
uvParameter value of the surface.
fPositional data.
fudf(u,v)/du
fvdf/dv
fuvd**2f/(du*dv)
fuud**2f/(du**2)
fvvd**2f/(dv**2)

MGCylinderで再実装されています。

double MGSurface::eval_gap ( const MGCurve curve,
int  iperi,
MGPosition uv 
) const

evaluate gap between this surface's perimeter iperi and the given curve curve.

引数
curve(I/ ) curve to evaluate.
iperi(I/ ) 0: vmin, 1: umax, 2: vmax, and 3: umin.
uv( /O) the parameter of this that had the largest gap.
double MGSurface::eval_gap ( const MGCurve curve[4],
MGPosition uv 
) const

evaluate gap between this surface's perimeters and the given curve curve.

evaluation is performed for the perimeter i and curve[i] for 0<=i<=4. function's return value is the maximum gap.

引数
curve(I/ ) curves to evaluate.
uv( /O) the parameter of this that had the largest gap.
virtual void MGSurface::eval_spoint ( const MGNDDArray utau,
const MGNDDArray vtau,
MGSPointSeq spoint 
) const
virtual

Evaluate all the points (ui, vj) into spoint(i,j,.).

Here ui=utau(i) for 0<=i<utau.length() and vj=vtau(j) for 0<=j<vtau.length().

引数
utauu方向のデータポイント
vtauv方向のデータポイント
spointevaluated data will be output to spoint.
MGVector MGSurface::evaluate ( const MGPosition t,
const int *  nderiv 
) const
virtual

Evaluate n'th derivative data. n=0 means positional data evaluation.

引数
tParameter value, t's space dimension is geometry's manifold dimension.
nderivOrder of derivative of i-th parameter in nderiv[i], When nderiv=null, nderiv[i]=0 is assumed for all i.

MGGeometryを実装しています。

virtual MGSurface& MGSurface::exchange_uv ( )
pure virtual

Exchange parameter u and v.

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

virtual MGSurface& MGSurface::extend ( int  perimeter,
double  param,
double  length,
double  dk = 0. 
)
inlinevirtual

Modify the original Surface by extrapolating the specified perimeter.

The extrapolation is C2 continuous if the order >=4. The extrapolation is done so that extrapolating length is "length" at the position of the parameter value "param" of the perimeter.

引数
perimeterperimeter number of the Surface. =0:v=min, =1:u=max, =2:v=max, =3:u=min.
paramparameter value of above perimeter.
lengthchord length to extend at the parameter param of the perimeter.
dkCoefficient of how curvature should vary at extrapolation start point. When dk=0, curvature keeps same, i.e. dK/dS=0. When dk=1, curvature becomes zero at length extrapolated point, i.e. dK/dS=-K/length at extrapolation start point (S=parameter of arc length, K=Curvature at start point) That is, when dk reaches to 1 from 0, curve changes to flat.

MGSBRep, MGRSBRep, MGSphere, MGCylinderで再実装されています。

virtual bool MGSurface::flat ( const MGBox uvbox,
double  tol,
int &  direction,
MGPosition P,
MGUnit_vector N 
) const
protectedvirtual

Test if the surface is flat or not within the parameter value rectangle of uvbox. Function's return value is: true: if the surface is flat false: if the surface is not falt. When this is not falt, the direction that indicates which direction the surface should be divided will be output. ***** the flatness is tested only approximately. This is for exclusive use of planar().

引数
uvboxTarget parameter range.
tolTolerance allowed to regart flat (Allowed distance from a plane).
direction1: u-direction is more non flat. 0: v-direction is more non flat.
PPosition of the flat plane will be output.
NNormal of the flat plane will be output.

MGPlane, MGCylinderで再実装されています。

const MGFSurface* MGSurface::fsurface ( ) const
inlinevirtual

Get the MGFSurface pointer if this is MGSurface or MGFace.

MGObjectを再実装しています。

MGFSurface* MGSurface::fsurface ( )
inlinevirtual

MGObjectを再実装しています。

void MGSurface::fundamentals ( const MGPosition uv,
double  Q[6],
MGUnit_vector UN 
) const

Compute 1st and 2nd fundamental quantities of the surface.

In Q, 1st and 2nd fundamental quantities are returned as: Q[0]=E=fufu, Q[1]=F=fufv, Q[2]=G=fvfv, Q[3]=L=fuuUN, Q[4]=M=fuvUN=fvuUN, Q[5]=N=fvvUN.

引数
uvSurface parameter value (u,v)
QFundamental quantities will be returned.
UNNormal vector at uv will be returned.
void MGSurface::fundamentals ( double  u,
double  v,
double  Q[6],
MGUnit_vector N 
) const
引数
uSurface parameter u value of (u,v)
vSurface parameter v value of (u,v)
QFundamental quantities will be returned.
NNormal vector at uv will be returned.
void MGSurface::get_approximate_plane ( double  u0,
double  u1,
double  v0,
double  v1,
MGPlane plane,
double *  width = 0,
double *  height = 0 
) const

Compute the approximate plane in the parameter range from (u0, v0) to (u1,v1).

The plane's origin is center point of the plane when the surface is mapped onto the plane. The uderiv of the plane is the direction from the point(u0, v0) to (u1,v0).

引数
u0u range from u0 to u1.
u1u range from u0 to u1.
v0v range from v0 to v1.
v1v range from v0 to v1.
planeThe plane will be output.
widthThe width and the height of the plane that include all the data
heightfor the surface point to map onto the plane will be output
MGFace* MGSurface::get_face_pointer ( )
inlinevirtual

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

MGFSurfaceを実装しています。

const MGFace* MGSurface::get_face_pointer ( ) const
inlinevirtual

MGFSurfaceを実装しています。

void MGSurface::get_new_surface_knots ( int  parameter_normalization,
MGKnotVector uknots,
MGKnotVector vknots,
double *  Oldparameter = 0 
) const

Given MGSBRep or MGRSBRep as srf, compute normalize MGKnotVector along u and v.

virtual int MGSurface::get_number_of_boundaries ( ) const
inlinevirtual

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

MGFSurfaceを実装しています。

MGCurve* MGSurface::get_parameterCurve ( const MGCurve wcrv) const

Given world curve wcrv on this face, get the parameter space representation pcrv.

Function's return value is pcrv, which is newed one. Must be deleted.

MGSurface* MGSurface::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* MGSurface::get_surface_pointer ( ) const
inlinevirtual

MGFSurfaceを実装しています。

int MGSurface::getPerimeterCommon ( const MGCurve crv,
std::vector< double >  pspan[2],
int  peri_num[2] 
) const

Compute common curve part of this surface's perimeter and the crv.

Function's returned value is the number of common part curve part, which is 2 at most.

引数
crvcrv must be a cotinuous one curve, must not be MGCompositeCurve.
pspanparameter range of crv and perimeters will be output.
peri_numperimeter number of pspan[i] will be output in peri_num[i], (pspan[i], peri_num[i]) is one pair.
virtual bool MGSurface::has_commonFS ( const MGObject obj2) const
inlinevirtual

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

MGFSurfaceを実装しています。

virtual long MGSurface::identify_type ( ) const
pure virtual

Return This object's typeID.

MGGelを実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurf, MGPlaneImageで実装されています。

virtual bool MGSurface::in_range ( double  u,
double  v 
) const
pure virtual

Test if the parameter(u,v) is in this surface's parameter range.

MGFSurfaceを実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

bool MGSurface::in_range ( const MGPosition uv) const
inlinevirtual

MGFSurfaceを実装しています。

int MGSurface::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を実装しています。

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

Obtain i-th inner_boundary curves(world coordinates representation) of the FSurface.

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を実装しています。

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

Obtain i-th inner_boundary curves.

Obtain i-th inner_boundary curves(world coordinates representation) of the FSurface. 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を実装しています。

MGCSisect_list MGSurface::intersect ( const MGCurve curve) const

Default surface-curve intersection function.

Restriction for this surface and curve:

  1. this surface and curve must not have C0 continuity in it.
  2. param_s() and param_e() of this surface and curve must return real start and end parameter values. That is, must be finite.
MGCSisect_list MGSurface::intersect ( const MGEllipse el) const

Default surface-curve intersection function.

MGSSisect_list MGSurface::intersect ( const MGSurface srf2) const
protected

Default intersection program of MGSurface. It is assumed that both this and srf2 are not a plane.

virtual int MGSurface::intersect_dnum_u ( ) const
protectedpure virtual

The following two function will be used in perps or isect to decide how many division of the surface along u or v direction should be applied before using perp_guess or isect_guess.

MGPlane, MGSphere, MGCylinderで実装されています。

virtual int MGSurface::intersect_dnum_v ( ) const
protectedpure virtual

MGPlane, MGSphere, MGCylinderで実装されています。

MGPosition_list MGSurface::intersectInner ( const MGSurface sf2) const
protected

Compute intersection points of an inner parameter line of this surface and sf2. The intersection point is used to compute surface to surface intersection lines. Function's return value is at most one intersection point un uvuv_list. One member of uvuv_list is (u1,v1,u2,v2), where (u1,v1) is a parameter of this surface and (u2,v2) is a parameter of surf.

引数
sf2The second surface.
MGisects MGSurface::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.

MGObjectを実装しています。

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

MGObjectを実装しています。

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

MGObjectを実装しています。

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

MGObjectを実装しています。

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

MGObjectを実装しています。

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

MGObjectを実装しています。

MGSSisect_list MGSurface::intersectPl ( const MGPlane srf2) const
protected

Default intersection program of MGSurface with a plane.

bool MGSurface::is_flat_and_small ( const MGBox bx,
double  surftol,
double  melen2,
bool &  direction 
) const

Test if surface limitted by the parameter range bx is flat and small.

That is, surface is flat within surftol from the average plane, and all of the egedes are small compared with melen2.

virtual MGSSisect_list MGSurface::isect ( const MGSurface srf2) const
pure virtual

Surface and Surface intersection.

Surface と Surface の交線を求める。

MGFSurfaceを実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

virtual MGSSisect_list MGSurface::isect ( const MGPlane srf2) const
pure virtual

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

virtual MGSSisect_list MGSurface::isect ( const MGSphere srf2) const
pure virtual

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

virtual MGSSisect_list MGSurface::isect ( const MGCylinder srf2) const
pure virtual

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

virtual MGSSisect_list MGSurface::isect ( const MGSBRep srf2) const
pure virtual

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

virtual MGSSisect_list MGSurface::isect ( const MGRSBRep srf2) const
pure virtual

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

virtual MGSSisect_list MGSurface::isect ( const MGBSumSurf srf2) const
pure virtual

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

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

MGFSurfaceを実装しています。

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

MGFSurfaceを実装しています。

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

Intersection.

MGFSurfaceを実装しています。

virtual MGCSisect_list MGSurface::isect ( const MGCurve curve) const
pure virtual

Curve and Surface intersection.

Surface と Curve の交点を求める。

MGFSurfaceを実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

virtual int MGSurface::isect_area_length ( ) const
inlineprotectedvirtual

isect_area_length() returns initial area length for the intersection line.

MGFSurfaceを実装しています。

virtual int MGSurface::isect_direction ( const MGFSurface sf2,
int  m1,
MGPosition uvuvS,
double &  du,
double &  dv,
double  acuRatio = 1. 
) const
inlineprotectedvirtual

isect_direction() is used by isect_startPt() to define which constant parameter line should be used to compute intersection, and what incremental value be used for the parameter. Function's return value is direction to get next intersection(with dt). When =1: u=const direction, =0: v=const, =-1: cannot get intersection.

引数
sf2Second surface for the intersection.
m1id of uvuvS that indicates this surface's parameter position in uvuvS. (uvuvS(m1), uvuvS(m1+1))=(u,v) of this surface.
uvuvSstart parameter (u,v) pair of this surface and sf2.
duIncremental value of the parameter kind of kdt will be output.
dvRight dt will be output according to the function's output =0,1.
acuRatioacuracy ratio.

MGFSurfaceを再実装しています。

int MGSurface::isect_div_id_max ( ) const
protected

isect_div_id_max is maximum id of array of sect_div defined in isect_dt_coef. That is, isect_div_id_max+1 is the length of the array sect_div.

virtual MGCurve* MGSurface::isect_incr_pline ( const MGPosition uv,
int  kdt,
double  du,
double  dv,
double &  u,
double &  v,
int  incr = 0 
) const
protectedpure virtual

"isect1_incr_pline" is a dedicated function of isect_start_incr, will get shortest parameter line necessary to compute intersection.

引数
uvlast intersection point.
kdtInput if u=const v-parameter line or not, true:u=const, false:v=const.
duIncremental parameter length of u.
dvIncremental parameter length of v.
unext u value will be output.
vnext v value will be output.
incrIncremental valuse of B-coef's id.

MGFSurfaceを実装しています。

virtual void MGSurface::isect_inner_dt ( int  n,
const MGPosition uvnow,
double &  du,
double &  dv,
int &  kdt,
double  acuRatio = 1. 
) const
inlineprotectedvirtual

"isect_inner_dt" is a dedicated function of isect_startPt, comutes adequate incremental parameter value(du,dv) and parameter line kind kdt(u=const or v=const).

引数
nnum of i.p. obtained so far(not include uvnow).
uvnowintersection point obtained last(of this).
duincremental u length from previous to uvnow is input. New du or dv will be output according to kdt's return value.
dvincremental v length.
kdtParameter kind used so far is input, will be output as: =1:parameter line kind(u=const), =0: v=const, =-1:should halt computation since incremental value is zero.
acuRatioAccurate ratio.

MGFSurfaceを再実装しています。

virtual int MGSurface::isect_order ( ) const
pure virtual

Return order of intersection line order of MGLBRep. The default is 4.

MGBSumSurfで実装されています。

virtual MGCSisect_list MGSurface::isect_with_noCompoSC ( const MGSurfCurve scrv) const
protectedvirtual

isect with SurfCurve whose m_curve is not a MGTrimmedCurve of MGCompositeCurve.

virtual MGCSisect_list MGSurface::isect_withC1LB ( const MGLBRep lb) const
protectedvirtual

Compute intersections with MGLBRep lb that does not have C0 continuity in it.

virtual MGCSisect_list MGSurface::isectSl ( const MGStraight sl,
const MGBox uvbox = mgNULL_BOX 
) const
protectedvirtual

Intersection of Surface and a straight line.

引数
slTarget straight.
uvboxindicates if this surface is restrictied to the parameter range of uvbox. If uvbox.is_null(), no restriction.

MGSBRep, MGPlane, MGRSBRep, MGCylinder, MGSphereで再実装されています。

virtual double MGSurface::knot_u ( int  i) const
inlinevirtual

Access to i-th element of u knot.

MGFSurfaceを再実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで再実装されています。

virtual double MGSurface::knot_v ( int  i) const
inlinevirtual

Access to i-th element of v knot.

MGFSurfaceを再実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで再実装されています。

virtual const MGKnotVector& MGSurface::knot_vector_u ( ) const
pure virtual

Returns the u knot vector.

MGFSurfaceを実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

virtual MGKnotVector& MGSurface::knot_vector_u ( )
pure virtual

MGFSurfaceを実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

virtual const MGKnotVector& MGSurface::knot_vector_v ( ) const
pure virtual

Returns the v knot vector.

MGFSurfaceを実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

virtual MGKnotVector& MGSurface::knot_vector_v ( )
pure virtual

MGFSurfaceを実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

virtual bool MGSurface::less_than ( int  i,
const MGPosition uv1,
const MGPosition uv2 
) const
virtual

Compare two parameter values. If uv1 is less than uv2, return true.

Comparison is done after projected to i-th perimeter of the surface.

引数
iperimeter number.
uv11st point parameter.
uv22nd point parameter.

MGSBRep, MGRSBRep, MGBSumSurfで再実装されています。

int MGSurface::manifold_dimension ( ) const
inlinevirtual

Get manifold dimension.

MGGelを再実装しています。

virtual void MGSurface::negate ( )
inlinevirtual

Negate direction of surface.

面の方向を反転する。 Change direction of the surface.

MGGeometryを再実装しています。

virtual void MGSurface::negate ( int  is_u)
pure virtual

Negate direction of surface.

引数
is_uNegate along u-direction if is_u is ture, else along v-direction.

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

void MGSurface::negate_transform ( MGGeometry boundary) const
virtual

Transform the coordinates of boundary of this geometry.

Transformation is done so that new coordinate of boundary is the same coordinate as the new one of this geometry after negate() of this geometry is done. That is, boundary coordinates are of parameter world of this geometry.

MGGeometryを実装しています。

virtual void MGSurface::negateFS ( )
inlinevirtual

Negate the FSurface.

MGFSurfaceを実装しています。

virtual MGVector MGSurface::normal ( double  u,
double  v 
) const
virtual

Compute normal vector(not unit) at uv.

MGFSurfaceを実装しています。

MGPlaneで再実装されています。

virtual MGVector MGSurface::normal ( const MGPosition uv) const
virtual

Compute normal vector(not unit) at uv.

MGFSurfaceを実装しています。

MGPlaneで再実装されています。

virtual const MGObject* MGSurface::object_pointer ( ) const
inlinevirtual

Get the object point of this MGFSurface.

MGFSurfaceを実装しています。

virtual MGObject* MGSurface::object_pointer ( )
inlinevirtual

MGFSurfaceを実装しています。

virtual MGPvector<MGSurface> MGSurface::offset ( double  ofs_value,
int &  error 
) const
virtual

Surface offset.

一定オフセット関数 オフセット方向は、ノーマル方向を正とする。曲率半径より大きいオフセットは行わない。 戻り値は、オフセット曲面リストが返却される。エラーのとき長さ0の曲面リストが返る。 トレランスはline_zero()を使用している。 Surface offset. positive offset value means offset normal direction.line_zero() is used. the radius of curvature is larger than offset value.

引数
ofs_valueオフセット量
errorエラーコード 0:成功 -2:曲率半径以上のオフセット不可 -3:面生成コンストラクタエラー
virtual std::auto_ptr<MGSurface> MGSurface::offset_c1 ( double  ofs_value,
int &  error 
) const
virtual

C1 continuous Surface offset.

C1連続曲面の一定オフセット関数 オフセット方向は、ノーマル方向を正とする。曲率半径より大きいオフセットは行わない。 戻り値は、オフセットした曲面のオートポインタが返却される。エラーのときヌルが返る。 トレランスはline_zero()を使用している。 C1 continuous Surface offset. positive offset value means offset normal direction. the radius of curvature is larger than offset value.line_zero() is used.

引数
ofs_valueオフセット量
errorエラーコード 0:成功 -1:面におれがある -2:曲率半径以上のオフセット不可 -3:面生成コンストラクタエラー

MGPlane, MGSphere, MGCylinderで再実装されています。

int MGSurface::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を実装しています。

virtual bool MGSurface::on ( const MGPosition P,
MGPosition  
) const
virtual

Test if point P is ont the surface or not.

与えられた誤差内で点が面上にあるかどうかテストする。 Test if point P is ont the surface or not. Even if P is not on the surface, return parameter of the nearest point of the surface.

引数
PA point. 指定点

MGFSurfaceを実装しています。

MGPlane, MGSphere, MGCylinderで再実装されています。

virtual bool MGSurface::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 surface.

If u or v is on a perimeter, (u,v) 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 will be output, If function returns false, the nearest perimeter number will be output.

MGFSurfaceを実装しています。

MGPlane, MGCylinderで再実装されています。

bool MGSurface::on_a_perimeter2 ( int  is_u,
double &  x,
int &  perim_num 
) const

Test if input x is parameter value on a perimeter of the surface.

If x is on a perimeter, x will be updated to the perimeter value. Function's return value is true if on a perimeter.

引数
is_uspecify if x is u or v value, is_u!=0(true) means u value.
xSurface parameter (u,v)
perim_numif function returns true,the perimete number will be output.
virtual bool MGSurface::on_perimeter ( const MGCurve uvcurve,
int &  perim_num 
) const
virtual

Test the uvcurve is on a perimeter.

If on a perimeter, true will be returned.

引数
uvcurvecurve of surface parameter (u,v)
perim_numif function returned true, the perimete number will be output.
virtual bool MGSurface::on_the_perimeter ( int  perim_num,
double  u,
double  v 
) const
virtual

Test if input (u,v) is on the perimeter perim_num.

If u or v is on a perimeter, true will be returned.

引数
perim_numa perimete number is input.
uSurface parameter u of (u,v)
vSurface parameter v of (u,v)

MGPlaneで再実装されています。

MGSurface& MGSurface::operator*= ( double  scale)
pure virtual

MGObjectを実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

MGSurface& MGSurface::operator*= ( const MGMatrix mat)
pure virtual

MGObjectを実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

MGSurface& MGSurface::operator*= ( const MGTransf tr)
pure virtual

MGObjectを実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

MGSurface& MGSurface::operator+= ( const MGVector v)
pure virtual

Object transformation.

MGObjectを実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

MGSurface& MGSurface::operator-= ( const MGVector v)
pure virtual

MGObjectを実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

virtual bool MGSurface::operator< ( const MGGel gel2) const
pure virtual

MGGelを再実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

virtual MGSurface& MGSurface::operator= ( const MGSurface gel2)
inlinevirtual

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

virtual bool MGSurface::operator== ( const MGGel gel2) const
pure virtual

comparison

MGGelを再実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

virtual int MGSurface::order_u ( ) const
inlinevirtual

Returns the order of u.

MGSBRep, MGRSBRep, MGBSumSurfで再実装されています。

virtual int MGSurface::order_v ( ) const
inlinevirtual

Returns the order of v.

MGSBRep, MGRSBRep, MGBSumSurfで再実装されています。

virtual std::ostream& MGSurface::out ( std::ostream &  ostrm) const
virtual

Output virtual function.

MGGeometryを再実装しています。

MGSBRep, MGRSBRep, MGBSumSurf, MGPlane, MGPlaneImage, MGSphere, MGCylinderで再実装されています。

virtual MGPvector<MGCurve> MGSurface::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を実装しています。

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

Obtain boundary curves(parameter space representation) of the FSurface.

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& MGSurface::outFS ( std::ostream &  ostrm) const
inlinevirtual

Output virtual function.

MGFSurfaceを実装しています。

virtual MGPosition MGSurface::param ( const MGPosition ) const
virtual

Return surface parameter value of a point on the surface.

自身の上の指定点を表すパラメータ値を返す。 If input point is not on the surface, return the nearest point on the surface.

MGFSurfaceを実装しています。

MGPlaneで再実装されています。

virtual double MGSurface::param_e_u ( ) const
pure virtual

Return ending parameter value.

MGFSurfaceを実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurf, MGPlaneImageで実装されています。

virtual double MGSurface::param_e_v ( ) const
pure virtual

MGFSurfaceを実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurf, MGPlaneImageで実装されています。

virtual double MGSurface::param_error ( ) const
virtual

Obtain parameter space error.

MGPlane, MGSphere, MGCylinderで再実装されています。

virtual double MGSurface::param_error_u ( ) const
virtual

MGPlaneで再実装されています。

virtual double MGSurface::param_error_v ( ) const
virtual

MGPlaneで再実装されています。

MGPosition MGSurface::param_mid ( ) const
inlinevirtual

Return parameter value of the middle point of the surface.

The middle point is defined as the parameter (u,v) where u=(param_s_u()+param_e_u())/2, and v likewise.

MGFSurfaceを再実装しています。

double MGSurface::param_of_pcurve ( double  tw,
const MGCurve wcurve,
const MGCurve pcurve,
const double *  guess = 0 
) const

Obtain the parameter of pcurve that represent the same point as wcurve.eval(tw).

Let wcurve be a world curve rep that lies on this surface, and pcurve is parameter (u,v) expression of wcurve. That is, wcurve==MGSurfCurve pline(*this,pcurve). Then, param_of_pcurve() will obtain Let S() is this surface, fp() is pcurve, and fw() is wcurve. Then S(fp(tp))=fw(tb).

引数
twpoint parameter of wcurve to get the pcurve parameter.
wcurveworld curve that lies on this surface.
pcurveThis surface's parameter rep of wcurve.
guessguess parameter value to compute tp. When guess=null, param_of_pcurve will define the guess parameter.
virtual MGBox MGSurface::param_range ( ) const
virtual

Return parameter range.

MGFSurfaceを実装しています。

MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurf, MGPlaneImageで再実装されています。

virtual double MGSurface::param_s_u ( ) const
pure virtual

Return starting parameter value.

MGFSurfaceを実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurf, MGPlaneImageで実装されています。

virtual double MGSurface::param_s_v ( ) const
pure virtual

MGFSurfaceを実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurf, MGPlaneImageで実装されています。

virtual double MGSurface::param_span ( ) const
virtual

Compute square of parameter span length from (u.min, v.min) to (u.max, v.max).

MGPosition MGSurface::parameter ( const MGPosition P) const

Compute parameter value of given point.

自身の上の指定点を表すパラメータ値を返す。 If input point is not on the geometry, return the nearest point on the geometry.

引数
PPoint(指定点)
virtual MGCurve* MGSurface::parameter_curve ( int  is_u,
double  x 
) const
pure virtual

Compute parameter curve.

Returned is newed area pointer, and must be freed by delete.

引数
is_uIndicates x is u-value if is_u is true.
xParameter value. The value is u or v according to is_u.

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurf, MGPlaneImageで実装されています。

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

Obtain parameter curves.

In the case of surFSurface, parameter curve is only one. However, in the case of FSurface, 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を実装しています。

MGBox MGSurface::parameter_range ( ) const
virtual

Return parameter range of the geometry(パラメータ範囲を返す).

MGGeometryを実装しています。

virtual MGSurface* MGSurface::part ( const MGBox bx,
int  multiple = 0 
) const
pure virtual

Compute part of the surface limitted by the parameter range bx.

bx(0) is the parameter (us,vs) and bx(1) is (ue,ve). That is u range is from us to ue , and so on. Retured is newed object, must be deleted.

引数
bxTarget box.
multipleIndicates if start and end knot multiplicities are necessary. =0:unnecessary, !=0:necessary.

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

virtual MGCurve* MGSurface::perimeter_curve ( int  i) const
virtual

Retrieve perimeter i of this surface.

i must be < perimeter_num(). When perimeter_num()==0, this function is undefined. Retured is newed object, must be deleted.

MGPlane, MGSphere, MGCylinder, MGPlaneImageで再実装されています。

virtual int MGSurface::perimeter_num ( ) const
pure virtual

Return how many perimeters this surface has.

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurf, MGPlaneImageで実装されています。

virtual MGPosition MGSurface::perimeter_uv ( int  i,
double  t 
) const
virtual

Construct perimeter i's (u,v) parameter position.

MGPlane, MGPlaneImageで再実装されています。

virtual int MGSurface::perp_guess ( const MGPosition uv0,
const MGPosition uv1,
const MGPosition P,
const MGPosition uvguess,
MGPosition uv 
) const
virtual

Compute a perpendicular point from a point P, given guess parameter value uvguess.

Function's return value is: true if uv is obtained, false if uv is not obtained.

引数
uv0parameter range of this surface, from uv0 to uv1.
uv1parameter range of this surface, When uv0(0)>=uv1(0) or uv0(1)>=uv1(1), no limit for this parameter range.
PPoint(指定点).
uvguessguess parameter value of surface.
uvParameter value will be returned.
bool MGSurface::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を実装しています。

virtual int MGSurface::perp_guess ( const MGPosition uv0,
const MGPosition uv1,
const MGCurve curve,
double  t0,
double  t1,
const MGPosition tuvg,
MGPosition tuv 
) const
virtual

Compute perpendicular points of a curve and a surface.

Given a guess starting paramter value, compute perpendicular points. Function's return value is: perp_guess=true if perpendicular points obtained, perp_guess=false if perpendicular points not obtained,

引数
uv0parameter range of this surface, from uv0 to uv1.
uv1parameter range of this surface. When uv0(0)>=uv1(0) or uv0(1)>=uv1(1), no limit for this parameter range.
curvecurve.
t0parameter range of curve, from t0,
t1parameter range of curve, to t1. When t0>=t1, no limit for curve2 parameter range.
tuvgGuess parameter value of curve and this surface.
tuvperpendicular points' parameter values will be output. tuv(0): curve's parameter, (tuv(1),tuv(2)):this surface's parameter.
virtual int MGSurface::perp_guess ( const MGPosition uv0,
const MGPosition uv1,
const MGCompositeCurve crv,
double  t0,
double  t1,
const MGPosition tuvg,
MGPosition tuv 
) const
virtual

Compute perpendicular points of a curve and a surface.

引数
uv0parameter range of this surface, from uv0 to uv1.
uv1When uv0(0)>=uv1(0) or uv0(1)>=uv1(1), no limit for this parameter range.
crvMGCompositeCurve.
t0parameter range of curve, from t0 to t1.
t1When t0>=t1, no limit for curve2 parameter range.
tuvgGuess parameter value of curve and this surface.
tuvperpendicular points' parameter values will be output, tuv(0): curve's parameter, (tuv(1),tuv(2)):this surface's parameter.
virtual bool MGSurface::perp_guess ( const MGCurve curve,
const MGPosition uvguess,
double  tguess,
MGPosition uv,
double &  t 
) const
virtual

Compute perpendicular points of a curve and a surface.

Given guess a starting paramter value, compute perpendicular points. 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 FSurface.
tguessGuess parameter value of the curve.
uvperpendicular point's parameter values of the shell will be output.
tCurve's point's parameter value will be output.

MGFSurfaceを実装しています。

virtual int MGSurface::perp_point ( const MGPosition P,
MGPosition uv,
const MGPosition uvguess = 0 
) const
virtual

Return the foot of the perpendicular straight line from P.

Return the foot that is nearest to point uvguess. 与点にもっとも近い、与点から面に垂直な面上の点を求める。 Function's return value is whether point is obtained(1) or not(0).

引数
P指定点
uvParameter value of the plane will be output パラメータ値
uvguessguess parameter value of the surface

MGFSurfaceを実装しています。

MGPlane, MGSphere, MGCylinderで再実装されています。

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

Return all foots of perpendicular straight lines from P.

引数
PPoint of a space(指定点)

MGFSurfaceを実装しています。

MGPlane, MGSphere, MGCylinderで再実装されています。

MGPosition MGSurface::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を再実装しています。

virtual MGPosition MGSurface::range ( const MGPosition ) const
virtual

Round the input parameter value uv.

入力パラメータをパラメータ範囲でまるめて返却する。 Round the input parameter value uv into the parameter range of the surface.

MGFSurfaceを実装しています。

MGRSBRep, MGPlane, MGSphere, MGCylinderで再実装されています。

virtual void MGSurface::ReadMembers ( MGIfstream buf)
protectedvirtual

メンバデータを読み込む関数 戻り値boolは正常に読み出しが出来ればtrue、失敗すればfalseになる ここでは処理対象となるデータメンバが無いので何も処理をしない。

MGGeometryを再実装しています。

MGSBRep, MGPlane, MGRSBRep, MGCylinder, MGSphere, MGBSumSurf, MGPlaneImageで再実装されています。

virtual void MGSurface::remove_knot ( )
virtual

removal redundant knots within the tolerance line_zero().

ノット削除関数(B表現曲線のみ) トレランスはline_zeroを使用する。元のノットが細かいものほど削除しやすい

MGSBRep, MGRSBRepで再実装されています。

virtual MGSurface& MGSurface::rotate_self ( const MGVector vec,
double  angle,
const MGPosition origin = mgORIGIN 
)
virtual

Rotate the surface around the straight line.

指定点をとおり指定方向ベクトルを持つ直線の回りを指定角度の 回転を行ない自身の面とする。 Rotate the surface around the straight line whose direction is vec and that passes through origin.

virtual int MGSurface::sdim ( ) const
pure virtual

Return the surface type.

MGGeometryを実装しています。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

virtual void MGSurface::shade ( mgVBO vbo,
const MGDrawParam para,
mgVBO::ELEMENT_TARGET  target = mgVBO::SHADING 
) const
virtual

Shade the object in world coordinates.

MGObjectを再実装しています。

MGPlane, MGPlaneImageで再実装されています。

virtual void MGSurface::shrink_to_knot ( const MGBox uvbx,
int  multiple = 0 
)
inlinevirtual

Shrink this surface 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.

引数
uvbxTarget parameter box.
multipleIndicates if start and end knot multiplicities are necessary. =0:unnecessary, !=0:necessary.

MGSBRep, MGRSBRep, MGBSumSurfで再実装されています。

virtual void MGSurface::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を実装しています。

MGPlaneで再実装されています。

const MGSurface* MGSurface::surf ( ) const
inlinevirtual

Return MGSurface pointer.

Return MGSurface pointer if this is a MGSurface. Else returns null.

MGGelを再実装しています。

MGSurface* MGSurface::surf ( )
inlinevirtual

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

MGGelを再実装しています。

virtual MGSBRep* MGSurface::surf1D ( const MGPlane pl) const
protectedpure virtual

Obtain 1D surface rep. of this surf which can be used for isect(const MGPlane& pl). This surf1D is used in isect for the argument of isect_startPlane, which will use surf1D to compute isect(pl). surf1D=0.(intersection with x=0. plane) is the intersection lines.

bool MGSurface::test_and_get_approximate_plane ( double  u0,
double  u1,
double  v0,
double  v1,
double  surface_tol,
double  angle,
MGPlane plane,
double &  width,
double &  height 
) const

Compute the approximate plane in the parameter range from (u0, v0) to (u1,v1).

Also, test if the surface is within surface_tol and angle from the plane. The plane's origin is center point of the plane when the surface is mapped onto the plane. the uderiv is the direction from the point(u0, v0) to (u1,v0). Function's return value is true when the surface is within the tolerance surface_tol, and the surface normals are within angle from the plane's normal plane, width, and height are valid only when function's return value is true.

引数
u0u range from u0.
u1to u1.
v0v range from v0.
v1to v1.
surface_toltolerance allowed for the deviation from the plane to the surface.
angleangle allowed for the normal of the plane and the normals of the surface.
planeThe plane will be output.
widthThe width and the height of the plane that include all the data.
heightfor the surface point to map onto the plane.
virtual void MGSurface::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を実装しています。

virtual MGSURFACE_TYPE MGSurface::type ( ) const
pure virtual

Return the surface type.

面のTypeを返却する。

MGSBRep, MGRSBRep, MGPlane, MGSphere, MGCylinder, MGBSumSurfで実装されています。

MGUnit_vector MGSurface::unit_normal ( const MGPosition uv) const
virtual

Compute unit normal vector at uv.

MGFSurfaceを実装しています。

MGUnit_vector MGSurface::unit_normal ( double  u,
double  v 
) const
virtual

Compute unit normal vector at uv.

MGFSurfaceを実装しています。

virtual std::string MGSurface::whoami ( ) const
inlinevirtual

MGGeometryを再実装しています。

MGSBRep, MGRSBRep, MGPlane, MGCylinder, MGSphere, MGBSumSurf, MGPlaneImageで再実装されています。

virtual void MGSurface::WriteMembers ( MGOfstream buf) const
protectedvirtual

メンバデータを書き込む関数 戻り値boolは正常に書き込みが出来ればtrue、失敗すればfalseになる ここでは処理対象となるデータメンバが無いので何も処理をしない。

MGGeometryを再実装しています。

MGSBRep, MGPlane, MGRSBRep, MGCylinder, MGSphere, MGBSumSurf, MGPlaneImageで再実装されています。

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

MG_DLL_DECLR friend void isect_start_adjustSE ( int  ngtan,
MGNDDArray tau,
MGBPointSeq point,
MGLBRep lineb,
MGVector tan[2] 
)
friend

Update lineb so as to have the tangent tan for start or end according to ngtan.

引数
ngtanReturn value of isect_start_tan, indicates which end be adjusted. =1: start tangent, =2:end tangent, =3:both tangent.
taudata point abcissa.
pointdata point ordinate.
linebline b-rep obtained so far. tangent adjusted new B-rep will be output.
tanaccurate tangent data obtained by isect_start_tan.
MG_DLL_DECLR friend int isect_start_tan ( const MGFSurface sf1,
const MGFSurface sf2,
const MGLBRep lineb,
MGVector Tse[2] 
)
friend

Check if the intersection line lineb's start and end tangent vectors are accurate enough. If they do not have enough accuracy, isect_start_tan returns which end did not have the accuracy. 1:start, 2:end, 3:start and end. If both ends had enough accuracy, returns 0.

引数
sf1Surface 1.
sf2Surface 2.
linebthe intersection line.
TseIf an end had not the accuracy, accurate tangent will be output. Tse[0]:start, Tse[1]:end.

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