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

Defines Surface B-Representation, that is , B-Spline surface. [詳解]

MGSBRep の継承関係図
MGSurface MGGeometry MGFSurface MGObject MGAttribedGel MGGel

公開メンバ関数

 MGSBRep ()
 Default constructor(dummy surface brep). [詳解]
 
 MGSBRep (const MGSPointSeq &vertex, const MGKnotVector &tu, const MGKnotVector &tv)
 
 MGSBRep (const MGSPointSeq &points, int orderu=4, int orderv=4)
 
 MGSBRep (const MGNDDArray &utau, const MGNDDArray &vtau, const MGSPointSeq &points, const MGKnotVector &tu, const MGKnotVector &tv)
 
 MGSBRep (const MGSBRepTP &tp, const MGNDDArray &utau, const MGNDDArray &vtau, const MGVector uvec[4], const MGVector vvec[4], const MGSPointSeq &points)
 
 MGSBRep (MGSBRepEndC &endc, const MGNDDArray &utaui, const MGNDDArray &vtaui, const MGSPointSeq &value)
 
 MGSBRep (MGSBRepEndC &endc, int orderu, int orderv, const MGNDDArray &utaui, const MGNDDArray &vtaui, const MGSPointSeq &value)
 
 MGSBRep (MGSBRepEndC &endc, const MGNDDArray &utaui, const MGNDDArray &vtaui, const MGSPointSeq &value, const MGKnotVector &tu, const MGKnotVector &tv)
 
 MGSBRep (const MGLBRep &lbrep, const MGUnit_vector &uvec, double start_dist, double end_dist)
 
 MGSBRep (const MGNDDArray &utau, const MGNDDArray &vtau, const MGSPointSeq &value, int orderu=4, int orderv=4)
 
 MGSBRep (const MGStraight &st, const MGUnit_vector &uvec, double start_dist, double end_dist)
 
 MGSBRep (const MGNDDArray &tau, const std::vector< MGLBRep * > &lines, const MGLBRep *deriS, const MGLBRep *deriE)
 
 MGSBRep (const MGSBRep &old_brep, const MGKnotVector &ut, const MGKnotVector &vt, int &error)
 
 MGSBRep (const MGNDDArray &utau, const MGNDDArray &vtau, const MGSPointSeq &points, const MGKnotVector &tu, const MGKnotVector &tv, const MGSPointSeq &weight)
 Obtain Surface B-Rep by Least square approximation. [詳解]
 
 MGSBRep (const MGNDDArray &utau, const MGNDDArray &vtau, const MGSPointSeq &points, const MGSPointSeq &dp, double deviation)
 
 MGSBRep (const MGCurve *edge_crvl[4], const MGCurve &blendCrvU, const MGCurve &blendCrvV, const MGSBRepTP &tp, int &error)
 
 MGSBRep (MGPvector< MGLBRep > &edges, int &error, const MGCurve *blendCrvU=0, const MGCurve *blendCrvV=0)
 
 MGSBRep (const MGCurve *edge_crvl[4], const MGSBRepTP &tp, int &error, const double *alpha=0)
 
 MGSBRep (bool along_u, const MGPvector< MGLBRep > &perimeters)
 
 MGSBRep (const MGSBRep &old_brep, const MGKnotArray &uknots, const MGKnotArray &vknots)
 Gets new B-Rep by adding knots to an original B-Rep. [詳解]
 
 MGSBRep (const MGSBRep &brep1, int which1, int continuity, const MGSBRep &brep2, int which2, int opposite)
 
 MGSBRep (const MGBox &uvrange, const MGSBRep &old_brep, int multiple=0)
 
 MGSBRep (int dim, const MGSBRep &sbrep, int start1=0, int start2=0)
 
 MGSBRep (const MGPlane &plane, const MGBox &prange)
 Construct a Surface B-Rep (order = 2 ) from Plane and Parameter ranges. [詳解]
 
 MGSBRep (const std::vector< const MGCurve * > &curves, bool direction_adjustment=true)
 
 MGSBRep (const MGPvector< MGCurve > &curves, bool direction_adjustment=true)
 
MGSBRepoperator= (const MGGel &gel2)
 
MGSBRepoperator= (const MGSBRep &gel2)
 
MGSBRep operator+ (const MGVector &) const
 
MGSBRep operator- (const MGVector &) const
 
MGSBRep operator* (double) const
 
MGSBRep operator* (const MGMatrix &) const
 
MGSBRep operator* (const MGTransf &) const
 
MGSBRepoperator+= (const MGVector &v)
 Object transformation. [詳解]
 
MGSBRepoperator-= (const MGVector &v)
 
MGSBRepoperator*= (double scale)
 
MGSBRepoperator*= (const MGMatrix &mat)
 
MGSBRepoperator*= (const MGTransf &tr)
 
bool operator== (const MGSBRep &gel2) const
 Comparison of two objects. [詳解]
 
bool operator< (const MGSBRep &gel2) const
 
bool operator== (const MGGel &gel2) const
 comparison [詳解]
 
bool operator< (const MGGel &gel2) const
 
bool operator!= (const MGGel &gel2) const
 
bool operator!= (const MGSBRep &gel2) const
 
bool operator== (const MGRSBRep &gel2) const
 
int bdim_u () const
 Returns B-Rep Dimension of u. [詳解]
 
int bdim_v () const
 Returns B-Rep Dimension of v. [詳解]
 
MGBox box_limitted (const MGBox &uvrange) const
 Compute minimum box that includes the linitted parameter range surface. [詳解]
 
MGSBRepchange_dimension (int sdim, int start1=0, int start2=0)
 Changing this object's space dimension. [詳解]
 
MGSBRepchange_range (int is_u, double t1, double t2)
 
double & coef (int i, int j, int k)
 Access to (i,j)th element of coef(left-hand side version). [詳解]
 
double coef (int i, int j, int k) const
 Access to (i,j)th element of coef(right-hand side version). [詳解]
 
MGVector coef (int i, int j) const
 Extract (i,j,k) elements for 0<=k<sdim() as a vector. [詳解]
 
const double * coef_data (int i=0, int j=0, int k=0) const
 Returns a pointer to the surface b-coef data. [詳解]
 
