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

MGCurve is an abstract class which represents a whole curve. [詳解]

MGCurve の継承関係図
MGGeometry MGObject MGAttribedGel MGGel MGBSumCurve MGCompositeCurve MGEllipse MGLBRep MGRLBRep MGStraight MGSurfCurve MGTrimmedCurve

公開メンバ関数

 MGCurve ()
 Void constructor(初期化なしでオブジェクトを作成する。). [詳解]
 
 MGCurve (const MGCurve &curve)
 Copy constructor. [詳解]
 
virtual ~MGCurve ()
 Virtual Destructor. [詳解]
 
virtual MGCurveoperator= (const MGCurve &gel2)
 Assignment. [詳解]
 
virtual MGCurveoperator+= (const MGVector &v)=0
 Object transformation. [詳解]
 
virtual MGCurveoperator-= (const MGVector &v)=0
 
virtual MGCurveoperator*= (double scale)=0
 
virtual MGCurveoperator*= (const MGMatrix &mat)=0
 
virtual MGCurveoperator*= (const MGTransf &tr)=0
 
virtual bool operator== (const MGCompositeCurve &crv) const
 Comparison. [詳解]
 
virtual bool operator== (const MGTrimmedCurve &crv) const
 
virtual bool operator== (const MGGel &gel2) const =0
 Comparison. [詳解]
 
virtual bool operator< (const MGGel &gel2) const =0
 
virtual void approximate_as_LBRep (MGLBRep &lb, int ordr=0, int parameter_normalization=0, bool neglectMulti=false) const
 Approximate this curve as a MGLBRep. [詳解]
 
void arrow (double t, MGPosition data[4]) const
 Generate arrow data of the tangent at the parameter value t of the curve. [詳解]
 
virtual int bdim () const =0
 Returns B-Rep Dimension. [詳解]
 
virtual MGBox box_limitted (const MGInterval &) const =0
 Return minimum box that includes the curve of parameter interval. [詳解]
 
virtual MGPosition center () const
 Obtain ceter coordinate of the geometry. [詳解]
 
virtual MGPosition center_param () const
 Obtain ceter parameter value of the geometry. [詳解]
 
virtual MGCurvechange_dimension (int sdim, int start1=0, int start2=0)=0
 Changing this object's space dimension. [詳解]
 
virtual void change_range (double t1, double t2)=0
 Change parameter range. [詳解]
 
virtual MGCurveclone () const =0
 Construct new geometry object by copying to newed area. [詳解]
 
virtual double closest (const MGPosition &point) const
 Compute the closest point parameter value of this curve from a point. [詳解]
 
virtual double closest2D (const MGPosition &point) const
 Compute the nearest point from input point on this curve's (x,y) 2D part. [詳解]
 
virtual MGPosition closest (const MGCurve &curve2) const
 Compute the closest point parameter value pair of this curve and curve2. [詳解]
 
bool cn_continuity (int n) const
 Test if this curve is cn continuous. [詳解]
 
virtual int common (const MGCurve &curve2, std::vector< double > &vecComSpan, MGCCisect_list &isect) const
 Test if this has a common line part with the 2nd curve. [詳解]
 
virtual int common (const MGCurve &curve2, std::vector< double > &vecComSpan) const
 Test if this has a common line part with the 2nd curve. [詳解]
 
virtual MGCurvecoordinate_exchange (int i, int j)=0
 Exchange ordering of the coordinates. [詳解]
 
virtual MGCurvecopy_as_nurbs () const =0
 copy as a newed curve. [詳解]
 
virtual void convert_to_Bezier (MGLBRep &bezier) const
 Convert this curve to Bezier curve. [詳解]
 
virtual MGCurvecopy_change_dimension (int sdim, int start1=0, int start2=0) const =0
 Construct new curve object by changing the original object's space dimension. [詳解]
 
virtual MGCurvecopy_limitted (const MGInterval &prange) const
 Construct new curve object limitting the parameter range to prange. [詳解]
 
virtual double curvature (double) const
 Return curvature at the given point. [詳解]
 
MGCurvecurve ()
 Return curve pointer if this MGGel is an MGCurve, else return null. [詳解]
 
const MGCurvecurve () const
 
virtual double curvilinear_integral (double t1, double t2) const
 Compute curvilinear integral of the 1st two coordinates. [詳解]
 
virtual double curvilinear_integral () const
 
virtual double deriv_length () const
 Compute mean length of 1st derivative vector. [詳解]
 
MGUnit_vector direction (const MGPosition &param) const
 Compute direction unit vector of the geometry. [詳解]
 
virtual MGUnit_vector direction (double) const
 Return tangent vector at the given point. [詳解]
 
virtual void display_arrows (mgSysGL &sgl) const
 
virtual void display_break_points (mgSysGL &sgl) const
 
virtual void display_curvatures (mgSysGL &sgl, double scale, int density, bool use_radius) const
 
virtual int divide_multi (MGPvector< MGCurve > &crv_list, int multiplicity=-1) const
 Divide this curve at the designated knot multiplicity point. [詳解]
 
int divide_number () const
 get the a divide number for offset, intersection, or others. [詳解]
 
virtual void drawSE (mgVBO &vbo, double span_length, double t0, double t1) const
 Draw this curve into vbo, approximating with polyline. [詳解]
 
virtual void drawWire (mgVBO &vbo, double span_length, int line_density=1) const
 Draw this curve into vbo, approximating with polyline. [詳解]
 
virtual MGPosition end_point () const
 Return end point(終点を返却する) [詳解]
 
virtual MGVector eval (double, int nderiv=0, int left=0) const =0
 Evaluate n'th derivative data. [詳解]
 
virtual void eval_all (double, MGPosition &, MGVector &, MGVector &) const
 Compute position, 1st and 2nd derivatives. [詳解]
 
virtual MGVector eval_deriv (double) const
 Compute 1st derivative. [詳解]
 
void eval_discrete_deviation (const MGCurve &curve2, std::vector< MGPosition > &sts, int npoint=20, double tolerance=0.1) const
 Evaluate deviations of two curves(this and curve2) at npoint discrete points. [詳解]
 
virtual void eval_line (const MGNDDArray &tau, MGBPointSeq &value) const
 Evaluate line data at data point tau. [詳解]
 
virtual MGPosition eval_position (double) const
 Compute positional data. [詳解]
 
MGVector evaluate (const MGPosition &t, const int *nderiv=0) const
 Evaluate n'th derivative data. n=0 means positional data evaluation. [詳解]
 
virtual void extend (double length, bool start=false)=0
 Extrapolate this curve by an (approximate) chord length. [詳解]
 
virtual void Frenet_frame2 (double t, MGVector &V2, MGVector &T, MGVector &N, MGVector &B) const
 Compute Frenet_frame, curvature and torsion in 3D space. [詳解]
 
virtual void Frenet_frame (double t, MGUnit_vector &T, MGUnit_vector &N, MGUnit_vector &B, double &curvature, double &torsion) const
 Compute Frenet_frame, curvature and torsion in 3D space. [詳解]
 
double get_average_tangent_length () const
 Get average tangent length. [詳解]
 
virtual bool get_control_points (MGBPointSeq &cpoints) const
 Extracts control points. [詳解]
 
void getParamsC0Continuity (std::vector< double > &param) const
 
bool has_same_direction_at (double s, const MGCurve &curve2, double t) const
 Test if this curve has the same direction with curve2. [詳解]
 
virtual long identify_type () const =0
 Return This object's typeID. [詳解]
 
virtual bool in_range (double t) const
 Test if input parameter value is inside parameter range of the line. [詳解]
 
bool in_range (const MGPosition &t) const
 Test if input parameter value is inside parameter range of the line. [詳解]
 
MGCCisect_list intersect_brute_force (const MGCurve &) const
 Curve to curve intersection. [詳解]
 
virtual MGCCisect_list intersect (const MGCurve &) const
 Curve to curve intersection. [詳解]
 
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 int intersect_dnum () const =0
 Provide divide number of curve span for function intersect. [詳解]
 
MGCSisect_list intersect_with_plane (const MGPlane &surf) const
 intersections with a plane. [詳解]
 
virtual MGCCisect_list isect (const MGCurve &curve2) const =0
 Intersection of Curve and other geometry. [詳解]
 
virtual MGCCisect_list isect (const MGStraight &curve2) const =0
 
virtual MGCCisect_list isect (const MGRLBRep &curve2) const
 
virtual MGCCisect_list isect (const MGEllipse &curve2) const
 
virtual MGCCisect_list isect (const MGLBRep &curve2) const
 
virtual MGCCisect_list isect (const MGSurfCurve &curve2) const =0
 
virtual MGCCisect_list isect (const MGBSumCurve &curve2) const
 
MGCCisect_list isect (const MGTrimmedCurve &curve2) const
 
MGCCisect_list isect (const MGCompositeCurve &curve2) const
 
