MGCL V10  V10
MGCL V10
 全て クラス 名前空間 関数 変数 型定義 列挙型 列挙値 フレンド グループ ページ
SBRep.h
1 /********************************************************************/
2 /* Copyright (c) 2015 DG Technologies Inc. and Yuzi Mizuno */
3 /* All rights reserved. */
4 /********************************************************************/
5 #ifndef _MGSBRep_HH_
6 #define _MGSBRep_HH_
7 
8 #include <assert.h>
9 #include "mg/MGCL.h"
10 #include "mg/Vector.h"
11 #include "mg/SPointSeq.h"
12 #include "mg/KnotVector.h"
13 #include "mg/Surface.h"
14 #include "mg/CSisect_list.h"
15 #include "mg/SSisect_list.h"
16 
17 // MGSBRep.h
18 //
19 // Forward Declaration
20 class MGBox;
21 class MGNDDArray;
22 class MGPosition;
23 class MGBPointSeq;
24 class MGKnotArray;
25 class MGMatrix;
26 class MGTransf;
27 class MGLBRep;
28 class MGSBRepEndC;
29 class MGSBRepTP;
30 class MGSBRepVecTP;
31 class MGStraight;
32 class MGEllipse;
33 class MGPlane;
34 class MGIfstream;
35 class MGOfstream;
41 
48 class MG_DLL_DECLR MGSBRep: public MGSurface {
49 
50 public:
51 
54 MG_DLL_DECLR friend MGSBRep operator* (double scale, const MGSBRep& sb);
55 
59 MG_DLL_DECLR friend void build_SBRep_1direction(
60  MGSBRepEndC& endc,
61  const MGNDDArray& utaui,
62  const MGNDDArray& vtaui,
63  const MGSPointSeq& value,
64  const MGKnotVector& tu,
65  const MGKnotVector& tv,
66  MGSBRep& brep,
67  int &error
68 );
69 
71 
73 MGSBRep();
74 
77 MGSBRep(
78  const MGSPointSeq& vertex,
79  const MGKnotVector& tu,
80  const MGKnotVector& tv
81 );
82 
83 //**** 1. Interpolation Constructor ****
84 
88 explicit MGSBRep(
89  const MGSPointSeq& points,
90  int orderu=4,
91  int orderv=4
92 );
93 
98 MGSBRep(
99  const MGNDDArray& utau,
100  const MGNDDArray& vtau,
101  const MGSPointSeq& points,
102  const MGKnotVector& tu,
103  const MGKnotVector& tv
104 );
105 
109 MGSBRep(
110  const MGSBRepTP& tp,
111  const MGNDDArray& utau,
112  const MGNDDArray& vtau,
113  const MGVector uvec[4],
114  const MGVector vvec[4],
118  const MGSPointSeq& points
125 );
126 
143 MGSBRep(
144  MGSBRepEndC& endc,
145  const MGNDDArray& utaui,
146  const MGNDDArray& vtaui,
147  const MGSPointSeq& value
148 );
149 
154 MGSBRep(
155  MGSBRepEndC& endc,
156  int orderu,
157  int orderv,
158  const MGNDDArray& utaui,
160  const MGNDDArray& vtaui,
161  const MGSPointSeq& value
162 );
163 
180 MGSBRep(
181  MGSBRepEndC& endc,
182  const MGNDDArray& utaui,
183  const MGNDDArray& vtaui,
184  const MGSPointSeq& value,
185  const MGKnotVector& tu,
186  const MGKnotVector& tv
187 );
188 
193 MGSBRep(
194  const MGLBRep& lbrep,
195  const MGUnit_vector& uvec,
196  double start_dist,
197  double end_dist
198 );
199 
202 MGSBRep(
203  const MGNDDArray& utau,
204  const MGNDDArray& vtau,
205  const MGSPointSeq& value,
206  int orderu=4,
207  int orderv=4
208 );
209 
214 MGSBRep(
215  const MGStraight& st,
216  const MGUnit_vector& uvec,
217  double start_dist,
218  double end_dist
219 );
220 
231 MGSBRep(
232  const MGNDDArray& tau,
233  const std::vector<MGLBRep*>& lines,
234  const MGLBRep* deriS,
235  const MGLBRep* deriE
236 );
237 
238 //**** 2. Approximation Constructor ****
239 
245 MGSBRep(
246  const MGSBRep& old_brep,
247  const MGKnotVector& ut,
248  const MGKnotVector& vt,
249  int &error
250 
251 );
252 
254 MGSBRep(
255  const MGNDDArray& utau,
256  const MGNDDArray& vtau,
257  const MGSPointSeq& points,
258  const MGKnotVector& tu,
259  const MGKnotVector& tv,
260  const MGSPointSeq& weight
261 );
265 
268 MGSBRep(
269  const MGNDDArray& utau,
270  const MGNDDArray& vtau,
271  const MGSPointSeq& points,
272  const MGSPointSeq& dp,
273  double deviation
274 );
275 
290 MGSBRep(
291  const MGCurve* edge_crvl[4],
292  const MGCurve& blendCrvU,
293  const MGCurve& blendCrvV,
294  const MGSBRepTP&tp,
295  int& error
296 );
297 
300 MGSBRep(
301  MGPvector<MGLBRep>& edges,
302  int& error ,
303  const MGCurve* blendCrvU=0,
304  const MGCurve* blendCrvV=0
305 );
306 
307 MGSBRep(
308  const MGCurve* edge_crvl[4],
309  const MGSBRepTP&tp,
310  int& error,
311  const double* alpha=0
312 );
317 
324 MGSBRep(
325  bool along_u,
326  const MGPvector<MGLBRep>& perimeters
331 );
332 
333 //**** 3.Conversion Constructor.****
334 
336 MGSBRep(
337  const MGSBRep& old_brep,
338  const MGKnotArray& uknots,
339  const MGKnotArray& vknots
340 );
341 
345 MGSBRep(
346  const MGSBRep& brep1,
347  int which1,
348  int continuity,
349  const MGSBRep& brep2,
350  int which2,
351  int opposite
352 );
355 
365 MGSBRep(
366  const MGBox& uvrange,
367  const MGSBRep& old_brep,
368  int multiple=0
369 );
371 
374 MGSBRep(
375  int dim,
376  const MGSBRep& sbrep,
377  int start1=0,
378  int start2=0
379 );
380 
382 MGSBRep(
383  const MGPlane& plane,
384  const MGBox& prange
385 );
386 
387 // MGSBRep(const MGSBRep&); ///Copy constructor.
388 // We can use default copy constructor.
389 
403 MGSBRep(const std::vector<const MGCurve*>& curves,bool direction_adjustment=true);
404 MGSBRep(const MGPvector<MGCurve>& curves,bool direction_adjustment=true);
405 
408 
410 
414 MGSBRep& operator=(const MGGel& gel2);
415 MGSBRep& operator=(const MGSBRep& gel2);
416 
419 MGSBRep operator+ ( const MGVector & ) const;
420 
423 MGSBRep operator- ( const MGVector & ) const;
424 
427 MGSBRep operator* (double) const;
428 
431 MGSBRep operator* ( const MGMatrix& ) const;
432 
435 MGSBRep operator*( const MGTransf & ) const;
436 
438 MGSBRep& operator+=(const MGVector& v);
439 MGSBRep& operator-=(const MGVector& v);
440 MGSBRep& operator*=(double scale);
441 MGSBRep& operator*=(const MGMatrix& mat);
442 MGSBRep& operator*=(const MGTransf& tr);
443 
445 bool operator==(const MGSBRep& gel2)const;
446 bool operator<(const MGSBRep& gel2)const;
447 bool operator==(const MGGel& gel2)const;
448 bool operator<(const MGGel& gel2)const;
449 bool operator!=(const MGGel& gel2)const{return !(gel2==(*this));};
450 bool operator!=(const MGSBRep& gel2)const{return !(gel2==(*this));};
451 bool operator==(const MGRSBRep& gel2)const;
452 
454 
458 
462 
464 int bdim_u() const{return m_surface_bcoef.length_u();}
465 
467 int bdim_v() const{return m_surface_bcoef.length_v();}
468 
470 MGBox box_limitted(const MGBox& uvrange) const;
471 
474  int sdim,
475  int start1=0,
476  int start2=0
477 );
478 
482  int is_u,
483  double t1,
484  double t2
485 );
486 
488 double& coef(int i, int j, int k){
489  assert(i<bdim_u() && j<bdim_v() &&k<sdim());
490  update_mark();
491  return m_surface_bcoef(i,j,k);
492 }
493 
495 double coef(int i, int j, int k) const{return m_surface_bcoef(i,j,k);}
496 
498 MGVector coef(int i, int j) const{return m_surface_bcoef(i,j);}
499 
501 const double* coef_data(int i=0, int j=0, int k=0) const
502 {return m_surface_bcoef.data(i,j,k);}
503 
514 int continuity(
515  const MGSBRep& brep2,
516  int& which1,
517  int& which2,
518  int& opposite,
520  double& ratio
523 ) const;
526 
529 MGSBRep* clone() const;
530 
535  int sdim,
536  int start1=0,
537  int start2=0
538 )const;
539 
541 void display_control_polygon(mgSysGL& sgl)const;
542 
546  MGPvector<MGSurface>& srfl
547 ) const;
548 
552 MGVector eval(
553  double u,
554  double v,
555  int ndu=0,
556  int ndv=0
557 ) const;
558 
560 MGVector eval(
561  const MGPosition& uv
562  , int ndu=0
563  , int ndv=0
564 ) const;
565 
568 void eval_all(
569  double u,
570  double v,
571  MGPosition& f,
572  MGVector& fu,
573  MGVector& fv,
574  MGVector& fuv,
575  MGVector& fuu,
576  MGVector& fvv
577 )const;
578 
581 void eval_all(
582  double u,
583  double v,
584  int ndu,
585  int ndv,
586  double* deriv
587 )const;
592 
595 
600 MGSBRep& extend(
601  int perimeter,
602  double param,
604  double length,
605  double dk=0.
606 );
612 
614 long identify_type() const;
615 
617 bool in_range(double u, double v) const;
618 bool in_range(const MGPosition& uv) const;
619 
622 MGCSisect_list isect(const MGCurve& curve)const;
623 MGCSisect_list isect(const MGStraight& sl)const{return isectSl(sl);};
624 MGCSisect_list isect(const MGRLBRep& curve)const;
625 MGCSisect_list isect(const MGEllipse& curve)const;
626 MGCSisect_list isect(const MGLBRep& curve)const;
627 MGCSisect_list isect(const MGSurfCurve& curve)const;
628 MGCSisect_list isect(const MGBSumCurve& curve)const;
629 
636 MGSSisect_list isect(const MGSurface& srf2)const;
637 MGSSisect_list isect(const MGPlane& srf2)const;
638 MGSSisect_list isect(const MGSphere& srf2)const;
639 MGSSisect_list isect(const MGCylinder& srf2)const;
640 MGSSisect_list isect(const MGSBRep& srf2)const;
641 MGSSisect_list isect(const MGRSBRep& srf2)const;
642 MGSSisect_list isect(const MGBSumSurf& srf2)const;
643 
646 double& knot_u(int i){return m_uknot(i);}
647 
650 double knot_u(int i) const{return m_uknot(i);}
651 
654 double& knot_v(int i){return m_vknot(i);}
655 
658 double knot_v(int i) const{return m_vknot(i);}
659 
661 const double* knot_data_u() const{return m_uknot.data();}
662 
664 const double* knot_data_v() const{return m_vknot.data();}
665 
667 const MGKnotVector& knot_vector_u() const{return m_uknot;}
668 MGKnotVector& knot_vector_u(){return m_uknot;};
669 
671 const MGKnotVector& knot_vector_v() const{return m_vknot;}
672 MGKnotVector& knot_vector_v(){return m_vknot;};
673 
676 bool less_than(
677  int i,
678  const MGPosition& uv1,
679  const MGPosition& uv2
680 ) const;
681 
685 MGSBRep& limit(const MGBox& uvrange);
686 
705 MGSBRep& move(
706  int move_kind_u,
707  int move_kind_v,
708  const MGPosition& move_point_param,
709  const MGPosition& to_point,
711  const MGPosition fix_point[2]
713 );
714 
716 void negate(
717  int is_u
718 );
719 
723 MGPosition negate_param(const MGPosition& uv, int is_u=1)const;
724 
726 int order_u() const{return m_uknot.order();}
727 
729 int order_v() const{return m_vknot.order();}
730 
732 MGPosition param_e() const;
733 double param_e_u() const;
734 double param_e_v() const;
735 
739  int is_u
740  , double x
741 ) const;
743 
745 MGLBRep parameter_line(
746  int is_u
747  , double x
748  , int nderiv=0
750 )const;
751 
754 //MGBox param_range() const; Uses MGSurface::param_range()
755 
757 MGPosition param_s() const;
758 double param_s_u() const;
759 double param_s_v() const;
760 
765 MGSBRep* part(
766  const MGBox& uvbx,
767  int multiple=0
768 )const;
770 
775 MGLBRep perimeter(int i) const;
776 
778 int perimeter_num() const{return 4;};
779 
782 int planar(
783  MGPlane& plane,
784  double& deviation
786 ) const;
787 
791 int planar(
792  const MGBox& uvbox,
793  double tol,
794  int* divideU=0
795  ) const;
797 
802 std::auto_ptr<MGSBRep> rebuild(
803  int how_rebuild=1,
807  int parameter_normalization=2,
813  double tol=-1.,
814  int* order=0
816 )const;
819 
822 int reduce(
823  int is_u,
824  int ndec
825 );
826 
829 MGSBRep& refine(
830  const MGKnotVector& uknot,
831  const MGKnotVector& vknot
832 );
833 
837 void remove_knot();
838 
841 int remove_knot_one(
842  double line0,
843  int id,
845  double& tol,
846  bool u_knot=true
847 );
849 
851 int sdim() const{return m_surface_bcoef.sdim();}
852 
859 void shrink_to_knot(
860  const MGBox& uvbx,
861  int multiple=0
862 );
864 
866 const MGSPointSeq& surface_bcoef() const{return m_surface_bcoef;}
867 
869 MGSPointSeq& surface_bcoef(){update_mark(); return m_surface_bcoef;}
870 
875 
879 
882 MGSurface& unlimit(){return *this;};
883 
885 int out_to_IGES(
886  MGIgesOfstream& igesfile,
887  int SubordinateEntitySwitch=0
888 )const;
889 
891 std::ostream& out(std::ostream&) const;
892 
893 std::string whoami()const{return "SBRep";};
894 
895 protected:
896 
899  const MGStraight& sl,
900  const MGBox& uvbox=mgNULL_BOX
901 ) const;
903 
907 void ReadMembers(MGIfstream& buf);
908 
912 void WriteMembers(MGOfstream& buf) const;
913 
914 private:
915 
917  MGKnotVector m_uknot;
918  MGKnotVector m_vknot;
919  MGSPointSeq m_surface_bcoef;
920 
923 MGBox* compute_box() const;
924 
926 void compute_knot(
927  const MGSPointSeq& points,
928  int orderu,
929  int orderv,
930  MGNDDArray& utau,
931  MGNDDArray& vtau
932 );
933 
944 int continuity(
945  const MGSBRep& brep2,
946  int is_u1,
947  int is_u2,
948  int opposite,
949  int& which1,
950  int& which2,
951  double& ratio
953 )const;
956 
960 int intersect_dnum_u() const;
961 int intersect_dnum_v() const;
962 
966  const MGPosition& uv,
967  int kdt,
968  double du, double dv,
970  double& u,
971  double& v,
972  int incr=0
973 ) const;
974 
977 void isect_incr_pline2(
978  const MGPosition& uv,
979  int kdt,
980  double du, double dv,
982  double& u,
983  double& v,
984  int incr,
985  MGLBRep& pline
986 ) const;
987 
991 int isect_sub_interval(
992  int kdt,
993  double u, double v,
995  double du, double dv,
996  int& index,
997  int incr
999 )const;
1000 
1003 int isect_order() const;
1004 
1006 int remove_knot_u();
1007 
1010 int remove_knot_u_one(
1011  double line0,
1012  int id,
1014  double& totalTol,
1015  int& num_knot
1017 );
1018 
1023 MGSBRep* surf1D(const MGPlane& pl)const;
1024 
1027 int divide_multi_knot_u(
1028  MGPvector<MGSBRep>& srfl
1029 ) const;
1030 
1033 int divide_multi_knot_v(
1034  MGPvector<MGSurface>& srfl
1035 ) const;
1036 
1037 friend class MGSurface;
1038 friend class MGRSBRep;
1039 
1040 };
1041 
1058 int MG_DLL_DECLR construct_perimeters(
1059  const MGPvector<MGCurve>& peris,
1066  MGPvector<MGLBRep>& perimeters2
1068 );
1069 
1071 extern MG_DLL_DECLR void bool_sum(
1072  const MGCurve* edge_crvl[4],
1073  const MGSBRepTP& tp,
1074  int& error,
1075  MGSBRep& surf
1076 );
1077 
1078 extern MG_DLL_DECLR void bool_sum(
1079  const MGCurve* edge_crvl[4],
1080  MGSBRepVecTP& vectp,
1081  int& error,
1082  MGSBRep& surf
1083 );
1084  // end of GEO group
1086 #endif
virtual MGSBRep * surf1D(const MGPlane &pl) const =0
virtual MGVector eval(double u, double v, int ndu=0, int ndv=0) const =0
Evaluate surface data.
MG_DLL_DECLR const MGBox mgNULL_BOX
virtual MGSurface & operator=(const MGSurface &gel2)
Definition: Surface.h:74
double knot_u(int i) const
Definition: SBRep.h:650
virtual void ReadMembers(MGIfstream &buf)
virtual double param_s_v() const =0
MGCurve is an abstract class which represents a whole curve.
Definition: Curve.h:63
virtual std::ostream & out(std::ostream &ostrm) const
Output virtual function.
virtual void update_mark()
Mark this as updated.
Definition: Geometry.h:156
MGPlane is infinite plane in 3D space.
Definition: Plane.h:38
Definition: MGCL.h:179
MGTransf represents a transformation of a space dimension.
Definition: Transf.h:35
virtual bool operator<(const MGGel &gel2) const =0
const MGKnotVector & knot_vector_v() const
Returns the v knot vector.
Definition: SBRep.h:671
const MGSPointSeq & surface_bcoef() const
Returns the B-coef's.
Definition: SBRep.h:866
MGCylinder is a Cylinder in 3D space.
Definition: Cylinder.h:37
MG_DLL_DECLR void bool_sum(const MGCurve *edge_crvl[4], const MGSBRepTP &tp, int &error, MGSBRep &surf)
construct boolean sum surface from the four perimeters and their tangent planes.
const double * knot_data_v() const
Returns a pointer to the v knot vector data.
Definition: SBRep.h:664
virtual MGCurve * isect_incr_pline(const MGPosition &uv, int kdt, double du, double dv, double &u, double &v, int incr=0) const =0
virtual int out_to_IGES(MGIgesOfstream &igesfile, int SubordinateEntitySwitch=0) const
Definition: Gel.h:93
MGSURFACE_TYPE type() const
Definition: SBRep.h:878
virtual void WriteMembers(MGOfstream &buf) const
virtual bool in_range(double u, double v) const =0
Test if the parameter(u,v) is in this surface's parameter range.
virtual MGBox box_limitted(const MGBox &uvrange) const =0
Return minimum box that includes limitted surface by uvrange.
virtual MGSurface & exchange_uv()=0
Exchange parameter u and v.
virtual int intersect_dnum_u() const =0
int MG_DLL_DECLR construct_perimeters(const MGPvector< MGCurve > &peris, MGPvector< MGLBRep > &perimeters2)
virtual void remove_knot()
removal redundant knots within the tolerance line_zero().
int perimeter_num() const
Return how many perimeters this surface has.
Definition: SBRep.h:778
virtual long identify_type() const =0
Return This object's typeID.
MGIfstream is a class to read the serialized data generated by MGOfstream.
Definition: Ifstream.h:30
virtual int sdim() const =0
Return the surface type.
virtual double param_e_u() const =0
Return ending parameter value.
int order_u() const
Returns the B-Rep order(u-direction).
Definition: SBRep.h:726
std::string whoami() const
Definition: SBRep.h:893
const double * coef_data(int i=0, int j=0, int k=0) const
Returns a pointer to the surface b-coef data.
Definition: SBRep.h:501
Defines Tangent Plane Line B-Representation Class.
Definition: SBRepVecTP.h:35
MGLBRep is a class for B-SPline representation.
Definition: LBRep.h:41
virtual int bdim_u() const
Returns B-Rep Dimension of u.
Definition: Surface.h:132
MGKnotVector & knot_vector_v()
Definition: SBRep.h:672
MGVector coef(int i, int j) const
Extract (i,j,k) elements for 0<=k
Definition: SBRep.h:498
virtual MGSurface & change_range(int is_u, double t1, double t2)=0
Change parameter range, able to change the direction by providing t1 greater than t2...
virtual MGSSisect_list isect(const MGSurface &srf2) const =0
Surface and Surface intersection.
virtual void eval_all(double u, double v, MGPosition &f, MGVector &fu, MGVector &fv, MGVector &fuv, MGVector &fuu, MGVector &fvv) const
Evaluate right continuous surface data.
Vector of a general n space dimension.
Definition: Vector.h:26
double & knot_v(int i)
Definition: SBRep.h:654
virtual double param_e_v() const =0
virtual MGSurface & extend(int perimeter, double param, double length, double dk=0.)
Modify the original Surface by extrapolating the specified perimeter.
Definition: Surface.h:365
Defines a Box of any space dimendion.
Definition: Box.h:34
virtual double param_s_u() const =0
Return starting parameter value.
Define MGBSumCurve Class(Boolean sum curve of three curves).
Definition: BSumCurve.h:28
MGCSisect_list isect(const MGStraight &sl) const
Definition: SBRep.h:623
MGSurface & operator*=(double scale)=0
MGSurface & operator-=(const MGVector &v)=0
virtual MGSurface * clone() const =0
Construct new surface object by copying to newed area.
virtual MGSurface * copy_change_dimension(int sdim, int start1=0, int start2=0) const =0
Construct new surface object by changing the original object's space dimension.
virtual int divide_multi_knot(MGPvector< MGSurface > &srfl) const
MGGel is an abstract class which represents a group element.
Definition: Gel.h:53
MGStraight is a curve of any space dimension, represent a straight line.
Definition: Straight.h:49
const MGSurface * surf() const
Return MGSurface pointer.
Definition: Surface.h:1101
int bdim_u() const
Returns B-Rep Dimension of u.
Definition: SBRep.h:464
virtual MGCSisect_list isectSl(const MGStraight &sl, const MGBox &uvbox=mgNULL_BOX) const
Intersection of Surface and a straight line.
MGSPointSeq & surface_bcoef()
Returns the B-coef's.
Definition: SBRep.h:869
MGKnotVector & knot_vector_u()
Definition: SBRep.h:668
virtual MGSurface * part(const MGBox &bx, int multiple=0) const =0
Compute part of the surface limitted by the parameter range bx.
MG_DLL_DECLR MGVector operator*(const MGVector &v, const MGMatrix &m)
virtual int isect_order() const =0
Represent a positional data.
Definition: Position.h:28
MGSurface is an abstract class of 3D surface.
Definition: Surface.h:54
MGSurface & operator+=(const MGVector &v)=0
Object transformation.
MGSSisect_list defines linked list of MGSSisect.
Definition: SSisect_list.h:26
MGCSisect_list defines linked list of MGCSisect.
Definition: CSisect_list.h:22
friend class MGSBRep
Definition: Surface.h:1305
Defines Knot vector of B-Representation.
Definition: KnotVector.h:28
Defines Boolean sum surface.
Definition: BSumSurf.h:26
bool operator!=(const MGGel &gel2) const
Definition: SBRep.h:449
virtual int bdim_v() const
Returns B-Rep Dimension of v.
Definition: Surface.h:135
const double * knot_data_u() const
Returns a pointer to the u knot vector data.
Definition: SBRep.h:661
const MGKnotVector & knot_vector_u() const
Returns the u knot vector.
Definition: SBRep.h:667
int order_v() const
Returns the B-Rep order(v-direction).
Definition: SBRep.h:729
Defines End Condition of Surface B-Representation.
Definition: SBRepEndC.h:51
Defines BPoint seq of a space dimension and of a capacity.
Definition: BPointSeq.h:38
MGSphere is a Sphere in 3D space.
Definition: Sphere.h:42
MGSurface & unlimit()
Definition: SBRep.h:882
virtual void negate()
Negate direction of surface.
Definition: Surface.h:730
virtual int intersect_dnum_v() const =0
bool operator!=(const MGSBRep &gel2) const
Definition: SBRep.h:450
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 bool operator==(const MGGel &gel2) const =0
comparison
double knot_v(int i) const
Definition: SBRep.h:658
MGOgesIfstream write out to *.iges file, transforming MGCL objects to IGES objects.
Definition: IgesOfstream.h:26
virtual MGSurface & change_dimension(int sdim, int start1=0, int start2=0)=0
Changing this object's space dimension.
int bdim_v() const
Returns B-Rep Dimension of v.
Definition: SBRep.h:467
Defines Surface B-Representation of rational form.
Definition: RSBRep.h:38
double coef(int i, int j, int k) const
Access to (i,j)th element of coef(right-hand side version).
Definition: SBRep.h:495
double & knot_u(int i)
Access to i-th element of u knot //(right-hand side version)
Definition: SBRep.h:646
Defines non-decreasing double data array.
Definition: NDDArray.h:27
Defines Surface B-Representation, that is , B-Spline surface.
Definition: SBRep.h:48
MGEllipse is a class to define an ellipse of 2D or 3D.
Definition: Ellipse.h:38
int sdim() const
Returns the space dimension.
Definition: SBRep.h:851
virtual void shrink_to_knot(const MGBox &uvbx, int multiple=0)
Shrink this surface to the part limitted by the parameter range of uvbx.
Definition: Surface.h:1083
MGSURFACE_TYPE
Surface type(曲面の種類).
Definition: MGCL.h:173
Defines Array of Knots.
Definition: KnotArray.h:26
Defines Tangent Plane Line B-Representation Class.
Definition: SBRepTP.h:28
Defines Spoint seq of a space dimension and of a size.
Definition: SPointSeq.h:36
mgSysGL is a class to provide a facility to draw temporal pictures.
Definition: sysGL.h:26
virtual bool less_than(int i, const MGPosition &uv1, const MGPosition &uv2) const
Compare two parameter values. If uv1 is less than uv2, return true.
virtual void display_control_polygon(mgSysGL &sgl) const
Definition: Gel.h:194
double & coef(int i, int j, int k)
Access to (i,j)th element of coef(left-hand side version).
Definition: SBRep.h:488
Define a unit vector, is a MGVector.
Definition: Unit_vector.h:17
virtual MGCurve * parameter_curve(int is_u, double x) const =0
Compute parameter curve.
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