int continuity (const MGSBRep &brep2, int &which1, int &which2, int &opposite, double &ratio) const
 
MGSBRepclone () const
 
MGSBRepcopy_change_dimension (int sdim, int start1=0, int start2=0) const
 
void display_control_polygon (mgSysGL &sgl) const
 Display control polygons using mgVBO::MGDrawPointSeq(sp) [詳解]
 
int divide_multi_knot (MGPvector< MGSurface > &srfl) 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 surface data. [詳解]
 
void eval_all (double u, double v, MGPosition &f, MGVector &fu, MGVector &fv, MGVector &fuv, MGVector &fuu, MGVector &fvv) const
 
void eval_all (double u, double v, int ndu, int ndv, double *deriv) const
 
MGSurfaceexchange_uv ()
 Exchange parameter u and v. [詳解]
 
MGSBRepextend (int perimeter, double param, double length, double dk=0.)
 
long identify_type () const
 Return This object's typeID. [詳解]
 
bool in_range (double u, double v) const
 Test if input parameter value is inside parameter range of the surface. [詳解]
 
bool in_range (const MGPosition &uv) const
 
MGCSisect_list isect (const MGCurve &curve) const
 
MGCSisect_list isect (const MGStraight &sl) const
 
MGCSisect_list isect (const MGRLBRep &curve) const
 
MGCSisect_list isect (const MGEllipse &curve) const
 
MGCSisect_list isect (const MGLBRep &curve) const
 
MGCSisect_list isect (const MGSurfCurve &curve) const
 
MGCSisect_list isect (const MGBSumCurve &curve) const
 
MGSSisect_list isect (const MGSurface &srf2) const
 
MGSSisect_list isect (const MGPlane &srf2) const
 
MGSSisect_list isect (const MGSphere &srf2) const
 
MGSSisect_list isect (const MGCylinder &srf2) const
 
MGSSisect_list isect (const MGSBRep &srf2) const
 
MGSSisect_list isect (const MGRSBRep &srf2) const
 
MGSSisect_list isect (const MGBSumSurf &srf2) const
 
double & knot_u (int i)
 Access to i-th element of u knot //(right-hand side version) [詳解]
 
double knot_u (int i) const
 
double & knot_v (int i)
 
double knot_v (int i) const
 
const double * knot_data_u () const
 Returns a pointer to the u knot vector data. [詳解]
 
const double * knot_data_v () const
 Returns a pointer to the v knot vector data. [詳解]
 
const MGKnotVectorknot_vector_u () const
 Returns the u knot vector. [詳解]
 
MGKnotVectorknot_vector_u ()
 
const MGKnotVectorknot_vector_v () const
 Returns the v knot vector. [詳解]
 
MGKnotVectorknot_vector_v ()
 
bool less_than (int i, const MGPosition &uv1, const MGPosition &uv2) const
 
MGSBReplimit (const MGBox &uvrange)
 
MGSBRepmove (int move_kind_u, int move_kind_v, const MGPosition &move_point_param, const MGPosition &to_point, const MGPosition fix_point[2])
 
void negate (int is_u)
 Change direction of the surface. [詳解]
 
MGPosition negate_param (const MGPosition &uv, int is_u=1) const
 
int order_u () const
 Returns the B-Rep order(u-direction). [詳解]
 
int order_v () const
 Returns the B-Rep order(v-direction). [詳解]
 
MGPosition param_e () const
 Return ending parameter value. [詳解]
 
double param_e_u () const
 Return ending parameter value. [詳解]
 
double param_e_v () const
 
MGCurveparameter_curve (int is_u, double x) const
 
MGLBRep parameter_line (int is_u, double x, int nderiv=0) const
 Compute parameter line. [詳解]
 
MGPosition param_s () const
 Return starting parameter value. [詳解]
 
double param_s_u () const
 Return starting parameter value. [詳解]
 
double param_s_v () const
 
MGSBReppart (const MGBox &uvbx, int multiple=0) const
 
MGLBRep perimeter (int i) const
 
int perimeter_num () const
 Return how many perimeters this surface has. [詳解]
 
int planar (MGPlane &plane, double &deviation) const
 
int planar (const MGBox &uvbox, double tol, int *divideU=0) const
 
std::auto_ptr< MGSBReprebuild (int how_rebuild=1, int parameter_normalization=2, double tol=-1., int *order=0) const
 
int reduce (int is_u, int ndec)
 
MGSBReprefine (const MGKnotVector &uknot, const MGKnotVector &vknot)
 
void remove_knot ()
 
int remove_knot_one (double line0, int id, double &tol, bool u_knot=true)
 
int sdim () const
 Returns the space dimension. [詳解]
 
void shrink_to_knot (const MGBox &uvbx, int multiple=0)
 
const MGSPointSeqsurface_bcoef () const
 Returns the B-coef's. [詳解]
 
MGSPointSeqsurface_bcoef ()
 Returns the B-coef's. [詳解]
 
MGSURFACE_TYPE type () const
 
MGSurfaceunlimit ()
 
int out_to_IGES (MGIgesOfstream &igesfile, int SubordinateEntitySwitch=0) const
 IGES output function. PD128(NURBS Surface). [詳解]
 
std::ostream & out (std::ostream &) const
 Debug Function. [詳解]
 
std::string whoami () const
 
- 基底クラス MGSurface に属する継承公開メンバ関数
 MGSurface (void)
 Void Constructor. 初期化なしでオブジェクトを作成する。 [詳解]
 
 MGSurface (const MGSurface &srf)
 Copy Constructor. [詳解]
 
virtual ~MGSurface ()
 
virtual MGSurfaceoperator= (const MGSurface &gel2)
 
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(). [詳解]
 
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 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. [詳解]
 
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. [詳解]
 
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
 
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. [詳解]
 
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 (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. [詳解]
 
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). [詳解]
 
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
 
MGSSisect_list isect (const MGFace &f) const
 
MGSSisect_list isect (const MGFSurface &fsurf) const
 
MGHHisect_vector isect (const MGShell &shl) const
 Intersection. [詳解]
 
int manifold_dimension () const
 Get manifold dimension. [詳解]
 
virtual void negate ()
 Negate direction of surface. [詳解]
 