virtual MGCSisect_list isect (const MGSurface &surf) const =0
 
virtual MGCSisect_list isect (const MGPlane &surf) const =0
 
virtual MGCSisect_list isect (const MGSphere &surf) const =0
 
virtual MGCSisect_list isect (const MGCylinder &surf) const =0
 
virtual MGCSisect_list isect (const MGSBRep &surf) const =0
 
virtual MGCSisect_list isect (const MGRSBRep &surf) const =0
 
virtual MGCSisect_list isect (const MGBSumSurf &surf) const =0
 
MGCSisect_list isect (const MGFSurface &fs) const
 
virtual MGCSisect_list isect (const MGFace &) const
 
MGCFisect_vector isect (const MGShell &shl) const
 Intersection of a shell and a curve. [詳解]
 
MGCParam_list isect_1D (double f, int coordinate=0) const
 Compute intersection point of 1D sub curve of original curve. [詳解]
 
virtual const MGLBRepis_Bezier (int ordr=0) const
 Test if this is a Bezier Curve. [詳解]
 
bool is_closed () const
 Test if this is a closed curve. [詳解]
 
bool is_closedWithError (double err) const
 Terst if this is a closed curve, given the tolerance. [詳解]
 
virtual bool is_coplanar (const MGCurve &curve2, MGPlane &plane) const
 Test if this cure is co-planar with the 2nd curve curve2. [詳解]
 
virtual bool is_startpoint_parameter (double t) const
 Test if the input parameter t is the start point parameter or not. [詳解]
 
virtual bool is_endpoint_parameter (double t) const
 Test if the input parameter t is the start point parameter or not. [詳解]
 
bool is_perpendicular (const MGPosition &P, double t) const
 Test if the vector from P to this->eval(t) is perpendicular. [詳解]
 
virtual bool is_linear (MGStraight &straight) const
 Test if this cure is linear or not, that is, is straight or not. [詳解]
 
virtual bool is_planar (MGPlane &plane) const
 Test if this cure is planar or not. [詳解]
 
virtual double knot (int i) const =0
 Access to i-th element of knot. [詳解]
 
virtual const MGKnotVectorknot_vector () const =0
 Returns the knot vector of the curve. [詳解]
 
MGKnotVectorknot_vector ()
 Returns the knot vector of the curve. [詳解]
 
virtual double length (double t1, double t2) const
 Cmpute curve length of the interval. [詳解]
 
virtual double length () const
 Compute whole curve length. [詳解]
 
virtual double length_param (double t, double len) const
 Inverse function of length. [詳解]
 
virtual MGCurvelimit (const MGInterval &rng)=0
 Update this by limiting the parameter range of the curve. [詳解]
 
MGCurvelimit (double t0, double t1)
 
int manifold_dimension () const
 Return manifold dimension, 0:point, 1:curve, 2:surface. [詳解]
 
virtual void negate ()=0
 Negate the curve direction(曲線の方向を反転する). [詳解]
 
virtual double negate_param (double t) const =0
 Obtain the parameter value to t when this curve is negated by "negate()". [詳解]
 
void negate_transform (MGGeometry &boundary) const
 
virtual MGPvector< MGCurveoffset (double ofs_value, const MGVector &norm_vector=mgNULL_VEC) const
 Offset of costant deviation from this curve. [詳解]
 
virtual MGPvector< MGCurveoffset (const MGLBRep &ofs_value_lb, const MGVector &norm_vector=mgNULL_VEC) const
 Offset of variable deviation from this curve. [詳解]
 
virtual MGLBRep offset_c2 (double ofs_value, const MGVector &norm_vector=mgNULL_VEC) const
 Costant offset curve of C2 continuous curve. [詳解]
 
virtual MGLBRep offset_c2 (const MGLBRep &ofs_value_lb, const MGVector &norm_vector=mgNULL_VEC) const
 Valuable offset curve of C2 continuous curve. [詳解]
 
virtual bool on (const MGPosition &point, double &t) const
 Test if given point is on the curve or not. [詳解]
 
bool on (const MGPosition &P, MGPosition &t) const
 Test if given point is on this geometry or not. [詳解]
 
virtual int order () const =0
 Returns the order. [詳解]
 
virtual double param (const MGPosition &) const
 Compute parameter value of given point. [詳解]
 
virtual double param_e () const =0
 Return ending parameter value. [詳解]
 
virtual double param_error () const
 Obtain parameter space error. [詳解]
 
virtual double param_normalize (double t) const =0
 Normalize parameter value t to the nearest knot if their distance is within tolerance. [詳解]
 
virtual MGInterval param_range () const
 Return parameter range of the curve(パラメータ範囲を返す). [詳解]
 
double param_round_into_range (double t) const
 Round the parameter t into this parameter range. [詳解]
 
MGBox parameter_range () const
 Return parameter range of the geometry(パラメータ範囲を返す). [詳解]
 
virtual double param_s () const =0
 Return starting parameter value. [詳解]
 
double param_se (double t) const
 Return starting or ending parameter value that is nearer to the param t. [詳解]
 
virtual double param_span () const
 Compute parameter span length. [詳解]
 
virtual MGCurvepart (double t1, double t2, int multiple=0) const =0
 Compute part of this curve from parameter t1 to t2. [詳解]
 
virtual int perp_guess (double t0, double t1, const MGPosition &P, double tg, double &t) const
 Return perpendicular point from a point P. [詳解]
 
virtual int perp_guess (double s0, double s1, const MGCurve &curve2, double t0, double t1, double sg, double tg, MGPosition &st) const
 Return perpendicular points of two curves. [詳解]
 
virtual int perp_point (const MGPosition &p, double &t, const double *g=0) const
 Compute a foot point of the perpendicular line from point p to the curve. [詳解]
 
MGPosition_list perpendiculars (const MGCurve &crv) const
 Compute all the perpendicular points of this curve and the second one. [詳解]
 
virtual MGCParam_list perps (const MGPosition &P) const
 Compute all foot points of the perpendicular line from point to the curve. [詳解]
 
virtual MGPosition_list perps (const MGCurve &crv2) const =0
 Compute all the perpendicular points of this curve and the second one. [詳解]
 
virtual MGPosition_list perps (const MGStraight &crv2) const =0
 
virtual MGPosition_list perps (const MGRLBRep &crv2) const
 
virtual MGPosition_list perps (const MGEllipse &crv2) const
 
virtual MGPosition_list perps (const MGLBRep &crv2) const
 
virtual MGPosition_list perps (const MGSurfCurve &crv2) const
 
virtual MGPosition_list perps (const MGBSumCurve &crv2) const
 
MGPosition_list perps (const MGCompositeCurve &crv2) const
 
MGPosition_list perps (const MGTrimmedCurve &crv2) const
 
virtual MGPosition pick_closest (const MGStraight &sl) const
 Compute the parameter value of the closest point from the straight to this object. [詳解]
 
virtual void polygonize (double error, MGLBRep &lb2) const
 Approximate this curve by a polyline and output to lb2. [詳解]
 
virtual int project (const MGFSurface &surf, MGPvector< MGCurve > &vec_crv_uv, MGPvector< MGCurve > &vec_crv, const MGVector &vec) const
 Obtain the projected curve of a curve onto the surface. [詳解]
 
virtual double range (double t) const
 Round t into curve's parameter range. [詳解]
 
MGPosition range (const MGPosition &t) const
 Round t into geometry's parameter range. [詳解]
 
std::auto_ptr< MGCurverebuild (int how_rebuild=1, int parameter_normalization=2, double tol=-1., int ordr=0, const double *param_range=0) const
 Rebuild this curve. [詳解]
 
virtual void remove_knot ()
 Remove redundant knot, and reduce the b-rep dimension. [詳解]
 
virtual MGCurverotate_self (const MGVector &v, double, const MGPosition &=mgORIGIN)
 Update curve by rotating around straight line. [詳解]
 
std::auto_ptr< MGLBRepscalePolar (double angleBase, double angle1, double angle2) const
 Obtain polar-rotated curve of this. [詳解]
 
virtual int sdim () const =0
 Return space dimension. [詳解]
 
virtual MGPosition start_point () const
 Return start point(始点を返却する). [詳解]
 
virtual MGSurfacesweep (const MGUnit_vector &uvec, double start_dist, double end_dist) const =0
 Return sweep surface from crv. [詳解]
 
virtual int tangent_guess (double t0, double t1, const MGPosition &P, double tg, double &t) const
 Return tangent point from a point P, given guess starting paramter tg. [詳解]
 
void trim_end (double t)
 Trim the end part of this curve at the parameter t. [詳解]
 
void trim_start (double t)
 Trim the start part of this curve at the parameter t. [詳解]
 
void trim_start_and_end (double ts, double te)
 Trim the start part and end part of this curve at the parameter ts and te. [詳解]
 
virtual MGCURVE_TYPE type () const =0
 Return curve type(曲線のタイプを返す). [詳解]
 
