## Overview

The **RoseMeshOptions** class holds parameters used by the
mesher to control the tradeoff between the accuracy of the mesh and
the cost of generating and storing it.

Each parameter has a **get** and a **set** function. Some
are absolute values, while others are relative values given as the
fraction of the estimated bounding box diagonal.

## AngUnit

RoseUnitgetAngUnit() const; voidsetAngUnit(RoseUnit u);

The **AngUnit**() value gives the unit to be used when the
mesher needs to evaluate an angle measure, such as the semi-angle of a
conical surface or the flange angle of an I-beam profile. This is
usually found in context information from the source CAD data. The
default value is degrees.

## LenUnit

RoseUnitgetLenUnit() const; voidsetLenUnit(RoseUnit u);

The **LenUnit**() value gives the length unit that describes
coordinate values in the mesh. This is usually found in context
information from the source CAD data. The default value is
millimeters.

## MinFaceAbsolute

doublegetMinFaceAbsolute() const; voidsetMinFaceAbsolute(double v);

The **MinFaceAbsolute** value is a length that controls the
minimal size of a face to facet. The default value is zero, which
means no faces will be filtered out.

If this is set to a positive value, any face with a bounding box diameter smaller than this length will be ignored. This may result in faster results and less data for visualization, but will the resulting mesh will have gaps. Do not use this if you need a watertight shell for geometric analysis.

## MinFaceFraction

doublegetMinFaceFraction() const; voidsetMinFaceFraction(double v);

The **getMinFaceFraction**() function is a ratio value that
controls the minimal size of a face to facet. The default value is
zero, which means no faces will be filtered out.

If this is set to a positive value, the diagonal of the estimated bounding box of the shell will be multiplied by this value to produce a length. This length will be used to filter faces in the same way as MinFaceAbsolute.

This is ratio value between zero and one. If you specify a value greater than one, all faces will be filtered.

## SaveFaceInfo

intgetSaveFaceInfo() const; voidsetSaveFaceInfo(int yn)

The **SaveFaceInfo**() value controls whether surface and the UV
polygon information created by the faceter is saved after the mesh is
complete. If true (non-zero), the structure returned
by RoseMesh::getFaceInfo()
will contain this information. If zero, it will be removed once mesh
generation is complete. The default value is true.

## SaveFaceSolver

intgetSaveFaceSolver() const; voidsetSaveFaceSolver(int yn);

The **SaveFaceSolver**() value controls whether the surface
solver created by the faceter is saved. The solver can contain a large
amount of data so it is treated separately than
the SaveFaceInfo value.

The solver will be preserved if both this value and SaveFaceInfo are true. The default value is false.

## ToleranceAbsolute

doublegetToleranceAbsolute() const; voidsetToleranceAbsolute(double v);

The **ToleranceAbsolute** value is the maximum distance that a
point in a facet or edge may deviate from the original CAD surface or
curve. A small value results in more facets, while larger value will
result in fewer facets and faster rendering. Setting the tolerance
too large may result in faces that cannot be faceted at all.

The default value of this parameter is zero. If it is zero when mesh creation begins, a value will be computed and assigned using the estimated bounding box and ToleranceFraction. The value will never be smaller than the Uncertainty.

After creating a mesh from CAD data, this will always contain the actual tolerance value used, whether pre-assigned or computed.

## ToleranceFraction

doublegetToleranceFraction() const; voidsetToleranceFraction(double v);

The **ToleranceFraction** is a ratio value that describes the
maximum distance that a point in a facet or edge may deviate from the
original CAD surface or curve. This is given as a fraction of the
estimated bounding box diagonal, so it will result in a consistent
quality for each shape regardless of its size.

This is used if ToleranceAbsolute is not set. The default value is 1/500.

## ToleranceAngle

doublegetToleranceAngle( RoseUnit unit=roseunit_rad) const; voidsetToleranceAngle( double v, unit=roseunit_rad); doublegetToleranceCos() const; voidsetToleranceCos();

The **ToleranceAngle** is the minimum angle between two adjacent facets
segments. This is used to insure that the mesh will not contain sharp corners
in areas of high curvature. For example, if there is a small hole in a large
block, the hole could be rendered as an octogon, or even a square if we only
consider the linear tolerance. The value is intermally stored as the cosine
of the angle, but there is a method to get and set the value as either degrees
or radians.

Note that this value interpreted as the angle of change as we traverse the surface. This means that if we pass across boundary between coplanar facets, the angle is zero.

The default value is .995, which is about 5.7 degrees.

## Uncertainty

doublegetUncertainty() const; voidsetUncertainty(double v);

The **Uncertainty**() value is the maximum distance that two
points can differ by and still be considered the same. This is
usually found in context information from the source CAD data of
manifold boundary-rep solids. The default value
is `ROSE_MESH_UNCERTAINTY`

, which is defined as 1 x
10^{-8}.