virtual void negateFS ()
 Negate the FSurface. [詳解]
 
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. [詳解]
 
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. [詳解]
 
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
 
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_span () const
 Compute square of parameter span length from (u.min, v.min) to (u.max, v.max). [詳解]
 
virtual MGCurveperimeter_curve (int i) const
 Retrieve perimeter i of this surface. [詳解]
 
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 MGSurfacerotate_self (const MGVector &vec, double angle, const MGPosition &origin=mgORIGIN)
 Rotate the surface around the straight line. [詳解]
 
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. [詳解]
 
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. [詳解]
 
- 基底クラス 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 bool operator> (const MGGel &gel2) const
 
virtual MGAttribattrib ()
 Return MGAttrib pointer if this MGGel is an MGAttrib, else return null. [詳解]
 
virtual const MGAttribattrib () const
 
virtual MGGroupgroup ()
 Return MGGroup pointer if this MGGel is an MGGroup, else return null. [詳解]
 
virtual const MGGroupgroup () const
 
virtual 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_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
 

限定公開メンバ関数

MGCSisect_list isectSl (const MGStraight &sl, const MGBox &uvbox=mgNULL_BOX) const
 Intersection of Surface and a straight line. [詳解]
 
void ReadMembers (MGIfstream &buf)
 
void WriteMembers (MGOfstream &buf) const
 
- 基底クラス MGSurface に属する継承限定公開メンバ関数
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 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 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. [詳解]
 
- 基底クラス 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 MGSBRep operator* (double scale, const MGSBRep &sb)
 
MG_DLL_DECLR friend void build_SBRep_1direction (MGSBRepEndC &endc, const MGNDDArray &utaui, const MGNDDArray &vtaui, const MGSPointSeq &value, const MGKnotVector &tu, const MGKnotVector &tv, MGSBRep &brep, int &error)
 

その他の継承メンバ

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

詳解

Defines Surface B-Representation, that is , B-Spline surface.

MGSBRep is a tensor product surface representation of MGLBRep. It has: (1) Surface control polygon MGSPointSeq surface_bcoef. (2) U direciton knot vector MGKnotVector uknot. (3) V direction knot vector MGKnotVector vknot.

構築子と解体子

MGSBRep::MGSBRep ( )

Default constructor(dummy surface brep).

MGSBRep::MGSBRep ( const MGSPointSeq vertex,
const MGKnotVector tu,
const MGKnotVector tv 
)

Construct Surface B-rep by providing raw data of Surface B-Rep. ***** This is the fundamental constructor.*****

引数
vertexControl Vertex of Surface B-Rep
tuknot vector of u-direction
tvknot vector of v-direction
MGSBRep::MGSBRep ( const MGSPointSeq points,
int  orderu = 4,
int  orderv = 4 
)
explicit

Construct Surface B-rep by intepolation from Point data only. When points are illegal(e.g. same points are input), order will be 2 and this surface B-coefficients are input points.

引数
pointsPoint seq data
orderuOrder of u-direction
ordervOrder of v-direction
MGSBRep::MGSBRep ( const MGNDDArray utau,
const MGNDDArray vtau,
const MGSPointSeq points,
const MGKnotVector tu,
const MGKnotVector tv 
)

Construct Surface B-rep of any order number by interpolation from data point, point data , and knot vector. When illegal data is input(illegal knot vector tu for uta), order will be 2 and this surface B-coefficients are input points.

引数
utauData point abscissa of u-direction
vtauData point abscissa of v-direction
pointsPoint seq data
tuknot vector of u-direction
tvknot vector of v-direction
MGSBRep::MGSBRep ( const MGSBRepTP tp,
const MGNDDArray utau,
const MGNDDArray vtau,
const MGVector  uvec[4],
const MGVector  vvec[4],
const MGSPointSeq points 
)

Construct Surface B-rep of order 4 by interpolation from Point data and tangent plane end condition. Inner point must be homogeneous, should not include first derivative inf.

引数
tpTangent Planeend condition of Tangent Plane
utauData point of u-direction
vtauData point of v-direction
uvecTangent vector of u-direction for v=min and v=max boundary line. uvec[0], uvec[1]: start and end of v=min line uvec[2], uvec[3]: end and start of v=max line.
vvecTangent vector of v-direction for u=min and u=max boundary line. vvec[0]:start of u=min line, vvec[1]:start of u=max line vvec[2]: end of u=max line, vvec[3]: end of u=min. It is allowed that uvec[i] or vvec[j] is null vector(i.e. sdim==0). When this is the case, it means no inf provided about the tangent vector.
pointsData point ordinate
MGSBRep::MGSBRep ( MGSBRepEndC endc,
const MGNDDArray utaui,
const MGNDDArray vtaui,
const MGSPointSeq value 
)

Construct Surface B-rep of order 4 by interpolation from Point data and end condition. Inner point may include first derivative inf if the corresponding data points are multiple. For perimeters, utaui and vtaui do not have multiplicity. However, if utaui or vtaui has multiplicity at inner point, this means 1st derivative data is provided for the associated value, i.e.: If utaui has multiplicity 2 as utaui(i)=utaui(i+1), value(i,.,.) is 1st derivative along u direction at utaui(i) and value(i+1,.,.) is positional data at utaui(i)(=utaui(i+1)). If utaui has multiplicity 3 as utaui(i)=utaui(i+1)=utaui(i+2), value(i,.,.) is 1st derivative along u direction at utaui(i)- , value(i+1,.,.) is positional data at utaui(i)(=utaui(i+1)), value(i+2,.,.) is 1st derivative along u direction at utaui(i)+. Maximum multiplicity allowed is 3. About vtaui, the same.

引数
endcDerivative Inf.end condition
utauiData point of u-direction of value
vtauiData point of v-direction of value
valueData point ordinate
MGSBRep::MGSBRep ( MGSBRepEndC endc,
int  orderu,
int  orderv,
const MGNDDArray utaui,
const MGNDDArray vtaui,
const MGSPointSeq value 
)

Construct Surface B-rep of specified order by interpolation from Point data and end condition. Inner points must not include first derivative inf and the data points must not be multiple if the order is not 4.