virtual MGCurveunlimit ()=0
 Unlimit parameter range of the curve(limitをはずす). [詳解]
 
virtual MGCurveunlimit_end ()=0
 Unlimit parameter range of the curve to the end point direction. [詳解]
 
virtual MGCurveunlimit_start ()=0
 Unlimit parameter range of the curve to the start point direction. [詳解]
 
virtual std::auto_ptr< MGLBRepPolarCoordinatesLBRep () const
 Obtain polar coordinates system MGLBRep of this curve. [詳解]
 
virtual std::ostream & out (std::ostream &) const
 Output virtual function. [詳解]
 
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
 
virtual void shade (mgVBO &vbo, const MGDrawParam &para, mgVBO::ELEMENT_TARGET target=mgVBO::SHADING) const
 Shade the object in world coordinates. [詳解]
 
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
 
virtual const MGFSurfacefsurface () const
 Get the MGFSurface pointer if this is MGSurface or MGFace. [詳解]
 
virtual MGFSurfacefsurface ()
 
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 MGSurfacesurf ()
 Return MGSurface pointer if this MGGel is an MGSurface, else return null. [詳解]
 
virtual const MGSurfacesurf () 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_control_polygon (mgSysGL &sgl) const
 

限定公開メンバ関数

virtual void ReadMembers (MGIfstream &buf)
 メンバデータを読み出す関数. [詳解]
 
virtual void WriteMembers (MGOfstream &buf) const
 メンバデータを書き込む関数. [詳解]
 
virtual MGCParam_list intersect_1D (double f, int coordinate=0) const
 Compute intersection point of 1D sub curve of original curve. [詳解]
 
void approximate_as_LBRep2 (MGLBRep &lb, int order, int is, int ie, bool neglectMulti=false) const
 Approximate this curve as a MGLBRep curve from knot_vector[is] to [ie]. [詳解]
 
virtual void data_points_for_approximate_as_LBRep2 (int is, int ie, MGKnotVector &t, MGNDDArray &tau, bool neglectMulti=false) const
 Get data points for approximate_as_LBRep2. [詳解]
 
void extrapolated_pp (double tau, double dk, MGPPRep &pp) const
 Obtain an extrapolated PP-Rep curve by the parameter value. [詳解]
 
virtual MGCCisect_list isect_withC1LB (const MGLBRep &curve2) const
 Compute intersections with MGLBRep curve2 that does not have C0 continuity in it. [詳解]
 
virtual MGCCisect_list isect_with_noCompoSC (const MGSurfCurve &curve2) const
 isect with SurfCurve whose m_curve is not a MGTrimmedCurve of MGCompositeCurve. [詳解]
 
virtual std::auto_ptr< MGCurveoneD (const double g[4]) const =0
 Obtain transformed 1D curve expression of this curve. [詳解]
 
virtual MGPosition_list perps_withC1LB (const MGLBRep &lbC1) const
 Perpendicular points with C1 conitnuity LBRep. [詳解]
 
virtual MGPosition_list perps_with_noCompoSC (const MGSurfCurve &curve2) const
 Perpendicular points of this to curve2. [詳解]
 
MGPosition_list perpsSl (const MGStraight &sl) const
 Perpendicular points with straight. [詳解]
 
virtual void update_mark ()
 Mark this as updated. [詳解]
 
- 基底クラス MGGeometry に属する継承限定公開メンバ関数
MGGeometryset_geometry (const MGGeometry &geo2)
 Assignment. [詳解]
 
- 基底クラス MGObject に属する継承限定公開メンバ関数
MGObjectset_object (const MGObject &gel2)
 

その他の継承メンバ

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

詳解

MGCurve is an abstract class which represents a whole curve.

構築子と解体子

MGCurve::MGCurve ( )

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

MGCurve::MGCurve ( const MGCurve curve)

Copy constructor.

virtual MGCurve::~MGCurve ( )
virtual

Virtual Destructor.

関数詳解

virtual void MGCurve::approximate_as_LBRep ( MGLBRep lb,
int  ordr = 0,
int  parameter_normalization = 0,
bool  neglectMulti = false 
) const
virtual

Approximate this curve as a MGLBRep.

Approximate this curve as a MGLBRep curve within the tolerance MGTolerance::line_zero(). When parameter_normalization=0, reparameterization will not done, and the evaluation at the same parameter has the same values before and after of approximate_as_LBRep.

引数
lbApproximated lbrep will be set.
ordrnew order. When this is MGLBRep, if ordr=0, ordr=order() will be assumed, else ordr=4 is assumed.
parameter_normalizationIndicates how the parameter normalization be done: =0: no parameter normalization. =1: normalize to range=(0., 1.); =2: normalize to make the average length of the 1st derivative is as equal to 1. as possible.
neglectMultiIndicates if multiple knots be kept. true: multiplicity is removed. false: multiplicity is kept.

MGLBRep, MGRLBRep, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurveで再実装されています。

void MGCurve::approximate_as_LBRep2 ( MGLBRep lb,
int  order,
int  is,
int  ie,
bool  neglectMulti = false 
) const
protected

Approximate this curve as a MGLBRep curve from knot_vector[is] to [ie].

This is an internal program of MGLBRep constructor.

引数
lbApproximated LBRep will be set.
ordernew order
isapproximation parameter range, from knot_vector()[is].
ieapproximation parameter range, to knot_vector()[ie].
neglectMultiIndicates if multiple knots be kept. true: multiplicity is removed. false: multiplicity is kept.
void MGCurve::arrow ( double  t,
MGPosition  data[4] 
) const

Generate arrow data of the tangent at the parameter value t of the curve.

data[0] is the origin, data[1] is top of the arrow, data[2], [3] are two bottoms of arrowhead.

virtual int MGCurve::bdim ( ) const
pure virtual

Returns B-Rep Dimension.

MGLBRep, MGEllipse, MGRLBRep, MGStraight, MGCompositeCurve, MGSurfCurve, MGTrimmedCurve, MGBSumCurveで実装されています。

virtual MGBox MGCurve::box_limitted ( const MGInterval ) const
pure virtual

Return minimum box that includes the curve of parameter interval.

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

MGLBRep, MGEllipse, MGRLBRep, MGStraight, MGCompositeCurve, MGSurfCurve, MGTrimmedCurve, MGBSumCurveで実装されています。

virtual MGPosition MGCurve::center ( ) const
virtual

Obtain ceter coordinate of the geometry.

MGGeometryを実装しています。

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

virtual MGPosition MGCurve::center_param ( ) const
virtual

Obtain ceter parameter value of the geometry.

MGGeometryを実装しています。

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

MGLBRep, MGEllipse, MGRLBRep, MGStraight, MGCompositeCurve, MGSurfCurve, MGTrimmedCurve, MGBSumCurveで実装されています。

virtual void MGCurve::change_range ( double  t1,
double  t2 
)
pure virtual

Change parameter range.

Be able to change the direction by providing t1 greater than t2.

引数
t1Parameter value for the start of original.
t2Parameter value for the end of original.

MGLBRep, MGEllipse, MGStraight, MGRLBRep, MGCompositeCurve, MGSurfCurve, MGTrimmedCurve, MGBSumCurveで実装されています。

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

Construct new geometry object by copying to newed area.

User must delete this copied object by "delete".

MGGeometryを実装しています。

MGLBRep, MGEllipse, MGRLBRep, MGStraight, MGCompositeCurve, MGSurfCurve, MGTrimmedCurve, MGBSumCurve, mgTL2Polylineで実装されています。

virtual double MGCurve::closest ( const MGPosition point) const
virtual

Compute the closest point parameter value of this curve from a point.

MGStraight, MGCompositeCurveで再実装されています。

virtual MGPosition MGCurve::closest ( const MGCurve curve2) const
virtual

Compute the closest point parameter value pair of this curve and curve2.

MGPosition P of the function return contains this and curve2's parameter as: P(0)=this curve's parameter, P(1)=curve2's parameter value.

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

virtual double MGCurve::closest2D ( const MGPosition point) const
virtual

Compute the nearest point from input point on this curve's (x,y) 2D part.

bool MGCurve::cn_continuity ( int  n) const

Test if this curve is cn continuous.

曲線がCn連続かどうか調べる LBRep以外はかならずtrueが返却される

virtual int MGCurve::common ( const MGCurve curve2,
std::vector< double > &  vecComSpan,
MGCCisect_list isect 
) const
virtual

Test if this has a common line part with the 2nd curve.

