28#ifndef BREP_PULLBACK_H
29#define BREP_PULLBACK_H
55extern BREP_EXPORT
int IsAtSingularity(
const ON_Surface *surf,
double u,
double v,
double tol = 1e-6);
56extern BREP_EXPORT
int IsAtSingularity(
const ON_Surface *surf,
const ON_2dPoint &pt,
double tol = 1e-6);
57extern BREP_EXPORT
int IsAtSeam(
const ON_Surface *surf,
int dir,
double u,
double v,
double tol = 0.0);
58extern BREP_EXPORT
int IsAtSeam(
const ON_Surface *surf,
double u,
double v,
double tol = 0.0);
59extern BREP_EXPORT
int IsAtSeam(
const ON_Surface *surf,
int dir,
const ON_2dPoint &pt,
double tol = 0.0);
60extern BREP_EXPORT
int IsAtSeam(
const ON_Surface *surf,
const ON_2dPoint &pt,
double tol = 0.0);
61extern BREP_EXPORT ON_2dPoint
UnwrapUVPoint(
const ON_Surface *surf,
const ON_2dPoint &pt,
double tol = 0.0);
63extern BREP_EXPORT
void SwapUVSeamPoint(
const ON_Surface *surf,ON_2dPoint &p,
int hint = 3);
64extern BREP_EXPORT
void ForceToClosestSeam(
const ON_Surface *surf,ON_2dPoint &pt,
double tol= 0.0);
66extern BREP_EXPORT
bool FindTrimSeamCrossing(
const ON_BrepTrim &trim,
double t0,
double t1,
double &seam_t,ON_2dPoint &from,ON_2dPoint &to,
double tol = 0.0);
69extern BREP_EXPORT
bool ConsecutivePointsCrossClosedSeam(
const ON_Surface *surf,
const ON_2dPoint &pt,
const ON_2dPoint &prev_pt,
int &udir,
int &vdir,
double tol = 1e-6);
96 const ON_BrepFace&
face,
97 const ON_3dPoint& point,
127 const ON_Curve *curve,
130 double flatness = 1.0e-3);
138 const ON_NurbsCurve *nc,
140 double maximum_distance = 0.0,
141 const ON_Interval *sub_domain = NULL
148 const ON_BrepTrim *trim,
150 double maximum_distance = 0.0,
151 const ON_Interval *sub_domain = NULL
154extern BREP_EXPORT
bool
158 const ON_NurbsCurve *nc,
160 double maximum_distance = 0.0,
161 const ON_Interval *subdomain = NULL
Header file for the BRL-CAD common definitions.
#define BREP_SAME_POINT_TOLERANCE
#define BREP_EDGE_MISS_TOLERANCE
#define BREP_FCP_ROOT_EPSILON
double DistToNearestClosedSeam(const ON_Surface *surf, const ON_2dPoint &pt)
void SwapUVSeamPoint(const ON_Surface *surf, ON_2dPoint &p, int hint=3)
bool ON_NurbsCurve_GetClosestPoint(double *t, ON_3dPoint *cp, const ON_NurbsCurve *nc, const ON_3dPoint &p, double maximum_distance=0.0, const ON_Interval *sub_domain=NULL)
bool ConsecutivePointsCrossClosedSeam(const ON_Surface *surf, const ON_2dPoint &pt, const ON_2dPoint &prev_pt, int &udir, int &vdir, double tol=1e-6)
bool Find3DCurveSeamCrossing(PBCData &data, double t0, double t1, double offset, double &seam_t, ON_2dPoint &from, ON_2dPoint &to, double tol=0.0, double same_point_tol=BREP_SAME_POINT_TOLERANCE, double within_distance_tol=BREP_EDGE_MISS_TOLERANCE)
int check_pullback_singularity_bridge(const ON_Surface *surf, const ON_2dPoint &p1, const ON_2dPoint &p2)
ON_2dPoint UnwrapUVPoint(const ON_Surface *surf, const ON_2dPoint &pt, double tol=0.0)
int IsAtSingularity(const ON_Surface *surf, double u, double v, double tol=1e-6)
int IsAtSeam(const ON_Surface *surf, int dir, double u, double v, double tol=0.0)
bool FindTrimSeamCrossing(const ON_BrepTrim &trim, double t0, double t1, double &seam_t, ON_2dPoint &from, ON_2dPoint &to, double tol=0.0)
bool trim_GetClosestPoint3dFirstOrder(const ON_BrepTrim &trim, const ON_3dPoint &p, ON_2dPoint &p2d, double &t, double &distance, const ON_Interval *interval, double same_point_tol=BREP_SAME_POINT_TOLERANCE, double within_distance_tol=BREP_EDGE_MISS_TOLERANCE)
bool ON_NurbsCurve_ClosestPointToLineSegment(double *dist, double *t, const ON_NurbsCurve *nc, const ON_Line &l, double maximum_distance=0.0, const ON_Interval *subdomain=NULL)
PBCData * pullback_samples(const ON_Surface *surf, const ON_Curve *curve, double tolerance=1.0e-6, double flatness=1.0e-3, double same_point_tol=BREP_SAME_POINT_TOLERANCE, double within_distance_tol=BREP_EDGE_MISS_TOLERANCE)
bool check_pullback_data(std::list< PBCData * > &pbcs)
bool surface_GetClosestPoint3dFirstOrder(const ON_Surface *surf, const ON_3dPoint &p, ON_2dPoint &p2d, ON_3dPoint &p3d, double ¤t_distance, int quadrant=0, double same_point_tol=BREP_SAME_POINT_TOLERANCE, double within_distance_tol=BREP_EDGE_MISS_TOLERANCE)
void ForceToClosestSeam(const ON_Surface *surf, ON_2dPoint &pt, double tol=0.0)
bool ON_TrimCurve_GetClosestPoint(double *t, const ON_BrepTrim *trim, const ON_3dPoint &p, double maximum_distance=0.0, const ON_Interval *sub_domain=NULL)
void float float int int int int * interval
bool get_closest_point(ON_2dPoint &outpt, const ON_BrepFace &face, const ON_3dPoint &point, const SurfaceTree *tree=NULL, double tolerance=BREP_FCP_ROOT_EPSILON)
ON_Curve * pullback_curve(ON_BrepFace *face, const ON_Curve *curve, SurfaceTree *tree=NULL, double tolerance=BREP_FCP_ROOT_EPSILON, double flatness=1.0e-3)
std::list< ON_2dPointArray * > * segments
brlcad::SurfaceTree * surftree