引数
endcDerivative Inf.end condition
orderuorder along u direction,
ordervorder along v direction, must be greater than or equal to 4.
utauiData point of u-direction of value
vtauiData point of v-direction of value
valueData point ordinate
MGSBRep::MGSBRep ( MGSBRepEndC endc,
const MGNDDArray utaui,
const MGNDDArray vtaui,
const MGSPointSeq value,
const MGKnotVector tu,
const MGKnotVector tv 
)

Construct Surface B-rep by interpolation from Point data and end condition with knot vector. This is a general version of: MGSBRep( ///Derivative Inf. MGSBRepEndC& endc, ///end condition const MGNDDArray& utaui, ///Data point of u-direction of value const MGNDDArray& vtaui, ///Data point of v-direction of value const MGSPointSeq& value ///Data point ordinate ); The difference is to provide or not knot vector tu and tv. (utaui(i),vtaui(j),value(i,j)) is one pair of data, for 0<=i<=utaui.lenght(), 0<=j<=vtaui.lenghth(). Knot vector tu and tv must satisfy Schoenberg-Whitney consdition, i.e. t(i)<tau(i)<t(i+k) for all i, where k=order. (t=tu, tau=utaui+multiplicity included at both ends according to endc, for udirection. About v, the same)

引数
endcend condition
utauiData point of u-direction of value
vtauiData point of v-direction of value
valueData point ordinate
tuknot vector of u-direction
tvknot vector of v-direction
MGSBRep::MGSBRep ( const MGLBRep lbrep,
const MGUnit_vector uvec,
double  start_dist,
double  end_dist 
)

Construct Surface B-rep by sweep B-Rep and sweep length. The sweep surface is defined as: lbrep(say c(t)) is the rail and the straight line segments from C(t)+start_dist*uvec to C(t)+end_dist*uvec are the generatrix.

引数
lbrepSweep crv.
uvecSweep Direction.
start_distdistance to start edge.
end_distdistance to end edge.
MGSBRep::MGSBRep ( const MGNDDArray utau,
const MGNDDArray vtau,
const MGSPointSeq value,
int  orderu = 4,
int  orderv = 4 
)

Construct Surface B-rep of specified order by interpolation from Point data. This is an easy-to-version.

引数
utauData point of u-direction of value
vtauData point of v-direction of value
valueData point ordinate
orderuorder along u direction.
ordervalong v direction.
MGSBRep::MGSBRep ( const MGStraight st,
const MGUnit_vector uvec,
double  start_dist,
double  end_dist 
)

Construct Surface B-rep by sweep Straight and sweep length. The sweep surface is defined as: st(say c(t)) is the rail and the straight line segments from C(t)+start_dist*uvec to C(t)+end_dist*uvec are the generatrix.

引数
stSweep crv.
uvecSweep Direction.
start_distdistance to start edge.
end_distdistance to end edge.
MGSBRep::MGSBRep ( const MGNDDArray tau,
const std::vector< MGLBRep * > &  lines,
const MGLBRep deriS,
const MGLBRep deriE 
)

Construct Surface B-rep from lines and derivatives. Interpolation will be done only along one parameter direction, along v. tau provides data point sequence along v direction of surface (u,v) parameter configuration. deriS and deriE are used to provide the 1st derivative B-representation along the perimeter 0 and 2, may be null if 1st derivative B-rep is not provided. If derivative B-rep is provided, deriS and deriE must have the same knot configuration as the one of lines which makes u kont configuration of this surface (u,v) parameter. tau[i] is the parameter for lines[i].

MGSBRep::MGSBRep ( const MGSBRep old_brep,
const MGKnotVector ut,
const MGKnotVector vt,
int &  error 
)

Approximate an original B-Rep by a new knot configuration. The new knot config must be inside the range of the original B-Rep parameter. However new knots may be coarse or fine. Error indicates the contructor is successful(=0) or not(!=0). When error!=0, the original old_brep is copied to this.

引数
old_brepOriginal B-Rep.
utknot vector of u-direction
vtknot vector of v-direction
errorError flag. Error is detected only when ut(=2) or vt(=112) is illegal.
MGSBRep::MGSBRep ( const MGNDDArray utau,
const MGNDDArray vtau,
const MGSPointSeq points,
const MGKnotVector tu,
const MGKnotVector tv,
const MGSPointSeq weight 
)

Obtain Surface B-Rep by Least square approximation.

引数
utauData point abscissa of u-direction
vtauData point abscissa of v-direction
pointsPoint seq data
tuknot vector of u-direction
tvknot vector of v-direction
weightWeight for each point(space dimension 1). weight(i,j,0) is the weight for points(i,j,.). When weight(i,j,0) is large compared with other weights, the deviation from the surface at (utau(i),vtau(j)) is small.
MGSBRep::MGSBRep ( const MGNDDArray utau,
const MGNDDArray vtau,
const MGSPointSeq points,
const MGSPointSeq dp,
double  deviation 
)

Obtain Surface B-Rep by Shoenberg and Reinch's smoothing function If dp(i,j,0) becomes bigger, deviation at (utau(i),vtau(j)) becomes bigger.

引数
utauData point abscissa of u-direction
vtauData point abscissa of v-direction
pointsPoint seq data
dpError estimate for each point(space dimension 1).
deviationMean deviation of each point.
MGSBRep::MGSBRep ( const MGCurve edge_crvl[4],
const MGCurve blendCrvU,
const MGCurve blendCrvV,
const MGSBRepTP tp,
int &  error 
)

4本の境界線、ブレンド関数、接続面を与えて面を生成する。 境界線はvmin,umax,vmax,uminの順で、vmin,vmaxの向きをuminからumaxの方向に umin,umaxの向きをvminからvmaxの方向になっているものとする。境界線のノットベクトル をあわせるときの誤差はline_zero()を使用している。ブレンド曲線はパラメータ範囲0,1 で値域も0,1である。接続面(MGSBRepTP)のパラメータ範囲は各境界線と同じとする。 エラーコード: 0: 正常終了 -1: 境界線がC1連続でなかった -2: 接続面のパラメータ範囲が境界線と違った -3: 境界線のノットベクトルをあわせられなかった -4: 接続面のパラメータ範囲を変更できなかった -5: 点列が求まらなかった -6: 端末条件が求まらなかった -7: 面が生成できなかった

引数
edge_crvl境界線リスト(vmin,umax,vmax,uminの順,辺番号0,1,2,3の順)
blendCrvU空間次元1のu方向のブレンド曲線(パラメータ、値域ともに0,1)
blendCrvV空間次元1のv方向のブレンド曲線(パラメータ、値域ともに0,1)
tp接続面(パラメータ範囲は境界線と同じ)
errorエラーコード
MGSBRep::MGSBRep ( MGPvector< MGLBRep > &  edges,
int &  error,
const MGCurve blendCrvU = 0,
const MGCurve blendCrvV = 0 
)

Easy to use version of the above constructor. When blendCCrvU,V were null, straight line from 0. to 1. will be used.

引数
edges境界線リスト(vmin,umax,vmax,uminの順,辺番号0,1,2,3の順)
errorエラーコードが出力される(0:正常終了)
blendCrvU空間次元1のu方向のブレンド曲線(パラメータ、値域ともに0,1)
blendCrvV空間次元1のv方向のブレンド曲線(パラメータ、値域ともに0,1)
MGSBRep::MGSBRep ( const MGCurve edge_crvl[4],
const MGSBRepTP tp,
int &  error,
const double *  alpha = 0 
)
引数
edge_crvl境界線リスト(vmin,umax,vmax,uminの順,辺番号0,1,2,3の順)
tp接続面(パラメータ範囲は境界線と同じ)
errorエラーコード
alphaderivative magnitude coefficients for perimeter i in alpha[i]. =1. is normal, if<1., curvature will be made large, and if>1. curvature will be made small. If alpha=null, all of the coefs are assumed to be 1.
MGSBRep::MGSBRep ( bool  along_u,
const MGPvector< MGLBRep > &  perimeters 
)

Generalized ruled surface construction. Build a surface by ruled surface method. That is, costruct a surface by sliding the blending curve(a tie curve of the rails) of perimeters 3 and 1 along perimeter 0 and 2(0 and 2 make the rail). Or by sliding the blending curve of perimeter 0 and 2 along perimeter 3 and 1(3 and 1 make the rail).

引数
along_uindicates which perimeters make a rail. if true, perimeter 0 and 2, if false, perimeter 3 and 1 make rail.
perimeters境界線リスト(vmin,umax,vmax,uminの順,辺番号0,1,2,3の順) perimeters must be the same knot configuration along u(perimeter 0 and 2) and along v(perimeter 3 and1).
MGSBRep::MGSBRep ( const MGSBRep old_brep,
const MGKnotArray uknots,
const MGKnotArray vknots 
)

Gets new B-Rep by adding knots to an original B-Rep.

引数
old_brepOriginal B-Rep.
uknotsKnots to add for u-direction
vknotsKnots to add for v-direction.
MGSBRep::MGSBRep ( const MGSBRep brep1,
int  which1,
int  continuity,
const MGSBRep brep2,
int  which2,
int  opposite 
)

Gets new B-Rep by connecting two B-Rep to one. The parameter (which1,continuity,which2,opposite) can be obtained by public function continuity.

引数
brep1B-Rep 1.
which1which perimeter of brep1.
continuitycontinuity. Must >=0.
brep2B-Rep 2.
which2which perimeter of brep2.
oppositeInput if parameter direction of which2 is the same as which1 along common edge. If opposite is true, the direction is opposite.
MGSBRep::MGSBRep ( const MGBox uvrange,
const MGSBRep old_brep,
int  multiple = 0 
)

Obtain partial Surface B-Rep restricted by sub interval of u and v parameter range. If multiple==true(!=0), knot_u(i)=t1 and knot_u(n+i)=t2 for i=0,..., k-1 will be guaranteed. Here, n=bdim_u(), k=order_u(), t1=uvrange(0).low_point(), and t2=uvrange(0).high_point(). About knot_v(j), the same. Both u-range and v-range must be inside the range of old_brep. Gets new B-Rep by computing a part of the original. New one is exactly the same as the original except that it is partial.

引数
uvrangeu and v parameter range.
old_brepOriginal B-Rep.
multipleIndicates if start and end knot multiplicities are necessary. =0:unnecessary, !=0:necessary.
MGSBRep::MGSBRep ( int  dim,
const MGSBRep sbrep,
int  start1 = 0,
int  start2 = 0 
)

Construct a Surface B-Rep by changing space dimension and ordering of coordinates.

引数
dimNew space dimension.
sbrepOriginal Surface B-rep.
start1Destination order of new Surface.
start2Source order of original Surface.
MGSBRep::MGSBRep ( const MGPlane plane,
const MGBox prange 
)

Construct a Surface B-Rep (order = 2 ) from Plane and Parameter ranges.

引数
planeOriginal Plane
prangeparameter range of new Surface.
MGSBRep::MGSBRep ( const std::vector< const MGCurve * > &  curves,
bool  direction_adjustment = true 
)

リブ曲線列から面を作成する 作成する面のノットベクトルはリブ曲線の向きをu,リブ列方向をvとする This constructor only generates MGSBRep even if curves are MGRLBRep of the same knot configuration. To avoid this, use createSurfaceFromRibs() that generates MGRSBRep when curves are MGRLBRep of the same knot configuration. Let v0=start parameter value, v1=terminate parameter value along v, then v=v0 const parameter line is curves[0], and v=v1 const parameter line is curves[n-1], where n=curves.size(). n must be greater or equal to 2. When n==2, the surface is a ruled surface(that is, this->order_u() is 2). When direction_adjustment=true, curves[i] directions are adjusted to line up to the same direciton as the curves[i-1]'s. When direction_adjustment=false, no curves of curves[i] are negated and the directions of curves[i] are the direcitons of ribs.

MGSBRep::MGSBRep ( const MGPvector< MGCurve > &  curves,
bool  direction_adjustment = true 
)

関数詳解

int MGSBRep::bdim_u ( ) const
inlinevirtual

Returns B-Rep Dimension of u.

自身の曲面の全体の面積を返却する。 Compute total surface area. double area () const; 与えられたパラメータ範囲の曲面の面積を返す。 Compute surface area limitted by parameter range box. double area(const MGBox& box) const;

MGSurfaceを再実装しています。

int MGSBRep::bdim_v ( ) const
inlinevirtual

Returns B-Rep Dimension of v.

MGSurfaceを再実装しています。

MGBox MGSBRep::box_limitted ( const MGBox uvrange) const
virtual

Compute minimum box that includes the linitted parameter range surface.

MGSurfaceを実装しています。

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

Changing this object's space dimension.

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

MGSurfaceを実装しています。

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

Change parameter range, be 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.

MGSurfaceを実装しています。

MGSBRep* MGSBRep::clone ( ) const
virtual

Construct new surface object by copying to newed area. User must delete this copied object by "delete".

MGSurfaceを実装しています。

double& MGSBRep::coef ( int  i,
int  j,
int  k 
)
inline

Access to (i,j)th element of coef(left-hand side version).

double MGSBRep::coef ( int  i,
int  j,
int  k 
) const
inline

Access to (i,j)th element of coef(right-hand side version).

MGVector MGSBRep::coef ( int  i,
int  j 
) const
inline

Extract (i,j,k) elements for 0<=k<sdim() as a vector.

const double* MGSBRep::coef_data ( int  i = 0,
int  j = 0,
int  k = 0 
) const
inline

Returns a pointer to the surface b-coef data.

int MGSBRep::continuity ( const MGSBRep brep2,
int &  which1,
int &  which2,
int &  opposite,
double &  ratio 
) const

Compute continuity with brep2. Function's return value is: -1: G(-1) continuity, i.e. two surfaces are discontinuous. 0: G0 continuity, i.e. two surfaces are connected, but tangents are discontinuous 1: G1 continuity, i.e. two surfaces are connected, and tangents are also continuous. 2: G2 continuity, i.e. two surfaces are connected, and tangents and curvatures are also continuous. Reuturn value is the continuity.

引数
brep2Input second SBRep
which1Outputs which perimeter(which1) of this is
which2connected to which(which2) of brep2. These are valid only when continuity>=0.
oppositeOutputs if parameter direction of which2 is the same as which1 along common edge. If opposite is true, the direction is opposite.
ratioRatio of 1st derivatives of the two surfaces will be returned. ratio= d2/d1, where d1=1st deriv of this and d2=of brep2
MGSBRep* MGSBRep::copy_change_dimension ( int  sdim,
int  start1 = 0,
int  start2 = 0 
) const
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.

MGSurfaceを実装しています。

void MGSBRep::display_control_polygon ( mgSysGL sgl) const
virtual

Display control polygons using mgVBO::MGDrawPointSeq(sp)

MGGelを再実装しています。

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

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

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

MGSurfaceを再実装しています。

MGVector MGSBRep::eval ( double  u,
double  v,
int  ndu = 0,
int  ndv = 0 
) const
virtual

Evaluate right continuous ndu'th and ndv'th derivative data. Function's return value is (d(ndu+ndv)f(u,v))/(du**ndu*dv**ndv). ndu=0 and ndv=0 means positional data evaluation.

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

MGSurfaceを実装しています。

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

Evaluate surface data.

引数
uvParameter value of the surface.
nduOrder of derivative along u.
ndvOrder of derivative along v.

MGFSurfaceを実装しています。

void MGSBRep::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 and 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)