目的:与えられた曲線と自身の共通部分があるかどうか調べる。 引数: const MGCurve& curve2, (I/ ) 与えられる曲線 std::vector<double>& vecComSpan ( /O) 共通部分のパラメータ範囲 4nの配列で、vecComSpan(4*i+0),vecComSpan(4*i+1)が自身のパラメータ範囲 (vecComSpan(4*i+0) < vecComSpan(4*i+1))、 vecComSpan(4*i+2),vecComSpan(4*i+3)がcurve2のパラメータ範囲 MGCCisect_list& isect ( /O) 交点 戻り値: 3:交点も共通部分も求まった 2:交点のみが求まった 1:共通部分のみが求まった 0:交点も共通部分もなかった -1:共通エッジの収束計算エラー -2:共通エッジが4個以上求まった(のっていないと見なす) 追記: 曲線が共通かどうかの誤差にはline_zero()、をパラメータ範囲の収束計算の 誤差には、パラメータ範囲*rc_zero()を使用する。

MGCompositeCurve, MGTrimmedCurveで再実装されています。

virtual int MGCurve::common ( const MGCurve curve2,
std::vector< double > &  vecComSpan 
) const
virtual

Test if this has a common line part with the 2nd curve.

関数名:common 目的:与えられた曲線と自身の共通部分があるかどうか調べる。 引数: const MGCurve& curve2, (I/ ) 与えられる曲線 std::vector<double>& vecComSpan ( /O) 共通部分のパラメータ範囲 4nの配列で、vecComSpan(4*i+0),vecComSpan(4*i+1)が自身のパラメータ範囲 (vecComSpan(4*i+0) < vecComSpan(4*i+1))、 vecComSpan(4*i+2),vecComSpan(4*i+3)がcurve2のパラメータ範囲 戻り値: 共通部分の数: 共通部分が求まった 0: 共通部分がなかった -1: 共通エッジの収束計算エラー -2: 共通エッジが4個以上求まった(のっていないと見なす) 追記: 曲線が共通かどうかの誤差にはline_zero()を、パラメータ範囲の収束計算の誤差には、 パラメータ範囲*rc_zero()を使用する。

MGCompositeCurve, MGTrimmedCurveで再実装されています。

virtual void MGCurve::convert_to_Bezier ( MGLBRep bezier) const
virtual

Convert this curve to Bezier curve.

If this is MGLBRep or MGStraight, the shape is exactly the same as the original. Otherwise, this is apporoximated by MGLBRep.

MGLBRep, MGStraightで再実装されています。

virtual MGCurve& MGCurve::coordinate_exchange ( int  i,
int  j 
)
pure virtual

Exchange ordering of the coordinates.

Exchange coordinates (i) and (j).

MGLBRep, MGEllipse, MGRLBRep, MGStraight, MGCompositeCurve, MGBSumCurveで実装されています。

virtual MGCurve* MGCurve::copy_as_nurbs ( ) const
pure virtual

copy as a newed curve.

The new curve will be MGLBRep or MGRLBRep. When original curve was a MGRLBRep, the new curve will be a MGRLBRep. Otherwise, the new curve will be a MGLBRep. Returned object must be deleted.

MGLBRep, MGEllipse, MGRLBRep, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで実装されています。

virtual MGCurve* MGCurve::copy_change_dimension ( int  sdim,
int  start1 = 0,
int  start2 = 0 
) const
pure virtual

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

Returned is a newed object, user must delete this copied object by "delete".

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

MGGeometryを実装しています。

MGLBRep, MGEllipse, MGRLBRep, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで実装されています。

virtual MGCurve* MGCurve::copy_limitted ( const MGInterval prange) const
virtual

Construct new curve object limitting the parameter range to prange.

Construct new curve object by copying to newed area, and limitting the parameter range to prange. Returned is a newed object and must be deleted.

MGLBRep, MGRLBRep, MGTrimmedCurveで再実装されています。

virtual double MGCurve::curvature ( double  ) const
virtual

Return curvature at the given point.

When the curve is 2D, curvature has sign. when 3D, curvature is always plus. 与えられた点における曲線の曲率を返却する。

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

MGCurve* MGCurve::curve ( )
inlinevirtual

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

MGGelを再実装しています。

const MGCurve* MGCurve::curve ( ) const
inlinevirtual

MGGelを再実装しています。

virtual double MGCurve::curvilinear_integral ( double  t1,
double  t2 
) const
virtual

Compute curvilinear integral of the 1st two coordinates.

線積分を求める。 This integral can be used to compute area sorounded by the curve. Second form is from param_s() to param_e(); curvilinear_integral from t1 to t2 can be obtained by Integral of (x*dy-y*dx) about t, where curve is expressed by f(t)=(x(t),y(t)), dx=dx/dt, and dy=dy/dt.

MGLBRep, MGEllipse, MGStraight, MGCompositeCurve, MGTrimmedCurveで再実装されています。

virtual double MGCurve::curvilinear_integral ( ) const
inlinevirtual

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

virtual void MGCurve::data_points_for_approximate_as_LBRep2 ( int  is,
int  ie,
MGKnotVector t,
MGNDDArray tau,
bool  neglectMulti = false 
) const
protectedvirtual

Get data points for approximate_as_LBRep2.

引数
isapproximation parameter range, from knot_vector()[is].
ieto [ie].
tNew knot configuration will be output. t's order is input. other information of t will be updated.
tauData point for t will be output.
neglectMultiIndicates if multiple knots be kept. true: multiplicity is removed. false: multiplicity is kept.

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

virtual double MGCurve::deriv_length ( ) const
virtual

Compute mean length of 1st derivative vector.

MGUnit_vector MGCurve::direction ( const MGPosition param) const
virtual

Compute direction unit vector of the geometry.

MGGeometryを再実装しています。

virtual MGUnit_vector MGCurve::direction ( double  ) const
virtual

Return tangent vector at the given point.

与えられた点における曲線の接ベクトルを返す。

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

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

MGGelを再実装しています。

virtual void MGCurve::display_break_points ( mgSysGL sgl) const
virtual

MGGelを再実装しています。

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

virtual void MGCurve::display_curvatures ( mgSysGL sgl,
double  scale,
int  density,
bool  use_radius 
) const
virtual
引数
sglSgl to make curvature pictures in.
scalescaling of the graph.
densitydensitiy of the graph.
use_radiustrue:radius display, false:curvature display.

MGGelを再実装しています。

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

virtual int MGCurve::divide_multi ( MGPvector< MGCurve > &  crv_list,
int  multiplicity = -1 
) const
virtual

Divide this curve at the designated knot multiplicity point.

Function's return value is the number of the curves after divided.

引数
crv_listdivided curves will be appended.
multiplicitydesignates the multiplicity of the knot to divide at, When multiplicity<=0, order()-1 is assumed, When multiplicity>=order(), order() is assumed.

MGLBRep, MGRLBRep, MGCompositeCurve, MGTrimmedCurve, MGSurfCurveで再実装されています。

int MGCurve::divide_number ( ) const
inline

get the a divide number for offset, intersection, or others.

virtual void MGCurve::drawSE ( mgVBO vbo,
double  span_length,
double  t0,
double  t1 
) const
virtual

Draw this curve into vbo, approximating with polyline.

引数
vboTarget graphic object.
span_lengthLine segment span length.
t0Start parameter value of the curve.
t1End parameter value of the curve, Draw will be performed from t0 to t1.

MGLBRep, MGEllipse, MGRLBRep, MGStraight, MGCompositeCurve, MGTrimmedCurveで再実装されています。

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

Draw this curve into vbo, approximating with polyline.

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

MGObjectを実装しています。

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

virtual MGPosition MGCurve::end_point ( ) const
virtual

Return end point(終点を返却する)

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

virtual MGVector MGCurve::eval ( double  ,
int  nderiv = 0,
int  left = 0 
) const
pure virtual

Evaluate n'th derivative data.

n=0 means positional data evaluation.

引数
nderivOrder of Derivative.
leftLeft continuous(left=true) or right continuous(left=false).

MGLBRep, MGEllipse, MGRLBRep, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで実装されています。

virtual void MGCurve::eval_all ( double  ,
MGPosition ,
MGVector ,
MGVector  
) const
virtual

Compute position, 1st and 2nd derivatives.

パラメータ値を与えて位置、一次微分値、二次微分値をもとめる。

MGLBRep, MGEllipse, MGRLBRep, MGStraightで再実装されています。

virtual MGVector MGCurve::eval_deriv ( double  ) const
virtual

Compute 1st derivative.

曲線上の与えられたパラメータ値における一次微分値をかえす。

MGEllipse, MGStraightで再実装されています。

void MGCurve::eval_discrete_deviation ( const MGCurve curve2,
std::vector< MGPosition > &  sts,
int  npoint = 20,
double  tolerance = 0.1 
) const

Evaluate deviations of two curves(this and curve2) at npoint discrete points.

(1)Search the common curve spans which have the distance within tolerance. (2)Compute the nearest points from npoint discrete points of this to curve2. Let sti=sts[i], then sti[0] is this curve's parameter value s, and sti[1] is the parameter value t of curve2 which is the nearest point from the point s. If this and curve2 have the minimum distance more than tolerance, sts.size()==1 and sts[0] is the minimum distance points of this and curve2.

