Purpose:
|
Represents the intersection of two face surfaces and returns zero or more curves.
|
|
Derivation:
|
surf_surf_int : ACIS_OBJECT : -
|
|
Filename:
|
kern/kernel/kernint/intsfsf/sfsfint.hxx
|
|
Description:
|
This class holds the details of the intersection of two face surfaces and returns zero or more curves. Every edge of each face is assumed to have been intersected with the other surface, so the intersection points may be used to assist (for example, if the surfaces are parametric).
|
|
References:
|
KERN
|
curve, pcurve, surf_surf_term, surface
|
|
Data:
|
public curve *cur;
|
|
It indicates the face-face coincidence, and it may be
NULL. In this case, all face-body relationships are either
surf_symmetric or
surf_antisymmetric, and this is the only
CURVE_LIST record in the list.
|
|
|
public double *split_param;
|
|
An array of parameter values flagging bounded regions of the curve where it lies outside the region of interest. Each value is in a typical parameter value within the portion outside the box. If no box is specified, or if the intersection curve lies wholly within the box, or if it is unbounded but only enters the box in one interval, then this pointer is
NULL; otherwise it must point to an array on the heap.
|
|
|
public int nsplit;
|
|
The number of values in the array
split_param. This is 0 if
split_param is
NULL.
|
|
|
public pcurve *pcur1;
|
|
The first pcurve, it provides the parametric-space intersection curve with respect to the intersection surfaces, if they are parametric. It may be
NULL even if
cur is not
NULL.
|
|
|
public pcurve *pcur2;
|
|
The second pcurve, it provides the parametric-space intersection curve with respect to the intersection surfaces, if they are parametric. It may be
NULL even if
cur is not
NULL.
|
|
|
public double end_param;
|
|
The parameter value of
end_point, which is meaningless if the
end_point is
NULL.
|
|
|
public double start_param;
|
|
The parameter value of
start_point, which is meaningless if the
start_point is
NULL.
|
|
|
public surf_int_type int_type;
|
|
The classification of the intersection type (normal, tangent, or antitangent).
|
|
|
public surf_int_type left_int_type[2];
|
|
Intersection type (with respect to other face) of the portions of each face to the left of the intersection curve. Only used for mesh surface intersections (otherwise the single int_type above is sufficient). Set to int_unknown if not used.
|
|
|
public surf_int_type right_int_type[2];
|
|
Intersection type (with respect to other face) of the portions of each face to the left of the intersection curve. Only used for mesh surface intersections (otherwise the single int_type above is sufficient). Set to int_unknown if not used.
|
|
|
public surf_surf_int *next;
|
|
For chaining surface-surface intersections.
|
|
|
public surf_surf_rel aux_left_rel[ 2 ];
|
|
For each of the surfaces, it specifies the relationship on the left side of the intersection curve to the auxiliary surface. Because this is always a clean "inside" or "outside," the right relationship is always the converse, so it does not need to be recorded.
|
|
|
public surf_surf_rel left_surf_rel[ 2 ];
|
|
The relationship (with respect to the other face) of the portions of each face to the left of the intersection curve.
|
|
|
public surf_surf_rel right_surf_rel[ 2 ];
|
|
The relationship (with respect to the other face) of the portions of each face to the right of the intersection curve.
|
|
|
public surf_surf_term *end_term;
|
|
The terminator point at the end of the curve. It is
NULL if the curve is not bounded at the end.
|
|
|
public surf_surf_term *start_term;
|
|
The terminator point at the start of the curve. It is
NULL if the curve is not bounded at the start.
|
|
|
public surface *aux_surf;
|
|
Normally
NULL, this points to a surface containing the intersection curve and is roughly perpendicular to the subject surfaces if they are tangential or near tangential, which allows for clean intersections with the edges of the faces.
|
|
Constructor:
|
public: surf_surf_int::surf_surf_int
(
|
|
|
curve*,
|
// curve
|
|
|
surf_surf_int*
|
// surf-surf intersection
|
|
|
|
= NULL,
|
|
|
surf_surf_term*
|
// surf-surf termination
|
|
|
|
= NULL,
|
|
|
surf_surf_term*
|
// surf-surf termination
|
|
|
|
= NULL
|
|
|
);
|
|
|
C++ initialize constructor requests memory for this object and populates it with the data supplied as arguments.
|
|
|
The default type is normal, and the relationships are suitable for the conventional curve direction being the cross products of the surface normals in the given order.
|
|
|
|
|
|
|
public: surf_surf_int::surf_surf_int
(
|
|
|
SPAposition const&,
|
// position
|
|
|
surf_surf_int*
|
// next surf-surf
|
|
|
|
= NULL
|
// intersection
|
|
|
);
|
|
|
C++ initialize constructor requests memory for this object and populates it with the data supplied as arguments.
|
|
|
Constructor for an intersection curve representing an isolated point. The default type is
normal and the relationships are set to
unknown.
|
|
|
|
|
Destructor:
|
public: surf_surf_int::~surf_surf_int
();
|
|
|
C++ destructor, deleting a
surf_surf_int.
|
|
|
|
Methods:
|
public: void surf_surf_int::debug
(
|
|
|
FILE*
|
// file name
|
|
|
|
= debug_file_ptr
|
|
|
) const;
|
|
|
Writes debug information about
surf_surf_int to the printer or to the specified file.
|