Functions for finding the common boundary of adjacent NURBS patches. More...
#include <closing_boundary.h>
Classes | |
struct | Parameter |
Public Types | |
enum | Type { COMMON_BOUNDARY_POINT_MEAN, COMMON_BOUNDARY_POINT_TANGENTS, COMMON_BOUNDARY_POINT_PLANES, CLOSEST_POINTS_BOUNDARY, CLOSEST_POINTS_INTERIOR } |
Static Public Member Functions | |
static Eigen::Vector3d | commonBoundaryPoint1 (ON_NurbsSurface &n1, ON_NurbsSurface &n2, Eigen::Vector2d ¶ms1, Eigen::Vector2d ¶ms2, const Eigen::Vector3d &start, unsigned nsteps, double &error, double accuracy) |
calculate common boundary by iteratively calculating the mean of the closest points to the 'start' point on both of the NURBS. | |
static Eigen::Vector3d | commonBoundaryPoint2 (ON_NurbsSurface &n1, ON_NurbsSurface &n2, Eigen::Vector2d ¶ms1, Eigen::Vector2d ¶ms2, const Eigen::Vector3d &start, unsigned nsteps, double &error, double accuracy) |
calculate common boundary by iteratively calculating the intersections of the tangent of the closest points to the 'start' point. | |
static Eigen::Vector3d | commonBoundaryPoint3 (ON_NurbsSurface &n1, ON_NurbsSurface &n2, Eigen::Vector2d ¶ms1, Eigen::Vector2d ¶ms2, const Eigen::Vector3d &start, unsigned nsteps, double &error, double accuracy) |
calculate common boundary by iteratively calculating the intersection of the tangent planes at the closest points and the plane defined by the 'start' and the 2 closest points. | |
static double | getLineDistance (const Eigen::Vector3d &P0, const Eigen::Vector3d &u, const Eigen::Vector3d &Q0, const Eigen::Vector3d &v, Eigen::Vector3d &P, Eigen::Vector3d &Q) |
calculate the distance and end-points (P,Q) of two skew lines defined as L0 = P0 + t*u, L1 = Q0 + s*v | |
static Eigen::Vector3d | intersectPlanes (const Eigen::Vector3d &N1, double d1, const Eigen::Vector3d &N2, double d2, const Eigen::Vector3d &N3, double d3) |
calculate intersection point of three planes | |
static void | optimizeBoundary (std::vector< ON_NurbsSurface > &nurbs_list, std::vector< NurbsDataSurface > &data_list, Parameter param) |
close boundary sequentially (for global optimization, look up global_optimization.h). Common boundary points are computed and added to | |
static void | sampleFromBoundary (ON_NurbsSurface *nurbs, vector_vec3d &point_list, vector_vec2d ¶m_list, unsigned samples) |
sample points from nurbs surface boundary, uniform distributed | |
static void | sampleRandom (ON_NurbsSurface *nurbs, vector_vec3d &point_list, unsigned samples) |
sample points from nurbs surface patch, random distributed | |
static void | sampleUniform (ON_NurbsSurface *nurbs, vector_vec3d &point_list, unsigned samples) |
sample points from nurbs surface patch, uniform distributed |
Functions for finding the common boundary of adjacent NURBS patches.
Definition at line 53 of file closing_boundary.h.
COMMON_BOUNDARY_POINT_MEAN | |
COMMON_BOUNDARY_POINT_TANGENTS | |
COMMON_BOUNDARY_POINT_PLANES | |
CLOSEST_POINTS_BOUNDARY | |
CLOSEST_POINTS_INTERIOR |
Definition at line 56 of file closing_boundary.h.
Eigen::Vector3d ClosingBoundary::commonBoundaryPoint1 | ( | ON_NurbsSurface & | n1, |
ON_NurbsSurface & | n2, | ||
Eigen::Vector2d & | params1, | ||
Eigen::Vector2d & | params2, | ||
const Eigen::Vector3d & | start, | ||
unsigned | nsteps, | ||
double & | error, | ||
double | accuracy | ||
) | [static] |
calculate common boundary by iteratively calculating the mean of the closest points to the 'start' point on both of the NURBS.
Definition at line 73 of file closing_boundary.cpp.
Eigen::Vector3d ClosingBoundary::commonBoundaryPoint2 | ( | ON_NurbsSurface & | n1, |
ON_NurbsSurface & | n2, | ||
Eigen::Vector2d & | params1, | ||
Eigen::Vector2d & | params2, | ||
const Eigen::Vector3d & | start, | ||
unsigned | nsteps, | ||
double & | error, | ||
double | accuracy | ||
) | [static] |
calculate common boundary by iteratively calculating the intersections of the tangent of the closest points to the 'start' point.
Definition at line 112 of file closing_boundary.cpp.
Eigen::Vector3d ClosingBoundary::commonBoundaryPoint3 | ( | ON_NurbsSurface & | n1, |
ON_NurbsSurface & | n2, | ||
Eigen::Vector2d & | params1, | ||
Eigen::Vector2d & | params2, | ||
const Eigen::Vector3d & | start, | ||
unsigned | nsteps, | ||
double & | error, | ||
double | accuracy | ||
) | [static] |
calculate common boundary by iteratively calculating the intersection of the tangent planes at the closest points and the plane defined by the 'start' and the 2 closest points.
Definition at line 173 of file closing_boundary.cpp.
double ClosingBoundary::getLineDistance | ( | const Eigen::Vector3d & | P0, |
const Eigen::Vector3d & | u, | ||
const Eigen::Vector3d & | Q0, | ||
const Eigen::Vector3d & | v, | ||
Eigen::Vector3d & | P, | ||
Eigen::Vector3d & | Q | ||
) | [static] |
calculate the distance and end-points (P,Q) of two skew lines defined as L0 = P0 + t*u, L1 = Q0 + s*v
Definition at line 44 of file closing_boundary.cpp.
Eigen::Vector3d ClosingBoundary::intersectPlanes | ( | const Eigen::Vector3d & | N1, |
double | d1, | ||
const Eigen::Vector3d & | N2, | ||
double | d2, | ||
const Eigen::Vector3d & | N3, | ||
double | d3 | ||
) | [static] |
calculate intersection point of three planes
Definition at line 66 of file closing_boundary.cpp.
void ClosingBoundary::optimizeBoundary | ( | std::vector< ON_NurbsSurface > & | nurbs_list, |
std::vector< NurbsDataSurface > & | data_list, | ||
Parameter | param | ||
) | [static] |
close boundary sequentially (for global optimization, look up global_optimization.h). Common boundary points are computed and added to
Definition at line 330 of file closing_boundary.cpp.
void ClosingBoundary::sampleFromBoundary | ( | ON_NurbsSurface * | nurbs, |
vector_vec3d & | point_list, | ||
vector_vec2d & | param_list, | ||
unsigned | samples | ||
) | [static] |
sample points from nurbs surface boundary, uniform distributed
Definition at line 273 of file closing_boundary.cpp.
void ClosingBoundary::sampleRandom | ( | ON_NurbsSurface * | nurbs, |
vector_vec3d & | point_list, | ||
unsigned | samples | ||
) | [static] |
sample points from nurbs surface patch, random distributed
Definition at line 251 of file closing_boundary.cpp.
void ClosingBoundary::sampleUniform | ( | ON_NurbsSurface * | nurbs, |
vector_vec3d & | point_list, | ||
unsigned | samples | ||
) | [static] |
sample points from nurbs surface patch, uniform distributed
Definition at line 224 of file closing_boundary.cpp.