引数
curve22nd target curve.
stsParameter values of this and curve2 will be output. sts[i] is i-th parameter value.
npointindicates how many discrete points be obtained.
tolerancetolerance to get two edge to compute deviation.
virtual void MGCurve::eval_line ( const MGNDDArray tau,
MGBPointSeq value 
) const
virtual

Evaluate line data at data point tau.

引数
tauData points.
valueValues evaluated. value(i,.)=eval(tau[i]);

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

virtual MGPosition MGCurve::eval_position ( double  ) const
virtual

Compute positional data.

与えられたパラメータ値に相当する自身上の点を返す。

MGEllipse, MGStraightで再実装されています。

MGVector MGCurve::evaluate ( const MGPosition t,
const int *  nderiv = 0 
) 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 void MGCurve::extend ( double  length,
bool  start = false 
)
pure virtual

Extrapolate this curve by an (approximate) chord length.

The extrapolation is C2 continuous.

引数
lengthapproximate chord length to extend.
startFlag of which point to extend, start or end point of the line. If start is true extend on the start point.

MGLBRep, MGEllipse, MGRLBRep, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで実装されています。

void MGCurve::extrapolated_pp ( double  tau,
double  dk,
MGPPRep pp 
) const
protected

Obtain an extrapolated PP-Rep curve by the parameter value.

引数
tauThe parameter value at the end of extended point, When tau<param_s(), extension will be done at the starting point, When tau>param_e(), extension will be done at the end point.
dkCoefficient of how curvature should vary at the connecting point.
ppPP-rep will be output.
virtual void MGCurve::Frenet_frame ( double  t,
MGUnit_vector T,
MGUnit_vector N,
MGUnit_vector B,
double &  curvature,
double &  torsion 
) const
virtual

Compute Frenet_frame, curvature and torsion in 3D space.

引数
tInput parameter value(パラメータ値)
TTangent
NPrincipal Normal
BBinormal
curvatureCurvature is always >=0.
torsionTortion
virtual void MGCurve::Frenet_frame2 ( double  t,
MGVector V2,
MGVector T,
MGVector N,
MGVector B 
) const
virtual

Compute Frenet_frame, curvature and torsion in 3D space.

引数
tInput parameter value(パラメータ値)
V22nd derivative at t.
TTangent
NPrincipal Normal
BBinormal
double MGCurve::get_average_tangent_length ( ) const

Get average tangent length.

The average means the average of start, mid, and end point's tangent.

virtual bool MGCurve::get_control_points ( MGBPointSeq cpoints) const
inlinevirtual

Extracts control points.

Fucntion's return value is true if control points was obtained, false if not.

引数
cpointsControl points will be output.

MGLBRep, MGRLBRepで再実装されています。

void MGCurve::getParamsC0Continuity ( std::vector< double > &  param) const

Find C0 cotinuity parameter values o fhtis curve, and push back the parameter values to param. Obtained parameter values are pushed in ascending order.

bool MGCurve::has_same_direction_at ( double  s,
const MGCurve curve2,
double  t 
) const

Test if this curve has the same direction with curve2.

Test at the point s(of this) and t(of curve2). Function's return value is true if they have the same direction. "same direction" means their tangent vectors have the angle less than 90 degree.

virtual long MGCurve::identify_type ( ) const
pure virtual

Return This object's typeID.

MGGelを実装しています。

MGLBRep, MGRLBRep, MGEllipse, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで実装されています。

virtual bool MGCurve::in_range ( double  t) const
virtual

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

MGStraight, MGTrimmedCurve, MGSurfCurveで再実装されています。

bool MGCurve::in_range ( const MGPosition t) const
virtual

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

MGGeometryを再実装しています。

virtual MGCCisect_list MGCurve::intersect ( const MGCurve ) const
virtual

Curve to curve intersection.

virtual MGCParam_list MGCurve::intersect_1D ( double  f,
int  coordinate = 0 
) const
protectedvirtual

Compute intersection point of 1D sub curve of original curve.

Parameter values of intersection point will be returned.

引数
fCoordinate value
coordinateCoordinate kind of the data f(from 0).

MGLBRep, MGStraight, MGRLBRep, MGEllipse, MGCompositeCurve, MGTrimmedCurveで再実装されています。

MGCCisect_list MGCurve::intersect_brute_force ( const MGCurve ) const

Curve to curve intersection.

Curve と Curve の交点を求める。

virtual int MGCurve::intersect_dnum ( ) const
pure virtual

Provide divide number of curve span for function intersect.

MGRLBRep, MGEllipse, MGStraight, MGTrimmedCurve, MGBSumCurve, MGSurfCurveで実装されています。

MGCSisect_list MGCurve::intersect_with_plane ( const MGPlane surf) const

intersections with a plane.

MGisects MGCurve::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 MGCurve::intersection ( const MGCurve obj2) const
virtual

MGObjectを実装しています。

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

MGObjectを実装しています。

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

MGObjectを実装しています。

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

MGObjectを実装しています。

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

MGObjectを実装しています。

virtual const MGLBRep* MGCurve::is_Bezier ( int  ordr = 0) const
virtual

Test if this is a Bezier Curve.

Functions's return value is true if Bezier, false if not. If input ordr>=2, order is also tested if this Bezier's order is the same as input order. If input ordr<=1, any ordr>=2 is allowed for Bezier curve. Bezier curve is defined as follows. Here t=knot_vector(), k is this LBRep's order, n=bdim(), and m=(n-k)/(k-1). (1) n=k+(k-1)*m. (2) t(0)=t(1)=,...,=t(k-1)=0 (3) t(i)=t(i+1)=,...,=t(i+k-2)=j+1 for i=k, k+(k-1),...,k+j*(k-1) and j=0,...,m-1. (4) t(n)=t(n+1)=,...,=t(n+k-1)=m+1

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

bool MGCurve::is_closed ( ) const
inline

Test if this is a closed curve.

曲線が閉曲線かどうかを返す

bool MGCurve::is_closedWithError ( double  err) const

Terst if this is a closed curve, given the tolerance.

virtual bool MGCurve::is_coplanar ( const MGCurve curve2,
MGPlane plane 
) const
virtual

Test if this cure is co-planar with the 2nd curve curve2.

MGPlane expression will be out to plane if this is co-planar. Function's return value is true if co-planar.

MGLBRep, MGRLBRep, MGStraightで再実装されています。

virtual bool MGCurve::is_endpoint_parameter ( double  t) const
virtual

Test if the input parameter t is the start point parameter or not.

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

virtual bool MGCurve::is_linear ( MGStraight straight) const
virtual

Test if this cure is linear or not, that is, is straight or not.

MGStraight expression will be out to straight if this is linear or not. Function's return value is true if linear.

MGEllipse, MGStraightで再実装されています。

bool MGCurve::is_perpendicular ( const MGPosition P,
double  t 
) const

Test if the vector from P to this->eval(t) is perpendicular.

Perpendicular to the tangent of this curve at t.

virtual bool MGCurve::is_planar ( MGPlane plane) const
virtual

Test if this cure is planar or not.

MGPlane expression will be out to plane if this is planar. Function's return value is true if planar.

MGLBRep, MGEllipse, MGRLBRep, MGStraight, MGCompositeCurve, MGTrimmedCurveで再実装されています。

virtual bool MGCurve::is_startpoint_parameter ( double  t) const
virtual

Test if the input parameter t is the start point parameter or not.

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

virtual MGCCisect_list MGCurve::isect ( const MGCurve curve2) const
pure virtual

Intersection of Curve and other geometry.

MGLBRep, MGRLBRep, MGEllipse, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで実装されています。

virtual MGCCisect_list MGCurve::isect ( const MGStraight curve2) const
pure virtual
virtual MGCCisect_list MGCurve::isect ( const MGRLBRep curve2) const
virtual

MGLBRep, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurveで再実装されています。

virtual MGCCisect_list MGCurve::isect ( const MGEllipse curve2) const
virtual

MGLBRep, MGEllipse, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurveで再実装されています。

virtual MGCCisect_list MGCurve::isect ( const MGLBRep curve2) const
virtual

MGLBRep, MGCompositeCurve, MGTrimmedCurve, MGSurfCurveで再実装されています。

virtual MGCCisect_list MGCurve::isect ( const MGSurfCurve curve2) const
pure virtual
virtual MGCCisect_list MGCurve::isect ( const MGBSumCurve curve2) const
virtual
MGCCisect_list MGCurve::isect ( const MGTrimmedCurve curve2) const
MGCCisect_list MGCurve::isect ( const MGCompositeCurve curve2) const
virtual MGCSisect_list MGCurve::isect ( const MGSurface surf) const
pure virtual
virtual MGCSisect_list MGCurve::isect ( const MGPlane surf) const
pure virtual
virtual MGCSisect_list MGCurve::isect ( const MGSphere surf) const
pure virtual
virtual MGCSisect_list MGCurve::isect ( const MGCylinder surf) const
pure virtual
virtual MGCSisect_list MGCurve::isect ( const MGSBRep surf) const
pure virtual
virtual MGCSisect_list MGCurve::isect ( const MGRSBRep surf) const
pure virtual
virtual MGCSisect_list MGCurve::isect ( const MGBSumSurf surf) const
pure virtual
MGCSisect_list MGCurve::isect ( const MGFSurface fs) const
inline
virtual MGCSisect_list MGCurve::isect ( const MGFace ) const
virtual

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

