|
BRL-CAD
|
Files | |
| file | arb8.h |
| Editing operations for arb primitives. | |
Data Structures | |
| struct | rt_arb_internal |
| struct | rt_arb8_edit |
Variables | |
| const short int | rt_arb_vertices [5][24] |
| #define RT_ARB_CK_MAGIC | ( | _p | ) | BU_CKMAG(_p, RT_ARB_INTERNAL_MAGIC, "rt_arb_internal") |
| #define rt_arb_faces |
The storage for the "specific" ARB types is :
ARB4 0 1 2 0 3 3 3 3 ARB5 0 1 2 3 4 4 4 4 ARB6 0 1 2 3 4 4 5 5 ARB7 0 1 2 3 4 5 6 4 ARB8 0 1 2 3 4 5 6 7 Another summary of how the vertices of ARBs are stored:
Vertices: 1 2 3 4 5 6 7 8 Location-------------------------------------------------------------— ARB8 0 1 2 3 4 5 6 7 ARB7 0 1 2 3 4, 7 5 6 ARB6 0 1 2 3 4, 5 6, 7 ARB5 0 1 2 3 4, 5, 6, 7 ARB4 0, 3 1 2 4, 5, 6, 7 face definitions for each arb type
row 1: ARB4 row 2: ARB5 row 3: ARB6 row 4: ARB7 row 5: ARB8
To use this array, define it as follows:
const int arb_faces[5][24] = rt_arb_faces;
| #define earb8_edit_array |
edit array for arb8's
row 1: edge 12 row 2: edge 23 row 3: edge 34 row 4: edge 14 row 5: edge 15 row 6: edge 26 row 7: edge 56 row 8: edge 67 row 9: edge 78 row 10: edge 58 row 11: edge 37 row 12: edge 48
To use this array, define it as follows:
const short earb8[12][18] = earb8_edit_array;
| #define arb8_edge_vertex_mapping |
edge/vertex mapping for arb8's
row 1: edge 12 row 2: edge 23 row 3: edge 34 row 4: edge 14 row 5: edge 15 row 6: edge 26 row 7: edge 56 row 8: edge 67 row 9: edge 78 row 10: edge 58 row 11: edge 37 row 12: edge 48
To use this mapping , define it as follows: const short arb8_evm[12][2] = arb8_edge_vertex_mapping;
| #define earb7_edit_array |
edit array for arb7's
row 1: edge 12 row 2: edge 23 row 3: edge 34 row 4: edge 41 row 5: edge 15 row 6: edge 26 row 7: edge 56 row 8: edge 67 row 9: edge 37 row 10: edge 57 row 11: edge 45 row 12: point 5
To use this array, define it as follows:
const short earb7[12][18] = earb7_edit_array;
| #define arb7_edge_vertex_mapping |
edge/vertex mapping for arb7's
row 1: edge 12 row 2: edge 23 row 3: edge 34 row 4: edge 41 row 5: edge 15 row 6: edge 26 row 7: edge 56 row 8: edge 67 row 9: edge 37 row 10: edge 57 row 11: edge 45 row 12: point 5
To use this mapping , define it as follows: const short arb7_evm[12][2] = arb7_edge_vertex_mapping;
| #define earb6_edit_array |
edit array for arb6's
row 1: edge 12 row 2: edge 23 row 3: edge 34 row 4: edge 14 row 5: edge 15 row 6: edge 25 row 7: edge 36 row 8: edge 46 row 9: point 5 row 10: point 6
To use this array, define it as follows:
const short earb6[10][18] = earb6_edit_array;
| #define arb6_edge_vertex_mapping |
edge/vertex mapping for arb6's
row 1: edge 12 row 2: edge 23 row 3: edge 34 row 4: edge 14 row 5: edge 15 row 6: edge 25 row 7: edge 36 row 8: edge 46 row 9: point 5 row 10: point 6
To use this mapping , define it as follows:
const short arb6_evm[10][2] = arb6_edge_vertex_mapping;
| #define earb5_edit_array |
edit array for arb5's
row 1: edge 12 row 2: edge 23 row 3: edge 34 row 4: edge 14 row 5: edge 15 row 6: edge 25 row 7: edge 35 row 8: edge 45 row 9: point 5
To use this array, define it as follows:
const short earb5[9][18] = earb5_edit_array;
| #define arb5_edge_vertex_mapping |
edge/vertex mapping for arb5's
row 1: edge 12 row 2: edge 23 row 3: edge 34 row 4: edge 14 row 5: edge 15 row 6: edge 25 row 7: edge 35 row 8: edge 45 row 9: point 5
To use this mapping , define it as follows:
const short arb5_evm[9][2] = arb5_edge_vertex_mapping;
| #define earb4_edit_array |
edit array for arb4's
row 1: point 1 row 2: point 2 row 3: point 3 row 4: dummy row 5: point 4
To use this array, define it as follows:
const short earb4[5][18] = earb4_edit_array;
| #define arb4_edge_vertex_mapping |
| #define RT_ARB_VALIDATE_NONSTANDARD 0x1 |
ARB validation issue flags returned by rt_arb_validate(). Non-standard vertex ordering/encoding
| #define RT_ARB_VALIDATE_NONCOPLANAR 0x2 |
| #define RT_ARB_VALIDATE_CONCAVE 0x4 |
| #define RT_ARB_VALIDATE_TWISTED 0x8 |
| #define RT_ARB_REPAIR_SNAP_VERTICES 0x1 |
| #define RT_ARB_EDIT_EDGE_DIR 0x1 |
|
extern |
EXT4TO6(): extrudes face pt1 pt2 pt3 of an ARB4 "distance" to produce ARB6
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
determines COMGEOM arb types from GED general arbs
Inputs -
Returns number of distinct edge vectors (number of entries in uvec array)
Implicit returns - *cgtype - Comgeom type (number range 4..8; ARB4 .. ARB8). uvec[8] - indices of unique vertices (return value is the number of valid entries) svec[11] - Entries [0] and [1] are special (they are the counts of duplicates) entries 2-10 are 2 lists of duplicate vertices entry[0] gives length of first list (starts at entry[2]) entry[1] gives length of second list (starts at entry[2+entry[0]])
|
extern |
Given an ARB in internal form, return its specific ARB type.
Set tol.dist = 0.0001 to obtain past behavior.
Returns - 0 Error in input ARB 4 ARB4 5 ARB5 6 ARB6 7 ARB7 8 ARB8
Implicit return - rt_arb_internal pt[] array reorganized into GIFT "standard" order.
|
extern |
Find the center point for the arb in the rt_db_internal structure, and return it as a point_t.
|
extern |
Takes the planes[] array and intersects the planes to find the vertices of a GENARB8. The vertices are stored into arb->pt[]. This is an analog of rt_arb_calc_planes().
|
extern |
|
extern |
Return non-zero if an ARB uses a non-standard vertex ordering/encoding.
| arb | ARB primitive internals |
| tol_sq | squared distance tolerance used when identifying duplicate points |
|
extern |
Check an ARB for invalid shape conditions.
If issues is non-NULL, it will be set to a bitwise OR of RT_ARB_VALIDATE_* flags. If error_msg_ret is non-NULL, a short diagnostic is appended for each detected condition.
Returns - 0 no issues detected non-zero one or more RT_ARB_VALIDATE_* issues detected
|
extern |
Attempt to repair an invalid or non-canonical ARB by reassembling its input points into a standard ARB4-ARB8 vertex ordering.
The repair is intentionally conservative: it succeeds only if a candidate rebuilt ARB validates cleanly with rt_arb_validate(). On success, out_arb is filled with the repaired ARB and the returned value is its ARB type (4..8). If RT_ARB_REPAIR_SNAP_VERTICES is set, repair may also fit planes to recoverable non-coplanar candidate faces and snap vertices to their plane intersections when the convex hull volume is preserved.
Returns - 4..8 repaired ARB type 0 no repair was necessary; out_arb is a copy of arb -1 repair failed or no valid ARB4-ARB8 candidate was found
Finds the intersection point of three faces of an ARB.
Returns - 0 success, value is in 'point' -1 failure
|
extern |
Calculate the plane (face) equations for an arb output previously went to es_peqn[i].
Returns - -1 Failure 0 OK
Note - This function migrated from mged/edsol.c.
|
extern |
Moves an arb edge (end1, end2) with bounding planes bp1 and bp2 through point "thru". The edge has (non-unit) slope "dir". Note that the fact that the normals here point in rather than out makes no difference for computing the correct intercepts. After the intercepts are found, they should be checked against the other faces to make sure that they are always "inside".
An ARB edge is moved by finding the direction of the line containing the edge and the 2 "bounding" planes. The new edge is found by intersecting the new line location with the bounding planes. The two "new" planes thus defined are calculated and the affected points are calculated by intersecting planes. This keeps ALL faces planar.
|
extern |
|
extern |