MGSurfaceを再実装しています。

void MGSBRep::eval_all ( double  u,
double  v,
int  ndu,
int  ndv,
double *  deriv 
) const

Evaluate all of derivative data (d(i+j)f(u,v))/(du**i*dv**j), for 0<=i<=ndu and 0<=j<=ndv.

引数
uU Parameter value of the surface.
vV Parameter value of the surface.
nduOrder of Derivative along u.
ndvOrder of Derivative along v.
derivOutput. (d(i+j)f(u,v))/(du**i*dv**j) in deriv[r+j*dim+i*(ndv+1)*dim] for 0<=r<dim=sdim(). for 0<=i<=ndu and 0<=j<=ndv. deriv is an array of deriv[ndu+1][ndv+1][r], (d(i+j)f(u,v))/(du**i*dv**j) is returned in deriv[i][j][r].
MGSurface& MGSBRep::exchange_uv ( )
virtual

Exchange parameter u and v.

MGSurfaceを実装しています。

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

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.

MGSurfaceを再実装しています。

long MGSBRep::identify_type ( ) const
virtual

Return This object's typeID.

MGSurfaceを実装しています。

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

Test if input parameter value is inside parameter range of the surface.

MGSurfaceを実装しています。

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

MGFSurfaceを実装しています。

MGCSisect_list MGSBRep::isect ( const MGCurve curve) const
virtual