MGCFisect_vector MGCurve::isect ( const MGShell shl) const

Intersection of a shell and a curve.

MGCParam_list MGCurve::isect_1D ( double  f,
int  coordinate = 0 
) const

Compute intersection point of 1D sub curve of original curve.

Parameter values of intersection point will be returned.

引数
fCoordinate value
coordinateCoordinate kind of the data f(from 0).
virtual MGCCisect_list MGCurve::isect_with_noCompoSC ( const MGSurfCurve curve2) const
protectedvirtual

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

virtual MGCCisect_list MGCurve::isect_withC1LB ( const MGLBRep curve2) const
protectedvirtual

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

virtual double MGCurve::knot ( int  i) const
pure virtual

Access to i-th element of knot.

MGLBRep, MGRLBRep, MGEllipse, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで実装されています。

virtual const MGKnotVector& MGCurve::knot_vector ( ) const
pure virtual

Returns the knot vector of the curve.

MGLBRep, MGRLBRep, MGEllipse, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで実装されています。

MGKnotVector& MGCurve::knot_vector ( )

Returns the knot vector of the curve.

virtual double MGCurve::length ( double  t1,
double  t2 
) const
virtual

Cmpute curve length of the interval.

If t1 is greater than t2, return negative value. 与えられたパラメータ値間の曲線の長さを返す。 パラメータが昇順で与えられたときは正値、降順のときは負値を返す。

MGEllipse, MGStraight, MGCompositeCurve, MGTrimmedCurveで再実装されています。

virtual double MGCurve::length ( ) const
inlinevirtual

Compute whole curve length.

If the curve is infinite, return -1. 自身の曲線が有界の場合、その曲線の距離を返却する。非有界の場 合はー1を返却をする。

MGEllipse, MGStraight, MGCompositeCurveで再実装されています。

virtual double MGCurve::length_param ( double  t,
double  len 
) const
virtual

Inverse function of length.

Compute the point that is away from the point t by length len. lengthの逆関数。指定パラメータtで示される点から指定距離len 曲線上に沿って離れた点を示すパラメータ値を返す。

MGEllipse, MGStraight, MGTrimmedCurveで再実装されています。

virtual MGCurve& MGCurve::limit ( const MGInterval rng)
pure virtual

Update this by limiting the parameter range of the curve.

自身に指定したパラメータ範囲のlimitをつける.

MGLBRep, MGRLBRep, MGEllipse, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurve, MGBSumCurve, mgTL2Polylineで実装されています。

MGCurve& MGCurve::limit ( double  t0,
double  t1 
)
int MGCurve::manifold_dimension ( ) const
inlinevirtual

Return manifold dimension, 0:point, 1:curve, 2:surface.

MGGelを再実装しています。

virtual void MGCurve::negate ( )
pure virtual

Negate the curve direction(曲線の方向を反転する).

MGGeometryを再実装しています。

MGLBRep, MGRLBRep, MGEllipse, MGStraight, MGCompositeCurve, MGBSumCurve, mgTL2Polylineで実装されています。

virtual double MGCurve::negate_param ( double  t) const
pure virtual

Obtain the parameter value to t when this curve is negated by "negate()".

MGLBRep, MGRLBRep, MGEllipse, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGBSumCurveで実装されています。

void MGCurve::negate_transform ( MGGeometry boundary) const
virtual

Transform the coordinates of boundary of this geometry 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 parameter world of this geometry.

MGGeometryを実装しています。

virtual MGPvector<MGCurve> MGCurve::offset ( double  ofs_value,
const MGVector norm_vector = mgNULL_VEC 
) const
virtual

Offset of costant deviation from this curve.

一定オフセット関数 オフセット方向は、法線方向から見て入力曲線の進行方向左側を正とする。 法線ベクトルがヌルの場合、始点において曲率中心方向を正とする。ただし、曲率中心へ曲率半径以上のオフセット は行わない。トレランスはline_zero()を使用している。戻り値は、オフセット曲線リストが返却される。 If the norm_vector is given, the positive offset direction decide to left hand side from ahead, or the direction to center of curvature at start parameter. the offset value is less than radius of curvature. line_zero() is used.

引数
ofs_valueオフセット量
norm_vector法線ベクトル

MGStraight, MGCompositeCurveで再実装されています。

virtual MGPvector<MGCurve> MGCurve::offset ( const MGLBRep ofs_value_lb,
const MGVector norm_vector = mgNULL_VEC 
) const
virtual

Offset of variable deviation from this curve.

可変オフセット関数 オフセット量は空間次元1の線B表現で与えられる。 オフセット方向は、法線方向から見て入力曲線の進行方向左側を正とする。 法線ベクトルがヌルの場合、始点において曲率中心方向を正とする。ただし、曲率中心へ曲率半径以上のオフセット は行わない。トレランスはline_zero()を使用している。戻り値は、オフセット曲線リストが返却される。 If the norm_vector is given, the positive offset direction decide to left hand side from ahead, or the direction to center of curvature at start parameter. the offset value is less than radius of curvature. line_zero() is used.

引数
ofs_value_lb空間次元1の線B表現で示したオフセット量
norm_vector法線ベクトル

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

virtual MGLBRep MGCurve::offset_c2 ( double  ofs_value,
const MGVector norm_vector = mgNULL_VEC 
) const
virtual

Costant offset curve of C2 continuous curve.

C2連続曲線の一定オフセット関数 オフセット方向は、法線方向から見て入力曲線の進行方向左側を正とする。 法線ベクトルがヌルの場合、始点において曲率中心方向を正とする。ただし、曲率中心へ曲率半径以上のオフセット は行わない。トレランスはline_zero()を使用している。戻り値は、オフセット曲線が返却される。 costant offset curve of C2 continuous curve. if the norm_vector is given, the positive offset direction decide to left hand side from ahead, or the direction to center of curvature at start parameter. the offset value is less than radius of curvature. line_zero() is used.

引数
ofs_valueオフセット量
norm_vector法線ベクトル

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

virtual MGLBRep MGCurve::offset_c2 ( const MGLBRep ofs_value_lb,
const MGVector norm_vector = mgNULL_VEC 
) const
virtual

Valuable offset curve of C2 continuous curve.

C2連続曲線の可変オフセット関数 オフセット量は空間次元1の線B表現で与えられる。 オフセット方向は、法線方向から見て入力曲線の進行方向左側を正とする。 法線ベクトルがヌルの場合、始点において曲率中心方向を正とする。ただし、曲率中心へ曲率半径以上のオフセット は行わない。トレランスはline_zero()を使用している。戻り値は、オフセット曲線が返却される。 valuable offset curve of C2 continuous curve. if the norm_vector is given, the positive offset direction decide to left hand side from ahead, or the direction to center of curvature at start parameter. the offset value is less than radius of curvature. line_zero() is used.

引数
ofs_value_lb空間次元1の線B表現で示したオフセット量
norm_vector法線ベクトル

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

virtual bool MGCurve::on ( const MGPosition point,
double &  t 
) const
virtual

Test if given point is on the curve or not.

If given point is on the curve, return parameter value of the curve. Even if not, return nearest point's parameter t. 指定点が自身上にあるかを調べる。曲線上にあれば,そのパラメーター値を, なくても最近傍点のパラメータ値を返す。 Function's return value is >0 if the point is on the curve, and 0 if the point is not on the curve.

引数
pointpoint(指定点)
tParameter of the curve(パラメータ) will be returned.

MGEllipse, MGStraight, MGCompositeCurveで再実装されています。

bool MGCurve::on ( const MGPosition P,
MGPosition t 
) const

Test if given point is on this geometry or not.

If the point is on this geometry, return parameter value of the geometry. Even if not, return nearest point's parameter. 指定点が自身上にあるかを調べる。曲線上にあれば,そのパラメーター値を, なくても最近傍点のパラメータ値を返す。 Function's return value is >0 if the point is on the geometry, and 0 if the point is not on the geometry.

引数
PPoint(指定点)
tParameter of the geometry(パラメータ)
virtual std::auto_ptr<MGCurve> MGCurve::oneD ( const double  g[4]) const
protectedpure virtual

Obtain transformed 1D curve expression of this curve.

Obtain so transformed 1D curve expression of this curve that f(t)={sum(xi(t)*g[i]) for i=0(x), 1(y), 2(z)}-g[3], where f(t) is the output of oneD and xi(t) is i-th coordinate expression of this curve. This is used to compute intersections with a plane g[4].

