5 #ifndef _MGFSurface_HH_
6 #define _MGFSurface_HH_
9 #include "mg/Default.h"
10 #include "mg/Unit_vector.h"
11 #include "mg/Position_list.h"
12 #include "mg/Pvector.h"
74 const MGBox& get_box()
const;
78 virtual const MGBox box_param2()
const=0;
85 virtual MGFace* clone_as_face()
const=0;
100 void display_arrowsFS(
116 void drawWireFS_to_highlight(
147 std::vector<MGPosition>& uvuvs,
156 virtual MGFace* get_face_pointer()=0;
157 virtual const MGFace* get_face_pointer()
const=0;
160 virtual int get_number_of_boundaries()
const=0;
164 virtual MGSurface* get_surface_pointer()=0;
165 virtual const MGSurface* get_surface_pointer()
const=0;
169 virtual bool has_commonFS(
const MGObject& obj2)
const=0;
194 virtual bool in_range(
double u,
double v)
const=0;
206 virtual int in_range_with_on(
const MGPosition& uv)
const=0;
219 void intersect12Boundary(
234 virtual int isect_boundary(
249 virtual int isect_incurves(
264 virtual int isect_outcurves(
277 virtual int isect_guess(
296 )
const{
return isect_guess_straight(sl,ti,uvi,t,uv);};
308 )
const{
return isect_guess_composite(crv,uvi,ti,uv,t);};
313 virtual int isect_guess_composite(
326 virtual int isect_guess_straight(
336 virtual double knot_u(
int i)
const{
return 0.0;}
339 virtual double knot_v(
int i)
const{
return 0.0;}
353 virtual MGFace* make_face()=0;
356 virtual void negateFS()=0;
368 virtual const MGObject* object_pointer()
const=0;
369 virtual MGObject* object_pointer()=0;
389 virtual bool on_a_perimeter(
397 virtual std::ostream& outFS(std::ostream& ostrm)
const=0;
416 virtual double param_e_u()
const=0;
417 virtual double param_e_v()
const=0;
420 virtual double param_s_u()
const=0;
421 virtual double param_s_v()
const=0;
433 double param_error_u()
const;
434 double param_error_v()
const;
487 virtual int perp_one(
544 virtual int get_proj_divnum(
const MGCurve& crv)
const=0;
577 const std::vector<const MGCurve*>& splitters,
596 const std::vector<const MGCurve*>& trimmers,
599 std::auto_ptr<MGFace>& eface
614 std::vector<mgTL2Triangles>& trisVec
622 const std::vector<const MGCurve*>& trimmers,
640 virtual int coef_sdim()
const=0;
644 virtual int isect_area_length()
const=0;
651 virtual int isect_direction(
666 int isect_direction_with_direction(
688 virtual void isect_inner_dt(
702 double isect_dt_coef(
int n)
const;
707 int isect_div_id_max()
const;
711 virtual MGCurve* isect_incr_pline(
760 int isect_start_boundary(
773 double isect_start_dif(
787 int isect_start_incr(
849 int isect_startPlane(
884 int isect_startPlanePt(
940 int projectbyApproximateAsLBRep(
962 int projectbyRemovKnots(
991 virtual bool in_range_face(
const MGPosition& uv)
const{
return true;};
995 bool uvuvE_is_a_midpoint(
1009 void projNormalProc(
1024 typedef std::pair<const MGBox*,int> mgBCPair;
1026 class MG_DLL_DECLR MGBox2PositionCompare{
1028 MGBox2PositionCompare(
const MGPosition& P):m_position(P){;};
1029 bool operator()(
const MGBox* b1,
const MGBox* b2)
const;
1030 bool operator()(
const mgBCPair& b1,
const mgBCPair& b2)
const;
MGTrimmedCurve is a part of an original curve of a limitted parameter range.
Definition: TrimmedCurve.h:50
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
A vector of mgTL2Triangle's.
Definition: TL2Triangles.h:25
TL_DATA_KIND
Triangles' data kind.
Definition: MGCL.h:280
virtual int perp_guess(double t0, double t1, const MGPosition &P, double tg, double &t) const
Return perpendicular point from a point P.
int project(const MGFSurface &surf, MGPvector< MGCurve > &vec_crv_uv, MGPvector< MGCurve > &vec_crv, const MGVector &vec) const
MGCompositeCurve is a composite of other leaf curves.
Definition: CompositeCurve.h:39
virtual int isect_guess(const MGCompositeCurve &crv, const MGPosition &uvi, double ti, MGPosition &uv, double &t) const
Definition: FSurface.h:301
double range(double t) const
MGLBRep is a class for B-SPline representation.
Definition: LBRep.h:41
virtual double param(const MGPosition &) const
Compute parameter value of given point.
Is an abstract class which represents a whole geometry and a topology.
Definition: Object.h:42
MGInterval param_range() const
Return parameter range of the curve(パラメータ範囲を返す)
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 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
Defines a Box of any space dimendion.
Definition: Box.h:34
bool operator<(const MGSurfCurve &gel2) const
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 MGPoint * point()
Return point pointer if this MGGel is an MGPoint, else return null.
Definition: Gel.h:135
MGStraight is a curve of any space dimension, represent a straight line.
Definition: Straight.h:49
virtual double param_error() const
Obtain parameter space error.
MGSSisect represents one intersection line of two surfaces.
Definition: SSisect.h:29
Represent a positional data.
Definition: Position.h:28
MGSurface is an abstract class of 3D surface.
Definition: Surface.h:54
bool in_range(double t) const
Test if input parameter value is inside parameter range of the line.
MGCurve * curve()
Return curve pointer if this MGGel is an MGCurve, else return null.
Definition: Curve.h:287
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
ELEMENT_TARGET
Definition: VBO.h:84
virtual double closest(const MGPosition &point) const
Compute the closest point parameter value of this curve from a point.
MGPosition_list perps(const MGCurve &crv2) const
virtual double knot_u(int i) const
Access to i-th element of u knot.
Definition: FSurface.h:336
Defines BPoint seq of a space dimension and of a capacity.
Definition: BPointSeq.h:38
void arrow(double t, MGPosition data[4]) const
Generate arrow data of the tangent at the parameter value t of the curve.
MGCCisect_list isect(const MGCurve &curve2) const
Intersection of Curve.
MGFSurface is an abstract class to provide the comman interfaces to MGFace and MGSurface.
Definition: FSurface.h:33
virtual int isect_guess(const MGStraight &sl, const MGPosition &uvi, double ti, MGPosition &uv, double &t) const
Definition: FSurface.h:289
MGPosition_list provides a list of Positions.
Definition: Position_list.h:27
MGHHisect_vector defines a vector of MGHHisect.
Definition: HHisect_vector.h:28
MGFSurface()
Null FSurface.
Definition: FSurface.h:48
container_type::iterator iterator
Definition: Position_list.h:33
void triangulate(const MGLoop &polygon, mgTL2Triangles &triangles)
virtual double knot_v(int i) const
Access to i-th element of v knot.
Definition: FSurface.h:339
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 ~MGFSurface()
Definition: FSurface.h:54
virtual bool on(const MGPosition &point, double &t) const
Test if given point is on the curve or not.
bool operator>(const MGFSurface &f2) const
Definition: FSurface.h:60
Defines non-decreasing double data array.
Definition: NDDArray.h:27
MGFSurface(const MGFSurface &fsurf)
Copy constructor.
Definition: FSurface.h:51
bool hasInnerBoundaryLoop() const
Definition: FSurface.h:173
mgSysGL is a class to provide a facility to draw temporal pictures.
Definition: sysGL.h:26
OpenGL 4 用描画のためのクラス, in other words, display list.
Definition: VBO.h:76
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.
virtual bool hasLoop(const MGBox &uvbox) const
Definition: FSurface.h:177
Define a unit vector, is a MGVector.
Definition: Unit_vector.h:17
MGSurfCurve is a curve on a surface.
Definition: SurfCurve.h:43