Surface と Curve の交点を求める。 Compute curve and surface intersection point(s)

MGSurfaceを実装しています。

MGCSisect_list MGSBRep::isect ( const MGStraight sl) const
inline
MGCSisect_list MGSBRep::isect ( const MGRLBRep curve) const
MGCSisect_list MGSBRep::isect ( const MGEllipse curve) const
MGCSisect_list MGSBRep::isect ( const MGLBRep curve) const
MGCSisect_list MGSBRep::isect ( const MGSurfCurve curve) const
MGCSisect_list MGSBRep::isect ( const MGBSumCurve curve) const
MGSSisect_list MGSBRep::isect ( const MGSurface srf2) const
virtual

Surface と Surface の交線を求める。 Surface and Surface intersection. Compute intersectio line(s) of two surface. Restriction:Currently if two surface do not have intersection on any of 4 perimeters, this function does not compute surface to surface intersection.

MGSurfaceを実装しています。

MGSSisect_list MGSBRep::isect ( const MGPlane srf2) const
virtual

MGSurfaceを実装しています。

MGSSisect_list MGSBRep::isect ( const MGSphere srf2) const
virtual

MGSurfaceを実装しています。

MGSSisect_list MGSBRep::isect ( const MGCylinder srf2) const
virtual

MGSurfaceを実装しています。

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

MGSurfaceを実装しています。

MGSSisect_list MGSBRep::isect ( const MGRSBRep srf2) const
virtual

MGSurfaceを実装しています。

MGSSisect_list MGSBRep::isect ( const MGBSumSurf srf2) const
virtual

MGSurfaceを実装しています。

MGCSisect_list MGSBRep::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.

MGSurfaceを再実装しています。