引数
gPlane expression(a,b,c,d) where ax+by+cz=d.

MGLBRep, MGStraight, MGRLBRep, MGEllipse, MGCompositeCurve, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで実装されています。

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

MGObjectを実装しています。

MGLBRep, MGEllipse, MGRLBRep, MGStraight, MGCompositeCurve, MGBSumCurveで実装されています。

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

MGObjectを実装しています。

MGLBRep, MGEllipse, MGRLBRep, MGStraight, MGCompositeCurve, MGBSumCurveで実装されています。

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

MGObjectを実装しています。

MGLBRep, MGEllipse, MGRLBRep, MGStraight, MGCompositeCurve, MGBSumCurveで実装されています。

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

Object transformation.

MGObjectを実装しています。

MGLBRep, MGEllipse, MGRLBRep, MGStraight, MGCompositeCurve, MGBSumCurveで実装されています。

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

MGObjectを実装しています。

MGLBRep, MGEllipse, MGRLBRep, MGStraight, MGCompositeCurve, MGBSumCurveで実装されています。

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

MGGelを再実装しています。

MGLBRep, MGEllipse, MGRLBRep, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで実装されています。

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

Assignment.

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

virtual bool MGCurve::operator== ( const MGCompositeCurve crv) const
virtual

Comparison.

MGCompositeCurve, MGTrimmedCurveで再実装されています。

virtual bool MGCurve::operator== ( const MGTrimmedCurve crv) const
virtual

MGCompositeCurve, MGTrimmedCurveで再実装されています。

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

Comparison.

MGGelを再実装しています。

MGLBRep, MGEllipse, MGRLBRep, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで実装されています。

virtual int MGCurve::order ( ) const
pure virtual

Returns the order.

MGLBRep, MGEllipse, MGRLBRep, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで実装されています。

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

Output virtual function.

MGGeometryを再実装しています。

MGLBRep, MGRLBRep, MGStraight, MGEllipse, MGCompositeCurve, MGSurfCurve, MGTrimmedCurve, MGBSumCurve, mgTL2Polylineで再実装されています。

virtual double MGCurve::param ( const MGPosition ) const
virtual

Compute parameter value of given point.

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

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

virtual double MGCurve::param_e ( ) const
pure virtual

Return ending parameter value.

MGLBRep, MGEllipse, MGRLBRep, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで実装されています。

virtual double MGCurve::param_error ( ) const
virtual

Obtain parameter space error.

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

virtual double MGCurve::param_normalize ( double  t) const
pure virtual

Normalize parameter value t to the nearest knot if their distance is within tolerance.

MGLBRep, MGEllipse, MGRLBRep, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで実装されています。

virtual MGInterval MGCurve::param_range ( ) const
virtual

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

MGStraight, MGTrimmedCurve, MGSurfCurveで再実装されています。

double MGCurve::param_round_into_range ( double  t) const

Round the parameter t into this parameter range.

virtual double MGCurve::param_s ( ) const
pure virtual

Return starting parameter value.

MGLBRep, MGEllipse, MGRLBRep, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで実装されています。

double MGCurve::param_se ( double  t) const

Return starting or ending parameter value that is nearer to the param t.

virtual double MGCurve::param_span ( ) const
inlinevirtual

Compute parameter span length.

MGBox MGCurve::parameter_range ( ) const
virtual

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

MGGeometryを実装しています。

virtual MGCurve* MGCurve::part ( double  t1,
double  t2,
int  multiple = 0 
) const
pure virtual

Compute part of this curve from parameter t1 to t2.

Returned is the pointer to newed object, and so should be deleted by calling program, or memory leaked.

引数
t1Start prameter value.
t2End prameter value.
multipleIndicates if start and end knot multiplicities are necessary. =0:unnecessary, !=0:necessary.

MGLBRep, MGEllipse, MGRLBRep, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで実装されています。

virtual int MGCurve::perp_guess ( double  t0,
double  t1,
const MGPosition P,
double  tg,
double &  t 
) const
virtual

Return perpendicular point from a point P.

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,

引数
t0parameter range of this, start.
t1End. (t0>=t1) indicates no range specified.
PPoint(指定点)
tgGuess parameter values of this curve.
tOutput parameter

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

virtual int MGCurve::perp_guess ( double  s0,
double  s1,
const MGCurve curve2,
double  t0,
double  t1,
double  sg,
double  tg,
MGPosition st 
) const
virtual

Return perpendicular points of two curves.

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,

引数
s0parameter range of this, start.
s1End. <When s0>="">=s1, no limit for this parameter range.
curve22nd curve.
t0parameter range of curve2, start.
t1End. When t0>=t1, no limit for curve2 parameter range.
sgGuess parameter values of the two curves, for this.
tgcurve2's parameter.
stperpendicular points' parameter values will be output. st(0): this curve's parameter, st(1):curve2's parameter.

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

virtual int MGCurve::perp_point ( const MGPosition p,
double &  t,
const double *  g = 0 
) const
virtual

Compute a foot point of the perpendicular line from point p to the curve.

If more than one points are found, return nearest one. 指定点からの自身への垂線の足とパラメータ値を返す。 Function's return value is if point is obtained(1) or not(0)

引数
pPoint(指定点)
tParameter of the curve(パラメータ値)
gguess parameter value of line

MGEllipse, MGStraightで再実装されています。

MGPosition_list MGCurve::perpendiculars ( const MGCurve crv) const

Compute all the perpendicular points of this curve and the second one.

If f(s) and g(t) are the points of the two curves f and g, then obtains points where the following conditions are satisfied: fs*(f-g)=0. gt*(g-f)=0. Here fs and gt are 1st derivatives at s and t of f and g. **** NOTE 1 **** perpendiculars is general function of perps, used in perps. General users should use function perps, not perpendiculars, since perps is optimized for each curve type. **** NOTE 2 **** perpendiculars can not be used for infinite parameter range curve. param_s() and param_e() of both curves must return their finite parameter range. MGPosition P in the MGPosition_list contains this and crv's parameter as: P(0)=this curve's parameter, P(1)=crv's parameter value.

引数
crvThe second curve
virtual MGCParam_list MGCurve::perps ( const MGPosition P) const
virtual

Compute all foot points of the perpendicular line from point to the curve.

与ポイントから曲線へ下ろした垂線の足の,曲線のパラメータ値を すべて求める。

引数
PPoint(指定点)

MGLBRep, MGEllipse, MGStraight, MGCompositeCurve, MGTrimmedCurveで再実装されています。

virtual MGPosition_list MGCurve::perps ( const MGCurve crv2) const
pure virtual

Compute all the perpendicular points of this curve and the second one.

That is, if f(s) and g(t) are the points of the two curves f and g, then obtains points where the following conditions are satisfied: fs*(f-g)=0. gt*(g-f)=0. Here fs and gt are 1st derivatives at s and t of f and g. MGPosition P in the MGPosition_list contains this and crv's parameter as: P(0)=this curve's parameter, P(1)=curve2's parameter value.

MGLBRep, MGEllipse, MGRLBRep, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで実装されています。

virtual MGPosition_list MGCurve::perps ( const MGStraight crv2) const
pure virtual
virtual MGPosition_list MGCurve::perps ( const MGRLBRep crv2) const
virtual

MGLBRep, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurveで再実装されています。

virtual MGPosition_list MGCurve::perps ( const MGEllipse crv2) const
virtual

MGLBRep, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurveで再実装されています。

virtual MGPosition_list MGCurve::perps ( const MGLBRep crv2) const
virtual

MGLBRep, MGCompositeCurve, MGTrimmedCurve, MGSurfCurveで再実装されています。

virtual MGPosition_list MGCurve::perps ( const MGSurfCurve crv2) const
virtual

MGLBRep, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurveで再実装されています。

virtual MGPosition_list MGCurve::perps ( const MGBSumCurve crv2) const
virtual

MGLBRep, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurveで再実装されています。

MGPosition_list MGCurve::perps ( const MGCompositeCurve crv2) const
MGPosition_list MGCurve::perps ( const MGTrimmedCurve crv2) const
virtual MGPosition_list MGCurve::perps_with_noCompoSC ( const MGSurfCurve curve2) const
protectedvirtual

Perpendicular points of this to curve2.

curve2 is a MGSurfcurve and the composite parameter curve must not a MGTrimmedCurve of MGCompositeCurve.

virtual MGPosition_list MGCurve::perps_withC1LB ( const MGLBRep lbC1) const
protectedvirtual

Perpendicular points with C1 conitnuity LBRep.

MGPosition P in the MGPosition_list contains this and crv's parameter as: P(0)=this curve's parameter, P(1)=crv's parameter value.

MGPosition_list MGCurve::perpsSl ( const MGStraight sl) const
protected

Perpendicular points with straight.

MGPosition P in the MGPosition_list contains this and crv's parameter as: P(0)=this curve's parameter, P(1)=crv's parameter value.

