5 #ifndef _MGCompositeCurve_HH_
6 #define _MGCompositeCurve_HH_
9 #include "mg/Interval.h"
10 #include "mg/Position_list.h"
11 #include "mg/Straight.h"
12 #include "mg/RLBRep.h"
13 #include "mg/Ellipse.h"
15 #include "mg/SurfCurve.h"
16 #include "mg/BSumCurve.h"
89 bool is_same_curve(
const MGCurve& curve2)
const;
106 int parameter_normalization=0,
113 bool neglectMulti=
false
122 const_iterator
begin()
const{
return m_composite.begin();};
123 iterator
begin(){
return m_composite.begin();};
170 std::vector<double>& vecComSpan,
193 std::vector<double>& vecComSpan
285 const_iterator
end()
const{
return m_composite.end();};
286 iterator
end(){
return m_composite.end();};
308 int find(
double t,
bool right_continuous=
true)
const;
339 double knot(
int i)
const;
349 double length(
double t1,
double t2)
const;
377 const MGVector& norm_vector = mgNULL_VEC
390 const MGVector& norm_vector = mgNULL_VEC
402 const MGVector& norm_vector = mgNULL_VEC
415 const MGVector& norm_vector = mgNULL_VEC
553 size_t project_onto_surface(
606 std::ostream&
out(std::ostream&)
const;
611 int SubordinateEntitySwitch=0
627 std::auto_ptr<MGCurve>
oneD(
641 std::string
whoami()
const{
return "CompositeCurve";};
645 container_type m_composite;
650 MGBox* compute_box()
const;
virtual MGCurve & operator=(const MGCurve &gel2)
Assignment.
Definition: Curve.h:84
virtual MGCurve & unlimit_start()=0
Unlimit parameter range of the curve to the start point direction.
virtual long identify_type() const =0
Return This object's typeID.
virtual MGCurve & unlimit()=0
Unlimit parameter range of the curve(limitをはずす).
MGTrimmedCurve is a part of an original curve of a limitted parameter range.
Definition: TrimmedCurve.h:50
virtual void remove_knot()
Remove redundant knot, and reduce the b-rep dimension.
MGCurve is an abstract class which represents a whole curve.
Definition: Curve.h:63
MGPlane is infinite plane in 3D space.
Definition: Plane.h:38
MGTransf represents a transformation of a space dimension.
Definition: Transf.h:35
virtual MGCurve * copy_change_dimension(int sdim, int start1=0, int start2=0) const =0
Construct new curve object by changing the original object's space dimension.
MGCylinder is a Cylinder in 3D space.
Definition: Cylinder.h:37
virtual int order() const =0
Returns the order.
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 out_to_IGES(MGIgesOfstream &igesfile, int SubordinateEntitySwitch=0) const
Definition: Gel.h:93
virtual MGCParam_list perps(const MGPosition &P) const
Compute all foot points of the perpendicular line from point to the curve.
virtual int perp_guess(double t0, double t1, const MGPosition &P, double tg, double &t) const
Return perpendicular point from a point P.
virtual void negate()=0
Negate the curve direction(曲線の方向を反転する).
std::deque< MGCurve * > container_type
Definition: CompositeCurve.h:42
virtual double negate_param(double t) const =0
Obtain the parameter value to t when this curve is negated by "negate()".
virtual void drawSE(mgVBO &vbo, double span_length, double t0, double t1) const
Draw this curve into vbo, approximating with polyline.
virtual MGPvector< MGCurve > offset(double ofs_value, const MGVector &norm_vector=mgNULL_VEC) const
Offset of costant 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.
MGCompositeCurve is a composite of other leaf curves.
Definition: CompositeCurve.h:39
MGCurve & curve(int i)
Definition: CompositeCurve.h:245
virtual MGCurve & operator+=(const MGVector &v)=0
Object transformation.
virtual MGCurve * clone() const =0
Construct new geometry object by copying to newed area.
virtual MGCurve & coordinate_exchange(int i, int j)=0
Exchange ordering of the coordinates.
container_type::reverse_iterator reverse_iterator
Definition: CompositeCurve.h:45
MGIfstream is a class to read the serialized data generated by MGOfstream.
Definition: Ifstream.h:30
virtual void display_break_points(mgSysGL &sgl) const
virtual int sdim() const =0
Return space dimension.
container_type::const_iterator const_iterator
Definition: CompositeCurve.h:44
friend class MGCompositeCurve
Definition: Curve.h:1255
MGLBRep is a class for B-SPline representation.
Definition: LBRep.h:41
MGIgesDirectoryEntry describes a directory entry section of an IGES file.
Definition: IgesDirectoryEntry.h:20
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.
Vector of a general n space dimension.
Definition: Vector.h:26
virtual int bdim() const =0
Returns B-Rep Dimension.
Defines a Box of any space dimendion.
Definition: Box.h:34
Define MGBSumCurve Class(Boolean sum curve of three curves).
Definition: BSumCurve.h:28
container_type::const_reverse_iterator const_reverse_iterator
Definition: CompositeCurve.h:46
virtual void change_range(double t1, double t2)=0
Change parameter range.
MGPosition_list perps(const MGBSumCurve &crv2) const
Definition: CompositeCurve.h:497
virtual MGCurve & limit(const MGInterval &rng)=0
Update this by limiting the parameter range of the curve.
MGGel is an abstract class which represents a group element.
Definition: Gel.h:53
virtual void ReadMembers(MGIfstream &buf)
メンバデータを読み出す関数.
virtual MGVector eval(double, int nderiv=0, int left=0) const =0
Evaluate n'th derivative data.
iterator begin()
Definition: CompositeCurve.h:123
MGStraight is a curve of any space dimension, represent a straight line.
Definition: Straight.h:49
virtual MGCurve * part(double t1, double t2, int multiple=0) const =0
Compute part of this curve from parameter t1 to t2.
std::string whoami() const
Definition: CompositeCurve.h:641
virtual double knot(int i) const =0
Access to i-th element of knot.
Interval of 1 dimension, i.e. MGInterval is a real line.
Definition: Interval.h:22
virtual double param_normalize(double t) const =0
Normalize parameter value t to the nearest knot if their distance is within tolerance.
MG_DLL_DECLR MGVector operator*(const MGVector &v, const MGMatrix &m)
const_iterator begin() const
Definition: CompositeCurve.h:122
MGPosition_list perps(const MGStraight &crv2) const
Definition: CompositeCurve.h:492
virtual void approximate_as_LBRep(MGLBRep &lb, int ordr=0, int parameter_normalization=0, bool neglectMulti=false) const
Approximate this curve as a MGLBRep.
Represent a positional data.
Definition: Position.h:28
virtual double param_s() const =0
Return starting parameter value.
MGSurface is an abstract class of 3D surface.
Definition: Surface.h:54
const_iterator end() const
Definition: CompositeCurve.h:285
MGCSisect_list defines linked list of MGCSisect.
Definition: CSisect_list.h:22
Defines Knot vector of B-Representation.
Definition: KnotVector.h:28
virtual MGCurve & unlimit_end()=0
Unlimit parameter range of the curve to the end point direction.
Defines Boolean sum surface.
Definition: BSumSurf.h:26
virtual double closest(const MGPosition &point) const
Compute the closest point parameter value of this curve from a point.
virtual MGSurface * sweep(const MGUnit_vector &uvec, double start_dist, double end_dist) const =0
Return sweep surface from crv.
MGCompositeCurve(Composite Curve)
Definition: MGCL.h:151
container_type::iterator iterator
Definition: CompositeCurve.h:43
virtual MGCurve & operator-=(const MGVector &v)=0
iterator end()
Definition: CompositeCurve.h:286
MGParam_Vector provides a list to store parameters of a curve.
Definition: CParam_list.h:18
int number_of_curves() const
Get the number of included curves in this CompositeCurve.
Definition: CompositeCurve.h:363
MGSphere is a Sphere in 3D space.
Definition: Sphere.h:42
virtual void WriteMembers(MGOfstream &buf) const
メンバデータを書き込む関数.
Defines a list of MGCCisect(curve to curve intersection).
Definition: CCisect_list.h:20
virtual std::ostream & out(std::ostream &) const
Output virtual function.
virtual const MGKnotVector & knot_vector() const =0
Returns the knot vector of the curve.
virtual void extend(double length, bool start=false)=0
Extrapolate this curve by an (approximate) chord length.
MGFSurface is an abstract class to provide the comman interfaces to MGFace and MGSurface.
Definition: FSurface.h:33
MGOfstream is a class to serialize all of the subclasses of MGGel.
Definition: Ofstream.h:31
Defines Rational Line B-Representation.
Definition: RLBRep.h:32
virtual MGCurve & change_dimension(int sdim, int start1=0, int start2=0)=0
Changing this object's space dimension.
MGCURVE_TYPE
Curve type(曲線の種類).
Definition: MGCL.h:143
MGPosition_list provides a list of Positions.
Definition: Position_list.h:27
virtual MGCurve & operator*=(double scale)=0
MGCompositeCurve()
Void constructor(初期化なしでオブジェクトを作成する。)
Definition: CompositeCurve.h:54
virtual double length() const
Compute whole curve length.
Definition: Curve.h:624
MGPosition_list perps(const MGLBRep &crv2) const
Definition: CompositeCurve.h:495
MGOgesIfstream write out to *.iges file, transforming MGCL objects to IGES objects.
Definition: IgesOfstream.h:26
Defines Surface B-Representation of rational form.
Definition: RSBRep.h:38
virtual bool on(const MGPosition &point, double &t) const
Test if given point is on the curve or not.
const MGCurve & curve(int i) const
Get the i-th curve in this CompositeCurve.
Definition: CompositeCurve.h:244
virtual bool operator==(const MGCompositeCurve &crv) const
Comparison.
Defines Surface B-Representation, that is , B-Spline surface.
Definition: SBRep.h:48
virtual std::auto_ptr< MGCurve > oneD(const double g[4]) const =0
Obtain transformed 1D curve expression of this curve.
MGPosition_list perps(const MGRLBRep &crv2) const
Definition: CompositeCurve.h:493
virtual MGCurve * copy_as_nurbs() const =0
copy as a newed curve.
MGEllipse is a class to define an ellipse of 2D or 3D.
Definition: Ellipse.h:38
MGPosition_list perps(const MGCurve &crv2) const
Definition: CompositeCurve.h:491
virtual int divide_multi(MGPvector< MGCurve > &crv_list, int multiplicity=-1) const
Divide this curve at the designated knot multiplicity point.
virtual bool operator<(const MGGel &gel2) const =0
virtual MGBox box_limitted(const MGInterval &) const =0
Return minimum box that includes the curve of parameter interval.
virtual MGCParam_list intersect_1D(double f, int coordinate=0) const
Compute intersection point of 1D sub curve of original curve.
virtual double param_e() const =0
Return ending parameter value.
virtual double curvilinear_integral() const
Definition: Curve.h:299
MGHHisect is to represent one continuous intersection line of shells.
Definition: HHisect.h:43
virtual MGCCisect_list isect(const MGCurve &curve2) const =0
Intersection of Curve and other geometry.
virtual int intersect_dnum() const =0
Provide divide number of curve span for function intersect.
mgSysGL is a class to provide a facility to draw temporal pictures.
Definition: sysGL.h:26
virtual bool is_planar(MGPlane &plane) const
Test if this cure is planar or not.
OpenGL 4 用描画のためのクラス, in other words, display list.
Definition: VBO.h:76
virtual void display_control_polygon(mgSysGL &sgl) const
Definition: Gel.h:194
MGCURVE_TYPE type() const
Return curve type(曲線のタイプを返す)
Definition: CompositeCurve.h:592
virtual void polygonize(double error, MGLBRep &lb2) const
Approximate this curve by a polyline and output to lb2.
virtual void display_curvatures(mgSysGL &sgl, double scale, int density, bool use_radius) const
MGPosition_list perps(const MGEllipse &crv2) const
Definition: CompositeCurve.h:494
Define a unit vector, is a MGVector.
Definition: Unit_vector.h:17
double length() const
Compute whole curve length.
Definition: CompositeCurve.h:350
MGSurfCurve is a curve on a surface.
Definition: SurfCurve.h:43
MGMatrix is a matix of m by m, where m is the space dimension.
Definition: Matrix.h:30