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 |
|
extern |
EXT4TO6(): extrudes face pt1 pt2 pt3 of an ARB4 "distance" to produce ARB6
|
extern |
|
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 |
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 |