MGCL V10  V10
MGCL V10
 全て クラス 名前空間 関数 変数 型定義 列挙型 列挙値 フレンド グループ ページ
LBRep.h
1 /********************************************************************/
2 /* Copyright (c) 2015 DG Technologies Inc. and Yuzi Mizuno */
3 /* All rights reserved. */
4 /********************************************************************/
5 #ifndef _MGLBRep_HH_
6 #define _MGLBRep_HH_
7 
8 #include "mg/MGCL.h"
9 #include "mg/Vector.h"
10 #include "mg/KnotVector.h"
11 #include "mg/BPointSeq.h"
12 #include "mg/Curve.h"
13 
14 // MGLBRep.h
15 // Forward Declaration
16 class MGInterval;
17 class MGNDDArray;
18 class MGPosition;
19 class MGOscuCircle;
20 class MGKnotArray;
21 class MGCParam_list;
22 class MGPosition_list;
23 class MGLBRepEndC;
24 class MGRLBRep;
25 class MGPPRep;
26 class MGSBRepTP;
27 class MGIfstream;
28 class MGOfstream;
29 
30 // Defines Line B-Representation.
36 
41 class MG_DLL_DECLR MGLBRep: public MGCurve{
42 
43 public:
44 
46 MG_DLL_DECLR friend MGLBRep operator+ (const MGVector& v, const MGLBRep& lb);
47 
49 MG_DLL_DECLR friend MGLBRep operator* (double scale, const MGLBRep&);
50 
57 MG_DLL_DECLR friend MGPvector<MGLBRep> rebuild_knot(
58  const std::vector<const MGCurve*>& brepl,
59  int order = 0,
60  MGLBRep** tp=0
61 );
62 
64 MG_DLL_DECLR friend MGPvector<MGLBRep> rebuild_knot(
65  const MGPvector<MGCurve>& brepl,
66  int order = 0,
67  MGLBRep** tp=0
68 );
69 
72 MG_DLL_DECLR friend void remove_knot_curves(
73  MGPvector<MGLBRep>& brepList,
74  MGLBRep** tp=0,
75  double tp_length=0.
77 );
79 
81 
83 MGLBRep():MGCurve(),m_line_bcoef(),m_knot_vector(){;}
84 
86 MGLBRep(int bdim,
87  int order,
88  int sdim
89 ):MGCurve(),m_line_bcoef(bdim,sdim),m_knot_vector(order, bdim){;}
90 
93 MGLBRep(
94  const MGKnotVector& t,
95  const MGBPointSeq& bcoef
96 );
97 
98 // **** 1. Interpolation Constructor ****
99 
105 explicit MGLBRep(
106  const MGBPointSeq& points,
107  int order=4,
108  bool circular=false
109 );
110 
113 MGLBRep(
114  const MGNDDArray& tau,
115  const MGBPointSeq& points,
116  int order=4,
117  double ratio=-1.
118 );
123 
126 MGLBRep(
127  const MGNDDArray& tau,
128  const MGBPointSeq& points,
129  const MGKnotVector& t
130 );
131 
144 MGLBRep(
145  const MGLBRepEndC& begin,
146  const MGLBRepEndC& end,
147  const MGNDDArray& tau,
148  const MGBPointSeq& value
149 );
150 
163 MGLBRep(
164  int order,
165  const MGLBRepEndC& begin,
166  const MGLBRepEndC& end,
167  const MGNDDArray& tau,
168  const MGBPointSeq& value
169 );
170 
186 MGLBRep(
187  const MGLBRepEndC& begin,
188  const MGLBRepEndC& end,
189  const MGNDDArray& tau,
190  const MGBPointSeq& value,
191  const MGKnotVector& t
192 );
193 
202 MGLBRep(
203  const MGLBRepEndC& begin,
204  const MGLBRepEndC& end,
205  const MGBPointSeq& points,
206  const int* point_kind,
207  const MGOscuCircle& circle
208 );
209 
210 // **** 2. Approximation Constructor ****
211 
214 explicit MGLBRep(
215  const MGCurve& crv,
216  int order=0,
217  int parameter_normalization=0,
225  bool neglectMulti=false
226 );
229 
233 MGLBRep(
234  const MGLBRep& old_brep,
235  const MGKnotVector& t
236 );
237 
242 MGLBRep(
243  const MGCurve& old_curve,
244  const MGKnotVector& t
245 );
246 
254 MGLBRep(
255  int coordinate1,
256  const MGLBRep& brep1,
258  int coordinate2,
260  const MGLBRep& brep2
262 );
265 
270 MGLBRep(
271  const MGNDDArray& tau,
272  const MGBPointSeq& points,
273  const double* weight,
274  const MGKnotVector& t
275 );
276 
277 // **** 3.Conversion Constructor.****
278 
280 MGLBRep(const MGPPRep& pprep);
281 
286 MGLBRep(
287  const MGPPRep& pprep,
288  const MGKnotVector t
289 );
290 
292 MGLBRep(
293  const MGLBRep& old_brep,
294  const MGKnotArray& knots
295 );
296 
303 MGLBRep(
304  const MGLBRep& brep1,
305  int continuity,
306  int which,
307  const MGLBRep& brep2
313 );
314 
320 MGLBRep(
321  double t1,
322  double t2,
323  const MGLBRep& old_brep,
324  int multiple=0
325 );
327 
335 MGLBRep(
336  int id1,
337  int id2,
338  const MGLBRep& old_brep
339 );
340 
343 MGLBRep(
344  int dim,
345  const MGLBRep& lbrep,
346  int start1=0,
347  int start2=0
348 );
349 
350 //Copy constructor.
351 //MGLBRep(const MGLBRep& lb2); ///We can use default copy constructor.
352 
353 //Destructor
354 // ~MGLBRep(); ///We can use default destructor.
355 
356 //Virtual Destructor
357 ~MGLBRep(){;};
358 
360 
361 //Assignment.
362 //MGLBRep& operator= (const MGLBRep& lb2);//We can use default assignment.
363 
367 MGLBRep& operator=(const MGGel& gel2);
368 
370 MGLBRep& operator=(const MGLBRep& el2);
371 
373 MGLBRep operator+ (const MGVector& ) const;
374 MGLBRep operator- (const MGVector& ) const;
375 MGLBRep operator* (double) const;
376 MGLBRep operator* (const MGMatrix& ) const;
377 MGLBRep operator* (const MGTransf& ) const;
378 
380 MGLBRep& operator+=(const MGVector& v);
381 MGLBRep& operator-=(const MGVector& v);
382 MGLBRep& operator*=(double scale);
383 MGLBRep& operator*=(const MGMatrix& mat);
384 MGLBRep& operator*=(const MGTransf& tr);
385 
387 bool operator==(const MGLBRep& gel2)const;
388 bool operator==(const MGGel& gel2)const;
389 bool operator<(const MGLBRep& gel2)const;
390 bool operator<(const MGGel& gel2)const;
391 bool operator==(const MGRLBRep& gel2)const;
392 
394 
401  MGLBRep& lb,
402  int ordr=0,
403  int parameter_normalization=0,
410  bool neglectMulti=false
411 )const;
414 
416 int bdim() const{return m_line_bcoef.length();}
417 
420 MGBox box_limitted(const MGInterval& l) const;
421 
423 const MGBox& box_unlimit() const;
424 
431 void buildSRSmoothedLB_of_FreeEnd(
432  const MGNDDArray& tau,
433  const MGBPointSeq& y,
434  const double* dy,
435  double deviation,
436  bool dev_is_sum=false
442 );
443 
449 void buildSRSmoothedLB_of_1stDeriv(
450  const MGLBRepEndC& begin,
451  const MGLBRepEndC& end,
452  const MGNDDArray& tau,
454  const MGBPointSeq& y,
455  const double* dy,
456  double deviation,
457  bool dev_is_sum=false
463 );
464 
467  int sdim,
468  int start1=0,
469  int start2=0
470 );
471 
474 void change_range(
475  double t1,
476  double t2
477 );
478 
483 MGLBRep& change_order(
484  int order
485 );
486 
488 MGLBRep& change_order_by_approximation(
489  int ordr
490 );
491 
494 double& coef(int i, int j){return m_line_bcoef(i,j);}
495 
498 double coef(int i, int j) const{return m_line_bcoef(i,j);}
499 
501 MGVector coef(int i) const{return m_line_bcoef(i);}
502 
504 const double* coef_data(int i=0, int j=0)const{return m_line_bcoef.data(i,j);}
505 double* coef_data(int i=0, int j=0){return m_line_bcoef.data(i,j);}
506 
513 void connect(
514  int continuity,
515  int which,
516  const MGLBRep& brep2
521 );
522 
532 int continuity(
533  const MGLBRep& brep2,
534  int& which,
535  double& ratio
541 ) const;
543 
546 MGLBRep& coordinate_exchange(int j1, int j2);
547 
550 virtual MGLBRep* clone()const;
551 
557 void convert_to_Bezier(MGLBRep& bezier)const;
558 
563 MGCurve* copy_as_nurbs() const{return clone();};
564 
567 MGLBRep* copy_as_LBRep() const;
568 
573  int sdim,
574  int start1=0,
575  int start2=0
576 )const;
577 
581 MGCurve* copy_limitted(const MGInterval& prange) const;
582 
586 double curvilinear_integral(double t1, double t2) const;
587 #ifdef __sgi
588  double curvilinear_integral()const
589  {return curvilinear_integral(param_s(), param_e());}
590 #endif
591 
594 int divide_multi(
595  MGPvector<MGCurve>& crv_list,
596  int multiplicity=-1
597 ) const;
600 
602 void display_control_polygon(mgSysGL& sgl)const;
603 
604 
605 virtual void drawSE(
606  mgVBO& vbo,
607  double span_length,
608  double t0,
609  double t1
610 )const;
612 
615 MGVector eval(
616  double,
617  int nderiv=0,
618  int leftcon=0
619 )const;
621 
624 void eval_all(
625  double,
626  MGPosition&,
627  MGVector&,
628  MGVector&
629 )const;
630 
635 void eval_all(
636  double tau,
637  int nderiv,
638  double* deriv,
639  int leftcon=0
640 )const;
641 
643 void eval_line(
644  MGENDCOND begin,
645  MGENDCOND end,
646  const MGNDDArray& tau,
647  MGBPointSeq& value
648 )const;
649 
652  const MGNDDArray& tau,
653  MGBPointSeq& value
654 )const{eval_line(MGENDC_NO,MGENDC_NO,tau,value);};
655 
658 MGLBRep& extend(
659  int start,
660  double length,
662  double dk
663 );
669 
672 void extend(
673  double length,
674  bool start=false
675 );
677 
679 MGLBRep& extend_with_parameter(
680  double tau,
681  double dk
684 );
686 
690 bool get_control_points(
691  MGBPointSeq& cpoints
692 )const;
693 
695 long identify_type() const;
696 
708 const MGLBRep* is_Bezier(int ordr=0)const;
709 
713 bool is_coplanar(const MGCurve& curve2, MGPlane& plane)const;
714 
718 bool is_planar(MGPlane& plane)const;
719 
722 MGCCisect_list isect(const MGCurve& curve2) const;
723 MGCCisect_list isect(const MGStraight& curve2)const;
724 MGCCisect_list isect(const MGRLBRep& curve2)const;
725 MGCCisect_list isect(const MGEllipse& curve2)const;
726 MGCCisect_list isect(const MGLBRep& curve2)const;
727 MGCCisect_list isect(const MGSurfCurve& curve2)const;
728 MGCCisect_list isect(const MGBSumCurve& curve2)const;
729 
731 MGCSisect_list isect(const MGSurface& surf) const;
732 MGCSisect_list isect(const MGPlane& surf) const;
733 MGCSisect_list isect(const MGSphere& surf)const;
734 MGCSisect_list isect(const MGCylinder& surf)const;
735 MGCSisect_list isect(const MGSBRep& surf)const;
736 MGCSisect_list isect(const MGRSBRep& surf)const;
737 MGCSisect_list isect(const MGBSumSurf& surf)const;
738 
741 double& knot(int i){return m_knot_vector(i);};
742 
745 double knot(int i) const{return m_knot_vector(i);};
746 
749 const double* knot_data() const{return m_knot_vector.data();};
750 double* knot_data(){return m_knot_vector.data();};
751 
754 const MGKnotVector& knot_vector() const{return m_knot_vector;};
755 
758 MGKnotVector& knot_vector(){return m_knot_vector;};
759 
760 //Update this by limiting the parameter range of the curve.
761 virtual MGLBRep& limit(const MGInterval& i1);
762 
764 const MGBPointSeq& line_bcoef() const{return m_line_bcoef;};
765 
768  update_mark();
769  return m_line_bcoef;
770 };
771 
787 MGLBRep& move(
788  int move_kind,
789  double move_point_param,
790  const MGPosition& to_point,
791  const double fix_point[2]
792 );
793 
795 virtual void negate();
796 
798 double negate_param(double t)const;
799 
801 int order() const{return m_knot_vector.order();};
802 
804 double param_e() const;
805 
807 double param_s() const;
808 
811 double param_normalize(double t) const;
812 
816 MGCurve* part(
817  double t1,
818  double t2,
819  int multiple=0
820 )const;
822 
828  const MGPosition& point
829 )const;
830 
838 MGPosition_list perps(const MGCurve& crv2)const;
839 MGPosition_list perps(const MGStraight& crv2)const;
840 MGPosition_list perps(const MGRLBRep& crv2)const;
841 MGPosition_list perps(const MGEllipse& crv2)const;
842 MGPosition_list perps(const MGLBRep& crv2)const;
843 MGPosition_list perps(const MGSurfCurve& crv2)const;
844 MGPosition_list perps(const MGBSumCurve& crv2)const;
845 
851 int planar(
852  MGPlane& plane
853  , MGStraight& line
855  , MGPosition& point
856 )const;
857 
881 int project(
882  const MGFSurface& surf, //given surface.
883  MGPvector<MGCurve>& vec_crv_uv, //uv projection curve will be appended.
884  MGPvector<MGCurve>& vec_crv, //3d projection curve will be appended.
885  const MGVector& vec //projection vector.
886  //if vec = NULL then calculate perpendicular project.
887 )const;
888 int project(
889  const MGPlane& plane, //given surface.
890  MGPvector<MGCurve>& vec_crv_uv, //uv projection curve will be appended.
891  MGPvector<MGCurve>& vec_crv, //3d projection curve will be appended.
892  const MGVector& vec //projection vector.
893  //if vec = NULL then calculate perpendicular project.
894 )const;
895 
898 int reduce(
899  int ndec
900 );
901 
904 MGLBRep& refine(
905  const MGKnotVector& t
906 );
907 
911 void remove_knot(){remove_knot(0,0);};
912 
916 void remove_knot(int j, int snum);
917 
922 int remove_knot_one(
923  double line0,
924  int nKnot,
926  double& totalTol,
927  int& num_knot,
928  int sid=0,
929  int snum=0
930 );
931 
933 int sdim() const{return m_line_bcoef.sdim();};
934 
941  const MGUnit_vector& uvec,
942  double start_dist,
943  double end_dist
944 )const;
945 
949 
957 void updatePolarCoordinates2Ordinary();
958 
960 MGCurve& unlimit(){return *this;};
961 
964 MGCurve& unlimit_end(){return *this;};
965 
968 MGCurve& unlimit_start(){return *this;};
969 
972 
974 int out_to_IGES(
975  MGIgesOfstream& igesfile,
976  int SubordinateEntitySwitch=0
977 )const;
978 
980 virtual std::ostream& out(std::ostream&)const;
981 
982 std::string whoami()const{return "LBRep";};
983 
984 protected:
985 
990  double f,
991  int coordinate=0
992 )const;
994 
999 std::auto_ptr<MGCurve> oneD(
1000  const double g[4]
1001 )const;
1002 
1005 void ReadMembers(MGIfstream& buf);
1006 
1009 void WriteMembers(MGOfstream& buf)const;
1010 
1011 private:
1012 
1016 MGLBRep(const MGRLBRep& rlb, const MGNDDArray& tau);
1017 
1020 MGPosition closest_mix(
1021  int coordinate1,
1022  int coordinate2,
1023  double tau,
1024  const MGPosition& P,
1026  const MGPosition& F
1027 )const;
1029 
1031 MGBox* compute_box() const;
1032 
1034 void drawgl(
1035  mgVBO& vbo,
1036  double dl,
1037  double tstart, double tend
1038 )const;
1039 
1041 int intersect_dnum()const;
1042 
1045 MGCCisect_list isect_by_split_to_C1(const MGCurve& crv2)const;
1046 
1049 MGCCisect_list C1isect(const MGCurve& crv2) const;
1050 MGCCisect_list C1isect(const MGStraight& crv2) const;
1051 
1054 MGPosition_list C1perps(const MGCurve& crv2)const;
1055 
1058 MGCCisect_list isect_order2(const MGCurve& crv2) const;
1059 MGCSisect_list isect_order2(const MGSurface& crv2) const;
1060 
1062 MGCCisect_list isect_with_noCompoSC(const MGSurfCurve& curve2)const;
1063 
1065 MGCCisect_list isect_withC1LB(const MGLBRep& crv2)const;
1066 
1069 MGCSisect_list isect_by_split_to_C1(const MGSurface& surf)const;
1070 
1073 MGPosition_list perps_by_split_to_C1(const MGCurve& crv2)const;
1074 
1079  const MGLBRep& lbC1
1080 )const;
1081 
1085 
1088 MGPosition_list perps_order2(const MGCurve& crv)const;
1089 
1092 MGPosition_list perps_1span(const MGLBRep& lb2)const;
1093 
1095 private:
1096  MGKnotVector m_knot_vector;
1097  MGBPointSeq m_line_bcoef;
1098 
1099 friend class MGCurve;
1100 friend class MGStraight;
1101 friend class MGRLBRep;
1102 
1103 };
1104  // end of GEO group
1106 #endif
double * coef_data(int i=0, int j=0)
Definition: LBRep.h:505
virtual MGCurve & operator=(const MGCurve &gel2)
Assignment.
Definition: Curve.h:84
virtual long identify_type() const =0
Return This object's typeID.
Defines PP-Represetation of a spline.
Definition: PPRep.h:32
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
virtual void convert_to_Bezier(MGLBRep &bezier) const
Convert this curve to Bezier curve.
MGPlane is infinite plane in 3D space.
Definition: Plane.h:38
Defines Array of OscuCircle data.
Definition: OscuCircle.h:34
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
MGBPointSeq & line_bcoef()
Returns the B-coef's(LHS version).
Definition: LBRep.h:767
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 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()".
virtual void drawSE(mgVBO &vbo, double span_length, double t0, double t1) const
Draw this curve into vbo, approximating with polyline.
no end cond(only positional data)
Definition: MGCL.h:223
int order() const
Returns the order.
Definition: LBRep.h:801
virtual void update_mark()
Mark this as updated.
Definition: Curve.h:1173
virtual MGCurve & operator+=(const MGVector &v)=0
Object transformation.
virtual MGCurve * clone() const =0
Construct new geometry object by copying to newed area.
const MGBPointSeq & line_bcoef() const
Returns the B-coef's(RHS version).
Definition: LBRep.h:764
virtual MGCurve & coordinate_exchange(int i, int j)=0
Exchange ordering of the coordinates.
int bdim() const
Returns B-Rep Dimension.
Definition: LBRep.h:416
virtual void eval_all(double, MGPosition &, MGVector &, MGVector &) const
Compute position, 1st and 2nd derivatives.
MGIfstream is a class to read the serialized data generated by MGOfstream.
Definition: Ifstream.h:30
MGLBRep is a class for B-SPline representation.
Definition: LBRep.h:41
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
void remove_knot()
Definition: LBRep.h:911
virtual MGCCisect_list isect_withC1LB(const MGLBRep &curve2) const
Compute intersections with MGLBRep curve2 that does not have C0 continuity in it. ...
double * knot_data()
Definition: LBRep.h:750
Defines a Box of any space dimendion.
Definition: Box.h:34
MGCurve & unlimit()
limitをはずす。
Definition: LBRep.h:960
Define MGBSumCurve Class(Boolean sum curve of three curves).
Definition: BSumCurve.h:28
virtual void change_range(double t1, double t2)=0
Change parameter range.
std::string whoami() const
Definition: LBRep.h:982
virtual MGCurve & limit(const MGInterval &rng)=0
Update this by limiting the parameter range of the curve.
virtual MGCurve * copy_limitted(const MGInterval &prange) const
Construct new curve object limitting the parameter range to prange.
MGGel is an abstract class which represents a group element.
Definition: Gel.h:53
virtual void ReadMembers(MGIfstream &buf)
メンバデータを読み出す関数.
double & coef(int i, int j)
Definition: LBRep.h:494
virtual MGVector eval(double, int nderiv=0, int left=0) const =0
Evaluate n'th derivative data.
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.
Interval of 1 dimension, i.e. MGInterval is a real line.
Definition: Interval.h:22
MGVector coef(int i) const
Extract (i,j)element for 0<=j
Definition: LBRep.h:501
virtual double param_normalize(double t) const =0
Normalize parameter value t to the nearest knot if their distance is within tolerance.
~MGLBRep()
Definition: LBRep.h:357
MG_DLL_DECLR MGVector operator*(const MGVector &v, const MGMatrix &m)
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.
virtual MGCCisect_list isect_with_noCompoSC(const MGSurfCurve &curve2) const
isect with SurfCurve whose m_curve is not a MGTrimmedCurve of MGCompositeCurve.
MGLBRep()
Default(dummy) constructor.
Definition: LBRep.h:83
MGSurface is an abstract class of 3D surface.
Definition: Surface.h:54
MGCURVE_TYPE type() const
Definition: LBRep.h:948
MGCSisect_list defines linked list of MGCSisect.
Definition: CSisect_list.h:22
Defines Knot vector of B-Representation.
Definition: KnotVector.h:28
Defines Boolean sum surface.
Definition: BSumSurf.h:26
virtual MGSurface * sweep(const MGUnit_vector &uvec, double start_dist, double end_dist) const =0
Return sweep surface from crv.
virtual MGCurve & operator-=(const MGVector &v)=0
Defines BPoint seq of a space dimension and of a capacity.
Definition: BPointSeq.h:38
MGParam_Vector provides a list to store parameters of a curve.
Definition: CParam_list.h:18
B-Spline(MGLBRep). スプライン
Definition: MGCL.h:147
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 void extend(double length, bool start=false)=0
Extrapolate this curve by an (approximate) chord length.
double & knot(int i)
Definition: LBRep.h:741
MGFSurface is an abstract class to provide the comman interfaces to MGFace and MGSurface.
Definition: FSurface.h:33
virtual bool is_coplanar(const MGCurve &curve2, MGPlane &plane) const
Test if this cure is co-planar with the 2nd curve curve2.
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
MGLBRep(int bdim, int order, int sdim)
Dummy constructor that specifies area length.
Definition: LBRep.h:86
const double * knot_data() const
Definition: LBRep.h:749
MGPosition_list provides a list of Positions.
Definition: Position_list.h:27
virtual MGCurve & operator*=(double scale)=0
int sdim() const
Returns the space dimension.
Definition: LBRep.h:933
Defines End Condition of Line B-Representation.
Definition: LBRepEndC.h:34
MGOgesIfstream write out to *.iges file, transforming MGCL objects to IGES objects.
Definition: IgesOfstream.h:26
MGCurve & unlimit_start()
Definition: LBRep.h:968
Defines Surface B-Representation of rational form.
Definition: RSBRep.h:38
virtual const MGLBRep * is_Bezier(int ordr=0) const
Test if this is a Bezier Curve.
virtual bool get_control_points(MGBPointSeq &cpoints) const
Extracts control points.
Definition: Curve.h:455
MGKnotVector & knot_vector()
Definition: LBRep.h:758
double coef(int i, int j) const
Definition: LBRep.h:498
friend class MGLBRep
Definition: Curve.h:1252
double knot(int i) const
Definition: LBRep.h:745
MGENDCOND
End condition to get spline by interpolation.
Definition: MGCL.h:219
virtual bool operator==(const MGCompositeCurve &crv) const
Comparison.
Defines non-decreasing double data array.
Definition: NDDArray.h:27
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.
MGEllipse is a class to define an ellipse of 2D or 3D.
Definition: Ellipse.h:38
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.
MGCurve & unlimit_end()
Definition: LBRep.h:964
void eval_line(const MGNDDArray &tau, MGBPointSeq &value) const
Evaluate line data at data point seq.(BLELIN)
Definition: LBRep.h:651
virtual MGCParam_list intersect_1D(double f, int coordinate=0) const
Compute intersection point of 1D sub curve of original curve.
Defines Array of Knots.
Definition: KnotArray.h:26
virtual double param_e() const =0
Return ending parameter value.
Defines Tangent Plane Line B-Representation Class.
Definition: SBRepTP.h:28
virtual double curvilinear_integral() const
Definition: Curve.h:299
virtual MGCCisect_list isect(const MGCurve &curve2) const =0
Intersection of Curve and other geometry.
virtual MGPosition_list perps_withC1LB(const MGLBRep &lbC1) const
Perpendicular points with C1 conitnuity LBRep.
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.
MGCurve * copy_as_nurbs() const
Definition: LBRep.h:563
virtual void eval_line(const MGNDDArray &tau, MGBPointSeq &value) const
Evaluate line data at data point tau.
OpenGL 4 用描画のためのクラス, in other words, display list.
Definition: VBO.h:76
virtual void display_control_polygon(mgSysGL &sgl) const
Definition: Gel.h:194
virtual MGPosition_list perps_with_noCompoSC(const MGSurfCurve &curve2) const
Perpendicular points of this to curve2.
const double * coef_data(int i=0, int j=0) const
Returns a pointer to the line b-coef data.
Definition: LBRep.h:504
const MGKnotVector & knot_vector() const
Definition: LBRep.h:754
Define a unit vector, is a MGVector.
Definition: Unit_vector.h:17
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