MGCL V10  V10
MGCL V10
 全て クラス 名前空間 関数 変数 型定義 列挙型 列挙値 フレンド グループ ページ
Face.h
1 /********************************************************************/
2 /* Copyright (c) 2015 DG Technologies Inc. and Yuzi Mizuno */
3 /* All rights reserved. */
4 /********************************************************************/
5 #ifndef _MGFace_HH_
6 #define _MGFace_HH_
7 
8 #include <vector>
9 #include "mg/Default.h"
10 #include "mg/drawParam.h"
11 #include "mg/BPointSeq.h"
12 #include "mg/Unit_vector.h"
13 #include "mg/Position.h"
14 #include "mg/Curve.h"
15 #include "mg/Surface.h"
16 #include "mg/FSurface.h"
17 #include "mg/Pvector.h"
18 
19 #include "topo/Cell.h"
20 #include "topo/LEPoint.h"
21 #include "topo/FOuterCurve.h"
22 
23 class MGSSisect_list;
24 class MGCSisect_list;
25 class MGPosition_list;
26 class MGLBRep;
27 class MGCellNB;
28 class MGLoop;
29 class MGLEPoint;
30 class MGShell;
31 class MGFSurface;
32 class MGHHisect_vector;
33 
34 //
35 //Define MGFace Class.
36 
42 typedef std::vector<const MGLBRep*> SHLL_COM_EDGES;//Used for tessellatiion(shade).
43  //Represents n polylines of n edges of a loop.
44  //SHLL_COM_EDGES[j] is j-th edge's polyline of a loop.
45  //Generally a face has multiple SHLL_COM_EDGES.
46 
48 
51 class MG_DLL_DECLR MGFace: public MGCell, public MGFSurface{
52 
53 public:
54 
57 MG_DLL_DECLR friend MGFace operator* (double s, const MGFace& face);
58 
60 
62 MGFace():MGCell(){;}
63 
65 MGFace(const MGFace& face);
66 
68 MGFace(const MGFace& face, bool copy_boundary, bool no_binder=false);
69 
75 MGFace(
76  MGSurface* geo,
77  std::vector<MGBoundary*>& boundaries,
78  MGCell* binder
79 );
80 
82 MGFace(const MGSurface& surf)
83 :MGCell(surf),m_box_param(surf.param_range())
84 {;}
85 
87 MGFace(const MGFSurface& surf);
88 
93 :MGCell(surf),m_box_param(surf->param_range())
94 {;}
95 
100 MGFace(const MGSurface& surf,
101  const std::vector<MGBoundary*>& boundaries);
102 MGFace(MGSurface* surf,
103  const std::vector<MGBoundary*>& boundaries);
104 
106 
110 MGFace& operator=(const MGGel& gel2);
111 MGFace& operator=(const MGFace& gel2);
112 
115 MGFace operator+ (const MGVector& v) const;
116 
119 MGFace operator- (const MGVector& v) const;
120 
123 MGFace operator* (double s) const;
124 
127 MGFace operator* (const MGMatrix& mat) const;
128 
131 MGFace operator* (const MGTransf& tr) const;
132 
135 MGFace operator/ (double s) const{return (*this)*(1./s);};
136 
138 bool operator<(const MGFace& gel2)const{return is_less_than(gel2);};
139 bool operator<(const MGGel& gel2)const;
140 
142 int out_to_IGES(
143  MGIgesOfstream& igesfile,
144  int SubordinateEntitySwitch=0
145 )const;
146 
148 std::ostream& out(std::ostream& ostrm) const;
149 
151 std::ostream& outFS(std::ostream& ostrm) const{return out(ostrm);};
152 
154 
158 void add_boundary(MGLoop* nloop);
159 
166 void arrow(double u,double v, MGPosition data[10])const;
167 void arrow(const MGPosition& uv, MGPosition data[10])const{
168  arrow(uv[0],uv[1],data);
169 }
170 
177 int append_boundary(MGBoundary* bound);
178 
181 MGFace* binder_face() const;
182 
186 MGPvector<MGCurve> face_boundaries()const;
187 
190 const MGBox& box_param() const;
191 
194 const MGBox box_param2() const{return box_param();};
195 
200 std::auto_ptr<MGLoop> build_loop(
201  const MGCurve& crv
202 )const;
204 
207 MGFace* clone() const;
209 
211 MGFSurface* clone_fsurface()const{return clone();};
212 
215 MGFace* clone_as_face()const{return clone();};
216 
219 MGFace* clone_binder(const MGCellBase& f) const;
220 
223 MGPosition closest(const MGPosition& point) const;
224 
227 MGPosition closest_on_boundary(const MGStraight& sl) const;
228 
230 void display_arrows(mgSysGL& sgl)const;
231 void display_control_polygon(mgSysGL& sgl)const;
232 
235 void drawWire(
236  mgVBO& vbo,
237  double span_length,
238  int line_density=1
239 )const{drawWireFS(vbo,span_length,line_density);};
240 
244 void draw3DVertex(mgVBO& vbo)const;
245 
247 void shade(
248  mgVBO& vbo,
249  const MGDrawParam& para,
251 )const;
252 
254 virtual void triangulate(
255  const MGDrawParam& para,
256  MGCL::TL_DATA_KIND dkind,
257  std::vector<mgTL2Triangles>& trisVec
258 )const;
259 
266 bool equal_direction(
267  const MGPvector<MGCurve>& wcurves,
269  const MGPvector<MGCurve>& pcurves,
271  int i
273 )const;
274 
277 
281 MGVector eval(
282  double u,
283  double v,
284  int ndu=0
285  , int ndv=0
286 ) const;
287 
289 MGVector eval(
290  const MGPosition& uv,
291  int ndu=0,
292  int ndv=0
293 ) const;
294 
296 void extract_loops(std::vector<const MGLoop*>& loops)const;
297 
301 void extract_sub_face(
302  const MGPvector<MGLoop>& networks,
303  const MGPosition& uv,
304  std::auto_ptr<MGFace>& face
305 )const;
306 
308 MGFace* face(){return this;};
309 const MGFace* face()const{return this;};
310 
312 const MGFSurface* fsurface()const{return this;};
313 MGFSurface* fsurface(){return this;};
314 
316 std::vector<const MGLoop*> get_inner_boundary_loops(const MGBox& uvbox) const;
317 
319 //bool displayList_is_made(MGCL::VIEWMODE vmode)const;
320 
322 MGFace* get_face_pointer(){return this;};
323 const MGFace* get_face_pointer()const{return this;};
324 
327 MGSurface* get_surface_pointer(){return surface();};
328 const MGSurface* get_surface_pointer()const{return surface();};
329 
332 
335 bool has_commonFS(const MGObject& obj2)const{return has_common(obj2);};
336 
339 bool hasLoop(const MGBox& uvbox)const;
340 
343 bool hasInactiveLoop()const;
344 
348 bool hasOuterBoundaryLoop()const;
349 
352 bool hasPerimeterBoundaryLoop() const;
353 
360 
367 
369 long identify_type()const;
370 
372 bool in_range(double u, double v)const;
373 bool in_range(const MGPosition& uv)const;
374 
383 int in_range_with_on(const MGPosition& uv)const;
384 
394 MGisects intersection(const MGObject& obj2)const;
395 MGisects intersection(const MGCurve& obj2)const;
396 MGisects intersection(const MGFSurface& obj2)const;
397 MGisects intersection(const MGSurface& obj2)const;
398 MGisects intersection(const MGFace& obj2)const;
399 MGisects intersection(const MGShell& obj2)const;
400 
402 MGCSisect_list isect(const MGCurve& curv) const;
403 MGSSisect_list isect(const MGFSurface& fsurf) const;
404 MGSSisect_list isect(const MGFace& fsurf) const;
405 MGSSisect_list isect(const MGSurface& fsurf) const;
406 MGHHisect_vector isect(const MGShell& shell2) const;
407 
409 double knot_u(int i) const{return surface()->knot_u(i);};
410 
412 double knot_v(int i) const{return surface()->knot_v(i);};
413 
415 const MGKnotVector& knot_vector_u()const{return surface()->knot_vector_u();};
416 MGKnotVector& knot_vector_u(){return surface()->knot_vector_u();};
417 
419 const MGKnotVector& knot_vector_v()const{return surface()->knot_vector_v();};
420 MGKnotVector& knot_vector_v(){return surface()->knot_vector_v();};
421 
423 MGLoop* loop(int i);
424 MGLoop* loop(iterator i);
425 const MGLoop* loop(int i)const;
426 const MGLoop* loop(const_iterator i)const;
427 
431 MGCellNB* make_binder() const;
432 
437 MGFace* make_face(){return this;};
438 
440 void make_outer_boundary();
441 
443 int manifold_dimension() const{return 2;};
444 
446 const MGFace* member_partner_face(int i)const;
447 
449 void negate();
450 void negateFS(){negate();};
451 
453 MGVector normal(const MGPosition& uv) const
454 { return surface()->normal(uv.ref(0), uv.ref(1));};
455 
457 MGVector normal(double u,double v) const
458 { return surface()->normal(u, v);};
459 
464 bool no_outer_boundaries()const;
465 
468 { int dummy; return number_of_inner_boundaries(dummy);}
469 
473 int number_of_inner_boundaries(int& i)const;
474 
476 int number_of_loops()const;
477 
479 int number_of_perimeter_boundaries()const;
480 
483 const MGObject* object_pointer()const{return object();};
484 
489 MGFace offset(double distance, int& error)const;
490 
495 int offset(double distance, MGPvector<MGFace>& vecOfsFace)const;
496 
501 int offset_fs(double distance, MGPvector<MGFSurface>& vecOfsFSurface)const;
502 
506 bool on(
507  const MGPosition& P,
508  MGPosition& uv
509 )const;
512 
515 bool on_a_perimeter(
516  double& u,
517  double& v,
518  int& perim_num
519 )const;
521 
528 
533 
535 MGPosition param(const MGPosition& P)const;
536 
541  int is_u,
542  double x
543 )const;
544 
547 MGBox param_range() const{return box_param();};
548 
550 double param_e_u()const;
551 double param_e_v()const;
552 
554 double param_s_u()const;
555 double param_s_v()const;
556 
558 MGShell* parent_shell();
559 const MGShell* parent_shell()const;
560 
564 MGPvector<MGCurve> PBloop_curves() const;
565 
569 bool perp_guess(
570  const MGPosition& P,
571  const MGPosition& uvguess,
572  MGPosition& uv
573 ) const;
574 
580 bool perp_guess(
581  const MGCurve& curve,
582  const MGPosition& uvguess,
583  double tguess,
584  MGPosition& uv,
585  double& t
586 ) const;
587 
592 int perp_point (
593  const MGPosition& p,
594  MGPosition& uv,
595  const MGPosition* uvguess=0
596 )const;
597 
602 MGPosition_list perps(const MGPosition& P) const;
603 
608 MGPosition pick_closest(const MGStraight& sl)const;
609 
612 MGPosition range(const MGPosition& uv) const;
613 
621 std::auto_ptr<MGFace> rebuild(
622  int how_rebuild=1,
630  int parameter_normalization=2,
637  double tol=-1.,
638  int* order=0,
640  double* range=0
644 )const;
648 
650 void remove_inactive_loops();
651 
654 void rotateBoundary(const MGMatrix& mat);
655 
668 void scalePolar(
669  double angleBase,
670  double angle1,
671  double angle2
672 );
673 
680 void shrink_base_surface_to_knot(
681  int multiple=0
682 );
684 
688 void sort_boundaries();
689 
691 void split(
692  double param,
693  bool is_u,
695  MGPvector<MGFSurface>& surfaces
696 )const;
697 
700 void split(
701  const MGPvector<MGLoop>& networks,
702  MGPvector<MGFace>& faces
703 )const;
704 
706 MGSurface* surface();
707 const MGSurface* surface() const;
708 
728 int trim_projection(
729  const MGCurve& crv,
730  const MGVector& direction=mgNULL_VEC
732 );
733 
752 int trim(
753  const MGCurve& pcrv
754 );
755 
769 int trim(const MGLoop& new_loop_in);
770 
773 void trim(
774  const MGPvector<MGLoop>& networks,
775  const MGPosition& uv,
776  MGPvector<MGFace>& faces
777 )const;
778 
781 { return surface()->unit_normal(uv.ref(0), uv.ref(1));};
782 
784 MGUnit_vector unit_normal(double u,double v) const
785 { return surface()->unit_normal(u, v);};
786 
787 std::string whoami()const{return "Face";};
788 
789 protected:
790 
792 void WriteMembers(MGOfstream& buf) const;
793 
795 void ReadMembers(MGIfstream& buf);
796 
797 private:
798 
799  mutable MGBox m_box_param;
800 
805 MGFace* clone(MGCellMap& cmap)const;
806 
810 bool in_range_face(const MGPosition& uv)const{return in_range(uv);};
811 
814 int coef_sdim() const{return surface()->coef_sdim();};
815 
818 void compute_box() const;
819 
821 void compute_box_param() const;
822 
824 void copy_binder(const MGFace& faceOriginal);
825 
828 int get_proj_divnum(const MGCurve& crv)const;
829 
831 void set_box_as_null()const;
832 
842 int inside_inner_boundary(const MGPosition& uv, int& id)const;
843 
856 int inside_outer_boundary(
857  const MGPosition& uv
858 )const;
859 
861 MGSSisect_list intersect(const MGFSurface& face2)const;
862 
868 MGPosition_list intersectInner(
869  const MGFace& f2
870 ) const;
871 
877 MGPosition_list intersectInner(
878  const MGSurface& sf2
879 ) const;
880 
883 int isect_area_length() const{return surface()->isect_area_length();};
884 
892 int isect_boundary(
893  const MGFSurface& face2,
894  MGPosition_list& uvuvs,
900  int id1=0
901 )const;
902 
906  const MGPosition& uv,
907  int kdt,
908  double du, double dv,
910  double& u,
911  double& v,
912  int incr=0
913 )const;
914 
919 int isect_incurves(
920  const MGFSurface& face2,
921  int iid,
922  MGPosition_list& uvuv_list,
923  int id1
926 )const;
929 
934 int isect_outcurves(
935  const MGFSurface& face2,
936  MGPosition_list& uvuv_list,
937  int id1
940 )const;
943 
948 int isect_lpcurves(
949  const MGFSurface& face2,
950  const MGLoop& lp,
951  MGPosition_list& uvuv_list,
952  int id1
955 )const;
958 
963 int isect_lpcurves(
964  const MGFSurface& face2,
965  int lpid,
966  MGPosition_list& uvuv_list,
967  int id1
970 ) const;
973 
977 MGSSisect_list isectEP(
978  MGPosition_list& uvuv_list,
979  const MGFSurface& fsrf2
981 ) const;
982 
986 std::vector<double> isect1D_with_boundaries(
987  double x,
988  int kcod
989 )const;
990 
996 MGGeometry* make_binder_extent() const;
997 
1004 void make_extent() const;
1005 
1008 std::vector<MGFOuterCurve> outer_curve() const;
1009 
1013 std::vector<MGInterval> perimeter_param_range(int i) const;
1014 
1018 MGPosition range_check_inner_boundary(const MGPosition& uv) const;
1019 
1021 void remove_outside_param(MGPosition_list& uvs)const;
1022 
1024 void shade(
1025  mgVBO& vbo,
1026  const MGDrawParam& para,
1027  std::vector<SHLL_COM_EDGES>* polylines,
1029 )const;
1030 
1034 void sl_edge_append(
1035  MGLoop*& lp,
1036  int id,
1038  const MGPosition& uv2,
1039  const MGPosition& uv1,
1040  double err_sqr
1041 );
1042 
1044 void getTrimCrv(
1045  double uerror, double verror,
1046  const MGBox& box,
1047  MGPvector<MGCurve>& vecCrv
1048 ) const;
1049 
1050 friend class MGShell;
1051 friend class MGSurface;
1052 
1053 };
1054 
1056 
1059 union MG_DLL_DECLR mgEdgeP{const MGEdge* pointer; double doubleV;};
1060 
1062 
1066 MG_DLL_DECLR MGPosition MGClosest_to_curves(
1067  const MGPosition& uv,
1068  const MGPvector<MGCurve>& curves
1069 );
1070  // end of TOPO group
1072 #endif
std::string whoami() const
Definition: Face.h:787
std::vector< const MGLBRep * > SHLL_COM_EDGES
Definition: Face.h:42
CellNB is a cell without boundaries(No Boundaries).
Definition: CellNB.h:38
virtual long identify_type() const =0
Return Object's type ID (TID)
virtual void compute_box() const
compute box of the cell in m_box.
Is an abstract class and the super class of MGPVertex and MGCellNB.
Definition: CellBase.h:38
virtual MGCell & operator=(const MGCell &gel2)
virtual void draw3DVertex(mgVBO &vbo) const =0
MGFace * make_face()
Definition: Face.h:437
int number_of_boundaries() const
Return number of boundaries.
Definition: Cell.h:183
MGCurve is an abstract class which represents a whole curve.
Definition: Curve.h:63
MGTransf represents a transformation of a space dimension.
Definition: Transf.h:35
virtual void arrow(double u, double v, MGPosition data[10]) const =0
bool is_less_than(const MGCellNB &cell2) const
Cell comparison.
virtual MGPosition_list perps(const MGPosition &P) const =0
virtual void set_box_as_null() const
set box as null(to set the box as initial)
Definition: Cell.h:218
virtual int out_to_IGES(MGIgesOfstream &igesfile, int SubordinateEntitySwitch=0) const
Definition: Gel.h:93
const MGObject * object_pointer() const
Get the object point of this MGFSurface.
Definition: Face.h:483
bool has_commonFS(const MGObject &obj2) const
Definition: Face.h:335
virtual void sort_boundaries()
MGFace * get_face_pointer()
Judge if the display list for vmode is made or not.
Definition: Face.h:322
MGFSurface * fsurface()
Definition: Face.h:313
TL_DATA_KIND
Triangles' data kind.
Definition: MGCL.h:280
bool has_common(const MGObject &obj2) const
virtual int offset_fs(double distance, MGPvector< MGFSurface > &vecOfsFSurface) const =0
double knot_v(int i) const
Access to i-th element of v knot.
Definition: Face.h:412
int get_number_of_boundaries() const
Get number of inner boundaries as the output of the function.
Definition: Face.h:331
MGVector normal(const MGPosition &uv) const
Compute normal vector(not unit) at uv.
Definition: Face.h:453
virtual MGCell * clone_without_boundaries() const =0
virtual double param_s_u() const =0
Return starting parameter value of the base surface.
MGFace * face()
Return MGFace pointer if this MGGel is an MGFace, else return null.
Definition: Face.h:308
virtual double param_e_v() const =0
virtual bool in_range(double u, double v) const =0
Test if parameter value (u,v) is in the range of the FSurface parameter.
MGFace * clone_as_face() const
Definition: Face.h:215
virtual int isect_area_length() const =0
MGIfstream is a class to read the serialized data generated by MGOfstream.
Definition: Ifstream.h:30
virtual void negate()
Negate the direction of the cell.
virtual int isect_boundary(const MGFSurface &face2, MGPosition_list &uvuvs, int id1=0) const =0
virtual double param_e_u() const =0
Return ending parameter value.
virtual MGPvector< MGCurve > parameter_curves(int is_u, double x) const =0
virtual int get_proj_divnum(const MGCurve &crv) const =0
MGLBRep is a class for B-SPline representation.
Definition: LBRep.h:41
Definition: VBO.h:86
Is an abstract class which represents a whole geometry and a topology.
Definition: Object.h:42
MGShell is a composition of MGFace's(trimmed surface).
Definition: Shell.h:32
int in_range_with_on(double u, double v) const
Definition: FSurface.h:205
virtual int isect_incurves(const MGFSurface &face2, int iid, MGPosition_list &uvuv_list, int id1) const =0
virtual int number_of_inner_boundaries() const
Get number of inner boundaries as the output of the function.
Definition: FSurface.h:365
Vector of a general n space dimension.
Definition: Vector.h:26
void arrow(const MGPosition &uv, MGPosition data[10]) const
Definition: Face.h:167
virtual bool on_a_perimeter(double &u, double &v, int &perim_num) const =0
virtual MGPvector< MGCurve > inner_boundary(int i) const =0
MGGeometry is an abstract class which represents a whole geometry.
Definition: Geometry.h:36
bool operator<(const MGFace &gel2) const
Comparison of two curves.
Definition: Face.h:138
std::ostream & outFS(std::ostream &ostrm) const
Output virtual function.
Definition: Face.h:151
Defines a Box of any space dimendion.
Definition: Box.h:34
const MGFSurface * fsurface() const
Get the MGFSurface pointer if this is MGSurface or MGFace.
Definition: Face.h:312
MGCell is a general cell that has bound.
Definition: Cell.h:35
virtual void ReadMembers(MGIfstream &buf)
Read Object's member data.
Defines parameters to draw MGObject, maily to approximate by lines and facets.
Definition: drawParam.h:53
MGFace is a trimmed surface.
Definition: Face.h:51
virtual int isect_outcurves(const MGFSurface &face2, MGPosition_list &uvuv_list, int id1) const =0
virtual MGPosition pick_closest(const MGStraight &sl) const
Definition: Object.h:146
MGBox param_range() const
Definition: Face.h:547
MGGel is an abstract class which represents a group element.
Definition: Gel.h:53
virtual MGPvector< MGCurve > outer_boundary_param() const =0
MGEdge is an instance of MGCellNB, represents a boundary element of 2D manifold.
Definition: Edge.h:33
MGStraight is a curve of any space dimension, represent a straight line.
Definition: Straight.h:49
double knot_u(int i) const
Access to i-th element of u knot.
Definition: Face.h:409
MGVector normal(double u, double v) const
Compute normal vector(not unit) at (u,v).
Definition: Face.h:457
MG_DLL_DECLR MGVector operator*(const MGVector &v, const MGMatrix &m)
MGSurface * get_surface_pointer()
Definition: Face.h:327
virtual void split(double param, bool is_u, MGPvector< MGFSurface > &surfaces) const =0
split this fsurface at the parameter param.
virtual MGCurve * isect_incr_pline(const MGPosition &uv, int kdt, double du, double dv, double &u, double &v, int incr=0) const =0
Represent a positional data.
Definition: Position.h:28
MGSurface is an abstract class of 3D surface.
Definition: Surface.h:54
MGFace(const MGSurface &surf)
Face of whole surface of no boundary.
Definition: Face.h:82
MGUnit_vector unit_normal(const MGPosition &uv) const
Compute unit normal vector at uv.
Definition: Face.h:780
Is to represent a Loop's point.
Definition: LEPoint.h:28
virtual int perp_point(const MGPosition &p, MGPosition &uv, const MGPosition *uvguess=0) const =0
MGSSisect_list defines linked list of MGSSisect.
Definition: SSisect_list.h:26
MGCSisect_list defines linked list of MGCSisect.
Definition: CSisect_list.h:22
Defines Knot vector of B-Representation.
Definition: KnotVector.h:28
virtual MGPosition param(const MGPosition &P) const =0
Obtain parameter value of the FSurface whose world coordinates are P.
ELEMENT_TARGET
Definition: VBO.h:84
MGLoop is a boundary of a face, a boundary of 2D manifold cell.
Definition: Loop.h:44
const MGFace * get_face_pointer() const
Definition: Face.h:323
friend class MGFace
Definition: FSurface.h:35
void negateFS()
Negate the FSurface.
Definition: Face.h:450
virtual MGCellNB * make_binder() const =0
MGObject * object_pointer()
Return MGObject pointer if this MGGel is an MGObject, else return null.
Definition: Face.h:482
MGBoundary is a boundary of more than 1 manifold dimension.
Definition: Boundary.h:35
const MGKnotVector & knot_vector_u() const
Returns the u knot vector.
Definition: Face.h:415
virtual MGisects intersection(const MGObject &obj2) const
MGFace()
Null face.
Definition: Face.h:62
const MGKnotVector & knot_vector_v() const
Returns the v knot vector.
Definition: Face.h:419
const MGBox box_param2() const
Definition: Face.h:194
MGFace(MGSurface *surf)
Definition: Face.h:92
MGFSurface is an abstract class to provide the comman interfaces to MGFace and MGSurface.
Definition: FSurface.h:33
virtual MGPosition closest_on_boundary(const MGStraight &sl) const =0
virtual int append_boundary(MGBoundary *bound)
MGOfstream is a class to serialize all of the subclasses of MGGel.
Definition: Ofstream.h:31
MGUnit_vector unit_normal(double u, double v) const
Compute unit normal vector at (u,v).
Definition: Face.h:784
MGPosition_list provides a list of Positions.
Definition: Position_list.h:27
MGHHisect_vector defines a vector of MGHHisect.
Definition: HHisect_vector.h:28
virtual void WriteMembers(MGOfstream &buf) const
Write Object's Member Data.
MGOgesIfstream write out to *.iges file, transforming MGCL objects to IGES objects.
Definition: IgesOfstream.h:26
void triangulate(const MGLoop &polygon, mgTL2Triangles &triangles)
void drawWire(mgVBO &vbo, double span_length, int line_density=1) const
Definition: Face.h:235
virtual void shade(mgVBO &vbo, const MGDrawParam &para, mgVBO::ELEMENT_TARGET target=mgVBO::SHADING) const
Shade the object in world coordinates.
Definition: Object.h:101
int manifold_dimension() const
Get manifold dimension.
Definition: Face.h:443
void drawWireFS(mgVBO &vbo, double span_length, int line_density=1) const
const MGFace * face() const
Definition: Face.h:309
virtual bool operator<(const MGCell &gel2) const
comparison
virtual MGCell * clone() const =0
MG_DLL_DECLR MGPosition MGClosest_to_curves(const MGPosition &uv, const MGPvector< MGCurve > &curves)
int number_of_inner_boundaries() const
Get number of inner boundaries as the output of the function.
Definition: Face.h:467
double ref(int i) const
Definition: Position.h:304
virtual MGPosition range(const MGPosition &uv) const =0
virtual std::ostream & out(std::ostream &) const
Output virtual function.
MGisects defines a vector of MGisect.
Definition: isects.h:44
MGKnotVector & knot_vector_u()
Definition: Face.h:416
virtual bool on(const MGPosition &P, MGPosition &uv) const =0
virtual MGHHisect_vector isect(const MGShell &shell2) const =0
Intersection.
const MGSurface * get_surface_pointer() const
Definition: Face.h:328
mgSysGL is a class to provide a facility to draw temporal pictures.
Definition: sysGL.h:26
virtual int coef_sdim() const =0
OpenGL 4 用描画のためのクラス, in other words, display list.
Definition: VBO.h:76
virtual MGPvector< MGCurve > inner_boundary_param(int i) const =0
virtual MGPvector< MGCurve > outer_boundary() const =0
virtual void display_control_polygon(mgSysGL &sgl) const
Definition: Gel.h:194
MGKnotVector & knot_vector_v()
Definition: Face.h:420
virtual bool perp_guess(const MGPosition &P, const MGPosition &uvguess, MGPosition &uv) const =0
virtual MGPosition closest(const MGPosition &point) const =0
MGFSurface * clone_fsurface() const
Get the clone of this MGFSurface.
Definition: Face.h:211
virtual double param_s_v() const =0
virtual MGCell * clone_binder(const MGCellBase &c) const =0
virtual bool hasLoop(const MGBox &uvbox) const
Definition: FSurface.h:177
Define a unit vector, is a MGVector.
Definition: Unit_vector.h:17
void trim(const std::vector< const MGCurve * > &trimmers, const MGVector &dir, const MGPosition &uv, MGPvector< MGFace > &faces) const
virtual void display_arrows(mgSysGL &sgl) const
Definition: Gel.h:192
virtual MGObject * object()
Return MGObject pointer if this MGGel is an MGObject, else return null.
Definition: Object.h:154
MGMatrix is a matix of m by m, where m is the space dimension.
Definition: Matrix.h:30