const double* MGSBRep::knot_data_u ( ) const
inline

Returns a pointer to the u knot vector data.

const double* MGSBRep::knot_data_v ( ) const
inline

Returns a pointer to the v knot vector data.

double& MGSBRep::knot_u ( int  i)
inline

Access to i-th element of u knot //(right-hand side version)

double MGSBRep::knot_u ( int  i) const
inlinevirtual

Access to i-th element of u knot ( left-hand side version)

MGSurfaceを再実装しています。

double& MGSBRep::knot_v ( int  i)
inline

Access to i-th element of v knot ( left-hand side version)

double MGSBRep::knot_v ( int  i) const
inlinevirtual

Access to i-th element of v knot (right hand side version)

MGSurfaceを再実装しています。

const MGKnotVector& MGSBRep::knot_vector_u ( ) const
inlinevirtual

Returns the u knot vector.

MGSurfaceを実装しています。

MGKnotVector& MGSBRep::knot_vector_u ( )
inlinevirtual

MGSurfaceを実装しています。

const MGKnotVector& MGSBRep::knot_vector_v ( ) const
inlinevirtual

Returns the v knot vector.

MGSurfaceを実装しています。

MGKnotVector& MGSBRep::knot_vector_v ( )
inlinevirtual

MGSurfaceを実装しています。

bool MGSBRep::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 prjected to i-th perimeter of the surface.

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

MGSurfaceを再実装しています。

MGSBRep& MGSBRep::limit ( const MGBox uvrange)

自身に指定したパラメータ範囲のlimitをつける。 Update this by limitting the parameter range. uvrange is parameter value range of (umin, vmin) to (umax, vmax).

MGSBRep& MGSBRep::move ( int  move_kind_u,
int  move_kind_v,
const MGPosition move_point_param,
const MGPosition to_point,
const MGPosition  fix_point[2] 
)

Modify the original Surface by moving move_point to to_point. fix_point can be applied according to move_kind. move_kind_u and _v mean as below for u and v direction: move_kind=1: Start and end perimeter of the surface are fixed. The surface is modified linearly so that move_point_param line is the maximum move. =2: The parameter line fix_point[0] is fixed and the other end of the move_point_param side is moved. In this case, maximum move is the end perimeter of the surface. =3: fix_point[0]<move_point_param<fix_point[1], and two parameter line fix_point[.] are fixed. The surface is modified linearly so that move_point_param point is the maximum move. otherwise: Two fix parameter line fix_point[.] are computed so that the modify range is the minimum. Other move is same as move_kind=3. Restriction: For the case move_kind=3, actual fix parameter line is wider than specified range. The range is the smallest one possible including fix_point[].

引数
move_kind_uIndicates how to move Surface for u direction.
move_kind_vIndicates how to move Surface for v direction.
move_point_paramindicate object point to move by the (u,v) parameter value.
to_pointdestination point(x,y,z coordinates) of the abve source point.
fix_point(u,v) parameter value pair.
void MGSBRep::negate ( int  is_u)
virtual

Change direction of the surface.

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

MGSurfaceを実装しています。

MGPosition MGSBRep::negate_param ( const MGPosition uv,
int  is_u = 1 
) const

Obtain parameter value if this surface is negated by "negate()". Negate along u-direction if is_u is ture, else along v-direction.

bool MGSBRep::operator!= ( const MGGel gel2) const
inlinevirtual

MGGelを再実装しています。

bool MGSBRep::operator!= ( const MGSBRep gel2) const
inline
MGSBRep MGSBRep::operator* ( double  ) const

与えられたスケーリングで曲面の変換を行いオブジェクトを生成する。 Scaling.

MGSBRep MGSBRep::operator* ( const MGMatrix ) const

与えられた変換で曲面の変換を行いオブジェクトを生成する。 Matrix transformation.

MGSBRep MGSBRep::operator* ( const MGTransf ) const

与えられた変換で曲面のトランスフォームを行いオブジェクトを生成する。 General transformation.

MGSBRep& MGSBRep::operator*= ( double  scale)
virtual

MGSurfaceを実装しています。

MGSBRep& MGSBRep::operator*= ( const MGMatrix mat)
virtual

MGSurfaceを実装しています。

MGSBRep& MGSBRep::operator*= ( const MGTransf tr)
virtual

MGSurfaceを実装しています。

MGSBRep MGSBRep::operator+ ( const MGVector ) const

曲面の平行移動を行いオブジェクトを生成する。 Translation.

MGSBRep& MGSBRep::operator+= ( const MGVector v)
virtual

Object transformation.

MGSurfaceを実装しています。

MGSBRep MGSBRep::operator- ( const MGVector ) const

曲面の逆方向に平行移動を行いオブジェクトを生成する。 Translation.

MGSBRep& MGSBRep::operator-= ( const MGVector v)
virtual

MGSurfaceを実装しています。

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

MGSurfaceを実装しています。

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

Destructor ~MGSBRep(); ///We can use default destructor. Assignment. When the leaf object of this and srf2 are not equal, this assignment does nothing.

MGGelを再実装しています。

MGSBRep& MGSBRep::operator= ( const MGSBRep gel2)
bool MGSBRep::operator== ( const MGSBRep gel2) const

Comparison of two objects.

bool MGSBRep::operator== ( const MGGel gel2) const
virtual

comparison

MGSurfaceを実装しています。

bool MGSBRep::operator== ( const MGRSBRep gel2) const
int MGSBRep::order_u ( ) const
inlinevirtual

Returns the B-Rep order(u-direction).

MGSurfaceを再実装しています。

int MGSBRep::order_v ( ) const
inlinevirtual

Returns the B-Rep order(v-direction).

MGSurfaceを再実装しています。

std::ostream& MGSBRep::out ( std::ostream &  ) const
virtual

Debug Function.

MGSurfaceを再実装しています。

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

IGES output function. PD128(NURBS Surface).

MGGelを再実装しています。

MGPosition MGSBRep::param_e ( ) const

Return ending parameter value.

double MGSBRep::param_e_u ( ) const
virtual

Return ending parameter value.

MGSurfaceを実装しています。

double MGSBRep::param_e_v ( ) const
virtual

MGSurfaceを実装しています。