引数
slThe second curve
virtual MGPosition MGCurve::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 std::auto_ptr<MGLBRep> MGCurve::PolarCoordinatesLBRep ( ) const
virtual

Obtain polar coordinates system MGLBRep of this curve.

This curve's (x,y) coordinates are changed polar coordinates system(r,theta) where r is the distance from origin and theta is the angel with x coordinate. The space dimension of this curve must be >=2; If this space dimension is lager than 2, the remaining coordinates are set unchanged to MGLBRep.

virtual void MGCurve::polygonize ( double  error,
MGLBRep lb2 
) const
virtual

Approximate this curve by a polyline and output to lb2.

The tolerance of the approximation is error.

引数
errortolerance allowed for the approximation
lb2Obtained polyline will be output as an MGLBRep of order2.

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

virtual int MGCurve::project ( const MGFSurface surf,
MGPvector< MGCurve > &  vec_crv_uv,
MGPvector< MGCurve > &  vec_crv,
const MGVector vec 
) const
virtual

Obtain the projected curve of a curve onto the surface.

投影曲線は面上のパラメータ曲線と3次元曲線としてそれぞれ順番に、 vec_crv_uv, vec_crvに格納される。 uv曲線のトレランスはrc_zero()を、3次元曲線はline_zero()をそれぞれ使用している。 get perpendicular or vector projection curve list. uv projection curves are put into vec_crv_uv(rc_zero() is used), 3d projection curves are put into vec_crv(line_zero() is used) respectively. 投影曲線の数: 投影曲線が求まった 0: 投影曲線が求まらなかった -1: 内部処理エラー -2: 収束処理エラー(収束しなかった) 追記:引数vecが与えられない(null)とき、面直投影する。 Obtain the projected curve of a curve onto the surface. The direction of the projection is along the vector vec if the vec is not NULL, and normal to the surface if the vec is NULL. Output of 'project' is two kind of curves: one is general world coordinate curves('vec_crv'), and the other is (u,v) curves of the parameter space of the surfaces(vec_crv_uv). vec_crv_uv.size() is equal to vec_crv.size(). Let the size be n, then (vec_crv_uv[i], vec_crv[i]) is one pair for 0<=i<n. Function's return value is: >=0: number of curves obtained, <0 : Some error detected.

MGLBRep, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurveで再実装されています。

virtual double MGCurve::range ( double  t) const
virtual

Round t into curve's parameter range.

入力パラメータをパラメータ範囲でまるめて返却する。

MGStraight, MGTrimmedCurve, MGSurfCurveで再実装されています。

MGPosition MGCurve::range ( const MGPosition t) const

Round t into geometry's parameter range.

入力パラメータをパラメータ範囲でまるめて返却する。 t's space dimension is geometry's manifold dimension.

virtual void MGCurve::ReadMembers ( MGIfstream buf)
protectedvirtual

メンバデータを読み出す関数.

ここでは処理対象となるデータメンバが無いので何も処理をしない。

MGGeometryを再実装しています。

MGLBRep, MGStraight, MGRLBRep, MGEllipse, MGCompositeCurve, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで再実装されています。

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

Rebuild this curve.

引数
how_rebuildintdicates how rebuild be done. =0: no approximation(only parameter change) =1: if this is rational spline(MGRLBRep), reconstructed with new knot configuration as rational spline(MGRLBRep). Otherwise approximated by non-rational spline(MGLBRep) with new knot configuration. =2: approximated by non-rational spline(MGLBRep) with new knot configuration if this is rational spline. If this is not rational spline, same as =1.
parameter_normalizationIndicates how the parameter normalization be done: =0: no parameter normalization. =1: normalize to range=(0., 1.); =2: normalize to make the average length of the 1st derivative is as equal to 1. as possible. =3: specify parameter range in param_range.
toltolerance allowed for the approximation When tol<=0., MGTolerance::line_zero() will be employed.
ordrorder of the new MGLBRep, >=4 is recommended. When order=0 is input, the original order is unchanged if this curve is MGLBRep or MGRLBRep. Otherwise order is set to 4.
param_rangeInput new paramter range, from param_range[0] to param_range[1]. When param_range=0, parameter_normalization is set to 2 and the starting parameter is set to 0.
virtual void MGCurve::remove_knot ( )
virtual

Remove redundant knot, and reduce the b-rep dimension.

ノット削除関数(B表現曲線のみ) トレランスはline_zeroを使用する。元のノットが細かいものほど削除しやすい Remove redundant knot, and reduce the b-rep dimension. The tolerance used is MGTolerance::line_zero().

MGLBRep, MGRLBRep, MGCompositeCurveで再実装されています。

virtual MGCurve& MGCurve::rotate_self ( const MGVector v,
double  ,
const MGPosition = mgORIGIN 
)
virtual

Update curve by rotating around straight line.

指定点を通る指定ベクトルを軸として回転させたものを自身とする。

引数
vVector of the line to rotate around.
std::auto_ptr<MGLBRep> MGCurve::scalePolar ( double  angleBase,
double  angle1,
double  angle2 
) const

Obtain polar-rotated curve of this.

This curve's (x,y) are updated. No other coordinates are unchanged. The returned curve is always MGLBRep. Rotation is performed from angle1 to angle2, around angleBase. That is, when angle1=angle2, no change is done. When angle2 is angleBase, all the data will lie on the straight of from origin to (cos(angleBase), sin(angleBase)).

引数
angleBasebase angle.
angle11st angle.
angle22nd angle.
virtual int MGCurve::sdim ( ) const
pure virtual

Return space dimension.

MGGeometryを実装しています。

MGLBRep, MGRLBRep, MGEllipse, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで実装されています。

virtual MGPosition MGCurve::start_point ( ) const
virtual

Return start point(始点を返却する).

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

virtual MGSurface* MGCurve::sweep ( const MGUnit_vector uvec,
double  start_dist,
double  end_dist 
) const
pure virtual

Return sweep surface from crv.

Returned is a newed MGSurface, must be deleted. The sweep surface is defined as: This curve(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.

引数
uvecSweep Direction.
start_distdistance to start edge.
end_distdistance to end edge.

MGLBRep, MGStraight, MGEllipse, MGRLBRep, MGCompositeCurve, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで実装されています。

virtual int MGCurve::tangent_guess ( double  t0,
double  t1,
const MGPosition P,
double  tg,
double &  t 
) const
virtual

Return tangent point from a point P, given guess starting paramter tg.

Searching is done only from t0 to t1.

引数
t0parameter range of this, starting.
t1Ending. If t0>t1, whole range of this.
PPoint(指定点)
tgGuess parameter values of the two curves
tOutput parameter
void MGCurve::trim_end ( double  t)

Trim the end part of this curve at the parameter t.

The new curve range is [start_of_original, t] t must be inside this parameter rage, else does nothing.

void MGCurve::trim_start ( double  t)

Trim the start part of this curve at the parameter t.

The new curve range is [t,end_of_original] t must be inside this parameter rage, else does nothing.

void MGCurve::trim_start_and_end ( double  ts,
double  te 
)

Trim the start part and end part of this curve at the parameter ts and te.

The new curve range is [ts,te] Both ts and te must be inside this parameter rage.

virtual MGCURVE_TYPE MGCurve::type ( ) const
pure virtual

Return curve type(曲線のタイプを返す).

MGLBRep, MGStraight, MGRLBRep, MGEllipse, MGCompositeCurve, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで実装されています。

virtual MGCurve& MGCurve::unlimit ( )
pure virtual

Unlimit parameter range of the curve(limitをはずす).

MGLBRep, MGStraight, MGRLBRep, MGCompositeCurve, MGEllipse, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで実装されています。

virtual MGCurve& MGCurve::unlimit_end ( )
pure virtual

Unlimit parameter range of the curve to the end point direction.

(終点方向にlimitをはずす)

MGLBRep, MGStraight, MGRLBRep, MGCompositeCurve, MGEllipse, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで実装されています。

virtual MGCurve& MGCurve::unlimit_start ( )
pure virtual

Unlimit parameter range of the curve to the start point direction.

(始点方向にlimitをはずす)

MGLBRep, MGStraight, MGRLBRep, MGCompositeCurve, MGEllipse, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで実装されています。

virtual void MGCurve::update_mark ( )
inlineprotectedvirtual

Mark this as updated.

MGGeometryを再実装しています。

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

MGGeometryを再実装しています。

MGLBRep, MGRLBRep, MGEllipse, MGStraight, MGCompositeCurve, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで再実装されています。

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

メンバデータを書き込む関数.

ここでは処理対象となるデータメンバが無いので何も処理をしない。

MGGeometryを再実装しています。

MGLBRep, MGStraight, MGRLBRep, MGEllipse, MGCompositeCurve, MGTrimmedCurve, MGSurfCurve, MGBSumCurveで再実装されています。


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