55 bool points_equal(
const Eigen::MatrixXd& a,
const Eigen::MatrixXd& b)
const {
56 return (a - b).norm() < absolute_;
67 return std::abs(value) < absolute_;
89 return std::abs(a - b) < absolute_ + relative_ * std::max(std::abs(a), std::abs(b));
97 double angular()
const {
return angular_; }
117 return Tolerance(absolute_ * factor, relative_ * factor, angular_ * factor, snapping_ * factor);
129 return Tolerance(absolute_ * factor, relative_ * factor, angular_ * factor, snapping_ * factor);
140 return Tolerance(std::min(a.absolute_, b.absolute_),
141 std::min(a.relative_, b.relative_),
142 std::min(a.angular_, b.angular_),
143 std::min(a.snapping_, b.snapping_));
169 static constexpr
double Modeling() {
return 1e-6; }
171 static constexpr
double Fitting() {
return 1e-3; }
175 static constexpr
double Snapping() {
return 1e-4; }
~ToleranceScope()
退出容差作用域,恢复之前的全局容差
ToleranceScope(const Tolerance &tol)
进入新的容差作用域
static Tolerance min(const Tolerance &a, const Tolerance &b)
合并两个容差,取更严格的(更小的)
static constexpr double Intersection()
求交级精度 (1e-8):精确求交、布尔运算
double snapping() const
获取吸附容差
Tolerance relax(double factor=10.0) const
放宽容差
Tolerance(double absolute=1e-6, double relative=1e-8, double angular=1e-8, double snapping=1e-4)
构造容差对象
static Tolerance & global()
获取全局容差实例
static constexpr double Snapping()
吸附级精度 (1e-4):点合并、顶点焊接
double relative() const
获取相对容差
double angular() const
获取角度容差
static void set_global(const Tolerance &tol)
设置全局容差
static constexpr double Fitting()
拟合级精度 (1e-3):曲面拟合、近似计算
bool points_equal(const Eigen::MatrixXd &a, const Eigen::MatrixXd &b) const
判断两点是否相等(基于绝对容差)
static constexpr double Modeling()
建模级精度 (1e-6):通用几何建模
Tolerance tighten(double factor=0.1) const
收紧容差
bool equals(T a, T b) const
混合容差相等判断
bool is_zero(T value) const
判断值是否接近零
double absolute() const
获取绝对容差