MGPosition MGSBRep::param_s ( ) const

Return starting parameter value.

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

double MGSBRep::param_s_u ( ) const
virtual

Return starting parameter value.

MGSurfaceを実装しています。

double MGSBRep::param_s_v ( ) const
virtual

MGSurfaceを実装しています。

MGCurve* MGSBRep::parameter_curve ( int  is_u,
double  x 
) const
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.

MGSurfaceを実装しています。

MGLBRep MGSBRep::parameter_line ( int  is_u,
double  x,
int  nderiv = 0 
) const

Compute parameter line.

引数
is_uIndicates x is u-value if is_u is true.
xParameter value. The value is u or v according to is_u.
nderivOrder of derivative.
MGSBRep* MGSBRep::part ( const MGBox uvbx,
int  multiple = 0 
) const
virtual

Compute part of the surface limitted by the parameter range uvbx. 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. Retured is newed object, must be deleted.

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

MGSurfaceを実装しています。

MGLBRep MGSBRep::perimeter ( int  i) const

Compute perimeter line B-Rep. i is perimeter number: =0: v=min line, =1: u=max line, =2: v=max line, =3: u=min line perimeter_curve returs newed object, must be deleted.

int MGSBRep::perimeter_num ( ) const
inlinevirtual

Return how many perimeters this surface has.

MGSurfaceを実装しています。

int MGSBRep::planar ( MGPlane plane,
double &  deviation 
) const

Test if the surface is planar or not. Returned is 0(false) if this is not planar, 1(true) if this is planar.

引数
planePlane that might be closest to this. Plane is always output even if not planar.
deviationmaximum deviation of this from the output plane.
int MGSBRep::planar ( const MGBox uvbox,
double  tol,
int *  divideU = 0 
) const

Test if part of the surface is planar or not within the tolerance tol. The part of the surface is input by the surface parameter range uvbox. Returned is 0(false) if this is not planar, 1(true) if planar.

引数
uvboxThis surface parameter range.
tolmaximum deviation allowed to regard the sub surface as a plane.
divideUDirection to subdivide will be output, if this was not planar, =1: u direction, =0: v direction.
void MGSBRep::ReadMembers ( MGIfstream buf)
protectedvirtual

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

MGSurfaceを再実装しています。

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

Rebuild this MGSBRep. Rebuild means: 1) Change the parameterization. 2) Remove the redundant surface B-coefficients within the tolerance, which is performed by remove_knots.

引数
how_rebuildintdicates how rebuild be done. =0: no approximation(only parameter change) !=0: approximated by non-rational spline(MGSBRep) with new knot configuration.
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. When tol<=0., MGTolerance::line_zero() will be employed.
orderorder of the new MGSBRep, >=4 is recomended. order[0]:u-order, [1]:v-order. When order=0 is input, the original order is unchanged.
int MGSBRep::reduce ( int  is_u,
int  ndec 
)

Change the B-Rep by decreasing B-Rep dimension by ndec. This is an approximation of the origimal B-Rep. Return value is error flag.

引数
is_uif true, reduce b-rep dimension of u-direction.
ndecNumber of B-rep dimension to decrease
MGSBRep& MGSBRep::refine ( const MGKnotVector uknot,
const MGKnotVector vknot 
)

Change an original B-Rep to new one with subdivided knot configuration. Knots t must be subdivided knots.

引数
uknotnew knot of u-direction
vknotnew knot of v-direction
void MGSBRep::remove_knot ( )
virtual

ノット削除関数 トレランスはline_zeroを使用する。元のノットが細かいものほど削除しやすい removal knot. line_zero tolerance is used.

MGSurfaceを再実装しています。

int MGSBRep::remove_knot_one ( double  line0,
int  id,
double &  tol,
bool  u_knot = true 
)

uノットを一つ削除する 関数の戻り値は削除したノットの数

引数
line0Tolerance allowed for the knot removal. When line0<=0., removal will be done uncoditionally.
id削除しようとするノットの番号
tol削除後の誤差が出力される
u_knot削除対象が(u,v)のいずれのknot vectorかを入力する =trueのとき、u-knot_vectorを削除
int MGSBRep::sdim ( ) const
inlinevirtual

Returns the space dimension.

MGSurfaceを実装しています。

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

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 range.
multipleIndicates if start and end knot multiplicities are necessary. =0:unnecessary, !=0:necessary.

MGSurfaceを再実装しています。

const MGSPointSeq& MGSBRep::surface_bcoef ( ) const
inline

Returns the B-coef's.

MGSPointSeq& MGSBRep::surface_bcoef ( )
inline

Returns the B-coef's.

MGSURFACE_TYPE MGSBRep::type ( ) const
inlinevirtual

Compute surface integral of the 1st two coordinates. (面積分)を求める。 This integral can be used to compute volume sorounded by the surface. double surface_integral(const MGBox&) const; 曲面のタイプをを返す。 Return the surface type.

MGSurfaceを実装しています。

MGSurface& MGSBRep::unlimit ( )
inline

limitをはずす。 Unlimit the parameter range. Return the same.

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

MGSurfaceを再実装しています。

void MGSBRep::WriteMembers ( MGOfstream buf) const
protectedvirtual

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

MGSurfaceを再実装しています。

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

MG_DLL_DECLR friend void build_SBRep_1direction ( MGSBRepEndC endc,
const MGNDDArray utaui,
const MGNDDArray vtaui,
const MGSPointSeq value,
const MGKnotVector tu,
const MGKnotVector tv,
MGSBRep brep,
int &  error 
)
friend

build_SBRep_1direction constructs MGSBRep brep, by interpolating only u-direction. Input (utaui, tu) will make brep's v direction parameter, and (vtaui, tv) will make udirection parameter. That is, u and v will be exchanged for output brep.

引数
endcend condition, only perimeter 3 and 1 are used.
utauiData point of u-direction of value
vtauiData point of v-direction of value
valueData point ordinate
tuknot vector of u-direction
tvknot vector of v-direction
brepconstructed b-rep will be output
errorError flag.
MG_DLL_DECLR friend MGSBRep operator* ( double  scale,
const MGSBRep sb 
)
friend

与えられたスケーリングで曲面の変換を行いオブジェクトを生成する。 Scaling.


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