BRL-CAD
bg_tess_tol Struct Reference

#include <defines.h>

Data Fields

uint32_t magic
 
double abs
 absolute dist tol More...
 
double rel
 rel dist tol More...
 
double norm
 normal tol More...
 
double absmax
 
double absmin
 
double relmax
 
double relmin
 
double rel_lmax
 
double rel_lmin
 

Detailed Description

Tessellation (geometric) tolerances, different beasts than the calculation tolerance in bn_tol.

norm - angle between adjacent sampling normals may be no greater than norm degrees absmax - triangle edge must be no larger than length abs absmin - triangle edge may be no smaller than length absmin relmax - triangle edge must be no larger than rel % of object bbox diagonal len relmin - triangle edge may be no smaller than relmin % of object bbox diagonal len. relfacemax - triangle edge must be no larger than rel % of the smaller of the two bbox diagonal lengths of the faces associated with the edge (edge curves) or the bbox diagonal length of the current face (surfaces) relfacemin - triangle edge may be no smaller than rel % of the smaller of the two bbox diagonal lengths of the faces associated with the edge (edge curves) or the bbox diagonal length of the current face (surfaces)

For the min parameters, they will be specified with the caveot that any surface will have at least one midpt breakdown (more for closed surfaces), even if that produces smaller triangles than mins specifies. I.e. the min lengths are a goal, but not an absolute guarantee. Triangle aspect ratio constraints will also override these parameters.

With the above caveot, the first limit hit of any set limits will hault refinement. Need to track go/no-go refinement decisions so we can report on what the important parameters are for a given operation - this will give users some idea of how to modify settings to change behavior.

For the max parameters, we may need to warn on objects where they would produce a huge number of triangles if tiny maxes are specified - this is generally not user intent and will not work in extreme cases due to resource exhaustion.

All triangles must satisfy an aspect ratio parameter (smallest height may be no less than .1x the longest edge length) to prevent wildly distorted triangles.) For triangles near edges, surface points may be removed if necessary to satisfy this criteria.

All operations must satisfy above criteria first. Additional constraints are defined below. These are intended, among other things, to prevent aspect ratio problems when extremely long edge segments and fine surface meshes combine to produce extremely distorted triangles near edges):

For non-linear edges, max edge seg len may be no greater than 5x the smallest avg line segment length of any non-linear edge breakdowns in either loop associated with that edge. This will require a two-pass operation - an initial breakdown of all non-linear edge curves, and a refinement pass to break down those segments which don't meet the above criteria.

For linear edges, max edge seg len may be no greater than 10x the smallest avg line segment length of any non-linear edge breakdowns in either loop associated with that edge. This will require a third edge pass, once the above curved edge breakdown is complete.

For any surface, max edge length may be no greater than .1 times the shorter of the surface's length/width (we shrink surfaces so this number has some relation to the trimmed face size).

For a non-planar surface, max edge length may be no greater than 10 times the shortest average line segment length in the face's loops' edges (curved or linear). (e.g. triangles in curved surfaces may not be enormously large compared to the edges' fidelity.) We don't impose this restriction on planar surfaces on the theory that any valid CDT will accurate represent the surface, so we don't need to enforce any particular edge length on interior triangles. However...

Definition at line 114 of file defines.h.

Field Documentation

◆ magic

uint32_t magic

Definition at line 115 of file defines.h.

◆ abs

double abs

absolute dist tol

Definition at line 116 of file defines.h.

◆ rel

double rel

rel dist tol

Definition at line 117 of file defines.h.

◆ norm

double norm

normal tol

Definition at line 118 of file defines.h.

◆ absmax

double absmax

Definition at line 121 of file defines.h.

◆ absmin

double absmin

Definition at line 122 of file defines.h.

◆ relmax

double relmax

Definition at line 123 of file defines.h.

◆ relmin

double relmin

Definition at line 124 of file defines.h.

◆ rel_lmax

double rel_lmax

Definition at line 125 of file defines.h.

◆ rel_lmin

double rel_lmin

Definition at line 126 of file defines.h.


The documentation for this struct was generated from the following file: