surf_surf_int
List of: Classes
Subjects: Intersectors
Contents: Kernel

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.
PDF/KERN/37CLSR.PDF
HTM/DATA/KERN/KERN/37CLSR/0015.HTM