/*
uf_sf_composite.h
ÎļþÃèÊö:
Internal type definitions for UF_SF_COMPOSITE (Scenario Composite Face)
module.
*******************************************************************************/
#ifndef UF_SF_COMPOSITE_H_INCLUDED
#define UF_SF_COMPOSITE_H_INCLUDED
#include <uf_sf_types.h>
/******************** Default definitions for Meshing attributes ***************/
/* ----------------------------------------------------------------------------
Decription of UF_SF_COMPOSITE_parameters_s:
1. auto_create_comp_edges: This logical parameter indicates whether composite
edges should be created automatically during the
creation of composite faces. For example, during
the manual creation of a composite face, if, by
compositing the faces together 2 of the bounding
edge meet at a vertex that is only used by those 2
edges, these 2 edges will be candidates to be
composited into a composite edge. If
auto_create_comp_edges == FALSE, no composite edges
will be created. If auto_create_comp_edges == TRUE,
the edgew will be composited together if they meet
the min_edge_int_angle criteria below.
2. min_edge_int_angle: This angle (input in degrees) is the criteria by
which it is decided whether to composite 2 edges
together or not. If 2 edges share a common vertex,
and that vertex is used by only 2 edges, then the
angle (beta) between the 2 edges is computed. If
beta > min_edge_int_angle, the edges will be
composited together. If beta <= min_edge_int_angle,
the edges will not be composited together.
*****************************************************************************/
struct UF_SF_COMPOSITE_parameters_s
{
logical auto_create_comp_edges; /* see description above. */
int min_edge_int_angle; /* see description above. */
};
typedef struct UF_SF_COMPOSITE_parameters_s UF_SF_COMPOSITE_parameters_t;
/* ----------------------------------------------------------------------------
Decription of UF_SF_COMPOSITE_auto_parameters_s:
*
* 1. comp_parameters :- Parameters used by both manual and auto
* compositing. See description of
* UF_SF_COMPOSITE_parameters_t above.
*
* 2. min_edge_size :- The minimum edge length allowed in the model.
* Valid Range: {0.0 < min_edge_size}
* Autocompositing will be performed on body_tag in
* order to eliminate all edges that are smaller
* than min_edge_size. Note, however, that it is
* not guaranteed that all edges smaller than
* min_edge_size will be eliminated because doing so
* may violate the face_deviation_angle.
*
* 3. sliver_factor :- The user specified minimum sliver factor.
* sliver_factor is a ratio related to the ratio of
* surface area divided by circumference which
* detect faces that have a small surface area
* compared to their curcumference.
* Valid Range: {0.0 < sliver_factor <= 1.0} where
* 0.000 == a zero surface area surface.
* 0.056 == a rectangle 1x1000
* 0.175 == a rectangle 1x100
* 0.300 == recommended value.
* 0.510 == a rectangle 1x10
* 0.510 == a rectangle 1x10
* 0.886 == a perfect square.
* 1.000 == a perfect circle.
*
* 4. min_corner_angle :- An angle (in degrees) representing the minimum
* allowable angle at the corner of a surface. Any
* face with an angle less than this at a corner
* will be a candidate for compositing with a
* neighbor surface to eliminate this small angle.
* Like min_edge_size, however, there is no
* guarantee that all corner angles less than
* min_corner_angle will be eliminated because
* doing so may violate the face_deviation_angle.
* Valid Range: {0.0 <= min_corner_angle <= 90}
*
* 5. face_deviation_angle :- An angle (in degrees) representing the maximum
* that the dihedral angle between 2
* adjacent faces deviate from 180 degrees and
* still be considered a candiate for compositing.
* On the edge that is shared by surface1 and
* surface2, the surface normals of the 2 surfaces
* are compared. If they deviate from each other
* by more than face_deviation_angle, then the
* surface will not be composite together unless
* necessary to eliminate a face which violates
* the sliver_factor.
* Valid Range: {0.0 <= face_deviation_angle <= 180}
*
*****************************************************************************/
struct UF_SF_COMPOSITE_auto_parameters_s
{
UF_SF_COMPOSITE_parameters_t comp_parameters;
double min_edge_size;
double sliver_factor;
int min_corner_angle;
int face_deviation_angle;
};
typedef struct UF_SF_COMPOSITE_auto_parameters_s UF_SF_COMPOSITE_auto_parameters_t;
#endif /* UF_SF_COMPOSITE_H_INCLUDED */