FuncViz lib
Generalized bitree/quadtree/octree library
|
Template class used to store and transform cell complexes (mesh/triangluation/etc...) and data sets generated from MR_rect_tree sample data. More...
#include <MR_cell_cplx.hpp>
Cells. | |
enum class | cell_stat_t { GOOD , TOO_FEW_PNT , TOO_MANY_PNT , NEG_PNT_IDX , BIG_PNT_IDX , DUP_PNT , DIM_LOW , BAD_EDGEI , BAD_FACEI , FACE_BENT , CONCAVE } |
Cell Status. More... | |
enum class | cell_kind_t { POINT , SEGMENT , TRIANGLE , QUAD , HEXAHEDRON , PYRAMID } |
Cell Types. More... | |
typedef node_idx_list_t | cell_verts_t |
Type to hold the vertexes of a poly cell. | |
typedef cell_lst_t | cell_structure_t |
Cell segment/face/etc structure. | |
typedef std::vector< cell_verts_t > | cell_lst_t |
Type for a list of poly cells. | |
typedef std::set< cell_verts_t > | uniq_cell_lst_t |
Used to uniquify cells. | |
cell_lst_t | cell_lst |
House all poly cells. | |
uniq_cell_lst_t | uniq_cell_lst |
Unique cell list. | |
bool | last_cell_new = true |
True if the last cell given to the add_cell() method was new – i.e. | |
cell_stat_t | last_cell_stat = cell_stat_t::GOOD |
Status of the last cell added via add_cell() method. | |
int | num_cells () const |
Number of cells. | |
cell_structure_t & | cell_kind_to_structure (cell_kind_t cell_kind, int dimension) const |
Convert cell_kind_t value to a list of vertexes. | |
int | cell_kind_to_dimension (cell_kind_t cell_kind) const |
Convert cell_kind_t value to the logical dimension of the cell. | |
int | cell_kind_to_req_pt_cnt (cell_kind_t cell_kind) const |
Convert cell_kind_t value to the number of points required for cell type. | |
int | cell_kind_to_vtk_type (cell_kind_t cell_kind) const |
Convert cell_kind_t value to the VTK cell type integer. | |
std::string | cell_kind_to_string (cell_kind_t cell_kind) const |
Convert cell_kind_t value to the VTK cell type integer. | |
cell_kind_t | req_pt_cnt_to_cell_kind (std::vector< int >::size_type node_count) const |
Convert number of points in a cell to cell_kind_t. | |
bool | cell_stat_is_good (cell_stat_t cell_stat) const |
Convert cell_stat_t to a bool (true if GOOD). | |
bool | cell_stat_is_bad (cell_stat_t cell_stat) const |
Convert cell_stat_t to a bool (true if BAD). | |
std::string | cell_stat_to_string (cell_stat_t cell_stat) const |
Convert cell_stat_t enum value to a string. | |
cell_stat_t | check_cell_vertexes (cell_kind_t cell_kind, cell_verts_t cell_verts) const |
Perform cell vertex checks. | |
cell_stat_t | check_cell_dimension (cell_kind_t cell_kind, cell_verts_t cell_verts) const |
Perform cell dimension (2D cells must not be colinear & 3D cells must not be coplainer) | |
cell_stat_t | check_cell_edge_intersections (cell_kind_t cell_kind, cell_verts_t cell_verts) const |
Checks that cell edges have expected intersections. | |
cell_stat_t | check_cell_face_intersections (cell_kind_t cell_kind, cell_verts_t cell_verts) const |
Checks that cell faces have expected intersections. | |
cell_stat_t | check_cell_faces_plainer (cell_kind_t cell_kind, cell_verts_t cell_verts) const |
Check if the vertexes of a cell are coplainer. | |
int | add_cell (cell_kind_t new_cell_kind, cell_verts_t new_cell_verts, int dimension) |
Add parts of a cell of the specified dimension. | |
bool | add_cell (cell_kind_t new_cell_kind, cell_verts_t new_cell_verts) |
Add a cell. | |
cell_stat_t | status_of_last_cell_added () const |
Retruns the status of the last cell given to the add_cell() method. | |
bool | last_cell_added_was_new () const |
Retruns true if the last cell given to the add_cell() was new and the return value of status_of_last_cell_added() is cell_stat_t::GOOD. | |
3D Geometry Computations. | |
Methods with geomi_ prefix take point index types while methods with a geomr_ prefix take double tuples.
| |
enum class | seg_isect_t { C0_EMPTY , C1_VERTEX1 , C1_INTERIOR , CI_VERTEX2 , CI_VERTEX1 , CI_VERTEX0 , BAD_SEGMENT } |
Segment intersection types. More... | |
std::string | seg_isect_to_string (seg_isect_t seg_isect) const |
Convert an seg_isect_t to a string. | |
seg_isect_t | geomi_seg_isect_type (node_idx_t ilin1pnt1, node_idx_t ilin1pnt2, node_idx_t ilin2pnt1, node_idx_t ilin2pnt2) const |
Determine the nature of the intersection between two line segments. | |
bool | geomi_seg_isect1 (node_idx_t ilin1pnt1, node_idx_t ilin1pnt2, node_idx_t ilin2pnt1, node_idx_t ilin2pnt2) const |
Check if two line segments intersect in a single point. | |
bool | geomr_seg_isect1 (const fvec3_t &lin1pnt1, const fvec3_t &lin1pnt2, const fvec3_t &lin2pnt1, const fvec3_t &lin2pnt2) const |
Check if two line segments intersect in a single point. | |
uft_t | geomi_pnt_line_distance (node_idx_t ilinpnt1, node_idx_t ilinpnt2, node_idx_t ipnt, bool seg_distance) const |
Distance between a point and a line. | |
uft_t | geomr_pnt_line_distance (const fvec3_t &linpnt1, const fvec3_t &linpnt2, const fvec3_t &pnt, bool seg_distance) const |
Distance between a point and a line. | |
uft_t | geomr_pnt_pnt_distance (const fvec3_t &pnt1, const fvec3_t &pnt2) const |
Compute the euculedian (2 norm) distance between two points. | |
fvec3_t | geomr_tri_normal (const fvec3_t &tripnt1, const fvec3_t &tripnt2, const fvec3_t &tripnt3, bool unit) const |
Compute the normal of a triangle (or a plane defined by 3 points) | |
uft_t | geomr_pnt_pln_distance (const fvec3_t &plnpnt1, const fvec3_t &plnpnt2, const fvec3_t &plnpnt3, const fvec3_t &pnt) const |
Compute the distance between a point and a plane. | |
uft_t | geomr_pnt_tri_distance (const fvec3_t &tripnt1, const fvec3_t &tripnt2, const fvec3_t &tripnt3, const fvec3_t &pnt) const |
Compute the distance between a point and a triangle. | |
bool | geomr_pnt_zero (const fvec3_t &p1) const |
Check if points (just one point for this function) are zero. | |
bool | geomi_pts_colinear (node_idx_t pi1, node_idx_t pi2, node_idx_t pi3, node_idx_t pi4) const |
Check if points are colinear. | |
bool | geomi_pts_colinear (node_idx_t pi1, node_idx_t pi2, node_idx_t pi3) const |
Check if points are colinear. | |
bool | geomr_pts_colinear (fvec3_t p1, fvec3_t p2, fvec3_t p3) const |
Check if points are colinear. | |
bool | geomi_pts_coplanar (const node_idx_list_t &pnt_list) const |
Check if points are coplanar. | |
bool | geomi_pts_coplanar (node_idx_t pi1, node_idx_t pi2, node_idx_t pi3, node_idx_t pi4) const |
Check if points are coplanar. | |
bool | geomr_pts_coplanar (fvec3_t p1, fvec3_t p2, fvec3_t p3, fvec3_t p4) const |
Check if points are coplanar. | |
bool | geomr_seg_tri_intersection (fvec3_t tp1, fvec3_t tp2, fvec3_t tp3, fvec3_t sp1, fvec3_t sp2) const |
Compute intersection of a segment and a triangle. | |
Global Types & Constants. | |
typedef flt_type | uft_t |
Universal floating point type – used for point components, scalar data values, vector components, all computation, etc.... | |
static constexpr uft_t | epsilon = eps |
epsilon | |
static constexpr uft_t | uft_epsilon = std::numeric_limits<uft_t>::epsilon() |
Node Data. | |
typedef std::vector< uft_t > | node_data_t |
Type to hold a data for a single node. | |
typedef std::variant< int, uft_t > | node_data_idx_t |
Type used to hold an index into a node_data_t or a constant MR_cell_cplx::uft_t. | |
typedef std::vector< node_data_idx_t > | node_data_idx_lst_t |
Type to hold a list of data indexes – one element for scalars, 3 for vectors, etc.... | |
typedef node_data_t | vdat_t |
Type to hold a list values extracted from node data via a MR_cell_cplx::node_data_idx_lst_t (also see MR_cell_cplx::fvec3_t). | |
typedef int | node_idx_t |
Integer type used to indentify/index nodes. | |
typedef std::vector< node_idx_t > | node_idx_list_t |
list of node indexes. | |
typedef std::array< uft_t, 3 > | fvec3_t |
Hold a tuple of real values defining a point/vector in R^3 (also see MR_cell_cplx::vdat_t). | |
typedef std::vector< fvec3_t > | fvec3_list_t |
Hold a list of MR_cell_cplx::fvec3_t objects. | |
typedef std::map< fvec3_t, node_idx_t, pnt_less > | pnt_to_node_idx_map_t |
Used to uniquify points and assign point index values. | |
typedef std::vector< node_data_t > | node_idx_to_node_data_t |
Type to hold a all node data. | |
node_data_idx_lst_t | node_data_to_pnt |
How to construct a point from a node dataset. | |
node_idx_t | last_point_idx = -1 |
The index of the last point added via the add_node() method. | |
bool | last_point_new = true |
True if the last point given to the add_node() method was new – i.e. | |
pnt_to_node_idx_map_t | pnt_to_node_idx_map |
Maps points to point index – used to detect points with nearly identical geometric points in R^3. | |
node_idx_to_node_data_t | node_idx_to_node_data |
Hold all node data sets. | |
node_idx_t | node_count () const |
Return the number of points in the central node data list. | |
fvec3_t | get_pnt (node_idx_t pnt_idx) const |
Return point given a node index. | |
node_idx_t | idx_of_last_point_added () const |
Retruns the index of the last point given to the add_node() method. | |
node_idx_t | last_point_added_was_new () const |
Retruns true if the last point given to the add_node() method was a new point. | |
node_idx_t | add_node (node_data_t node_data) |
Add a point to the central node data store. | |
fvec3_t | fvec3_from_node_data (node_data_idx_lst_t data_idx_lst, node_data_t node_data) const |
Construct a fvec3_t from a node_data_t and a node_data_idx_lst_t. | |
vdat_t | vector_from_node_data (node_data_idx_lst_t data_idx_lst, node_data_t node_data) const |
Construct a vdat_t from a node_data_t and a node_data_idx_lst_t. | |
uft_t | scalar_from_node_data (node_data_idx_t data_idx, node_data_t node_data) const |
Extract a uft_t from a node_data_t and a node_data_idx_t. | |
std::string | node_to_string (node_idx_t pnt_idx) const |
Convert a fvec3_t to a string representation. | |
Named Node Datasets. | |
typedef std::string | named_data_name_t |
Type to hold a dataset name. | |
typedef std::vector< named_data_name_t > | named_data_name_list_t |
Type to hold a list of dataset names. | |
typedef std::map< named_data_name_t, node_data_idx_lst_t > | data_name_to_node_data_idx_lst_t |
Type to map names to named data sets (index lists). | |
data_name_to_node_data_idx_lst_t | data_name_to_data_idx_lst |
Hold named descriptions of data (scalars & vectors) | |
int | named_scalar_datasets_count () const |
Return the number of named scalar datasets. | |
int | named_vector_datasets_count () const |
Return the number of named vector datasets. | |
int | named_datasets_count () const |
Return the number of named (both vector and scalar) datasets. | |
void | set_data_name_to_data_idx_lst (data_name_to_node_data_idx_lst_t names) |
Create named data sets by setting raw member. | |
void | create_named_datasets (named_data_name_list_t scalar_name_strings) |
Create named data sets. | |
void | create_named_datasets (named_data_name_list_t scalar_name_strings, data_name_to_node_data_idx_lst_t names) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
void | create_dataset_to_point_mapping (node_data_idx_lst_t point_data_index) |
Create mapping beteen node data and geometric pionts. | |
I/O. | |
typedef int | io_result |
Type returned by I/O functions. | |
io_result | write_xml_vtk (std::string file_name, std::string description) |
Dump to an XML VTK unstructured grid file. | |
io_result | write_legacy_vtk (std::string file_name, std::string description) |
Dump to a legacy VTK UNSTRUCTUREDGRID file. | |
void | dump_cplx (int max_num_print) const |
Dump object to STDOUT. | |
io_result | write_ply (std::string file_name, std::string description) |
Dump to a PLY file. | |
Complex Computation. | |
typedef std::function< node_data_t(const node_data_t &)> | p2data_func_t |
Function that takes and returns a node_data_t (Node Data Transform) | |
typedef std::function< uft_t(const node_data_t &)> | p2real_func_t |
Function that takes node data and returns a float (Node Data SDF) | |
typedef std::function< bool(const node_data_t &)> | p2bool_func_t |
Function that takes node data and returns a bool (Node Data Predicate) | |
typedef std::function< bool(const cell_verts_t &)> | c2bool_func_t |
Function that takes a cell and returns a bool (Cell Predicate) | |
int | cull_cells (c2bool_func_t func) |
Delete cells matching a predicate function. | |
void | mirror (std::vector< int > flip_list, uft_t zero_epsilon=epsilon *1000, bool reverse_vertex_order=true) |
Add new cells with points from existing cells with the given coordinates negated. | |
void | clear_cache_edge_solver_sdf () |
Clear the solution cache stored in edge_solver_sdf(). | |
node_idx_t | edge_solver_sdf (p2data_func_t dat_func, node_idx_t pnt_idx1, node_idx_t pnt_idx2, p2real_func_t sdf_func, uft_t solve_epsilon=epsilon/10) |
Solve an SDF function for zero on a line between two node data sets, and add the solution to the central node data. | |
void | triangle_folder (p2data_func_t data_func, p2real_func_t sdf_func, uft_t solve_epsilon=epsilon/10) |
Fold triangles that cross over an SDF function. | |
void | segment_folder (p2data_func_t data_func, p2real_func_t sdf_func, uft_t solve_epsilon=epsilon/10) |
Fold segments that cross over an SDF function. | |
3D Vector Computations. | |
These functions operate on fvec3_t objects (arrays of 3 real numbers), but treat them as 3-vectors. | |
uft_t | vec3_two_norm (const fvec3_t &pnt) const |
Compute the magnitude. | |
uft_t | vec3_self_dot_product (const fvec3_t &pnt) const |
Compute the self dot product – i.e. | |
uft_t | vec3_dot_product (const fvec3_t &pnt1, const fvec3_t &pnt2) const |
Compute the cross prodcut. | |
fvec3_t | vec3_cross_product (const fvec3_t &pnt1, const fvec3_t &pnt2) const |
Compute the cross prodcut. | |
fvec3_t | vec3_diff (const fvec3_t &pnt1, const fvec3_t &pnt2) const |
Compute the vector diffrence. | |
uft_t | vec3_scalar_triple_product (const fvec3_t &pnt1, const fvec3_t &pnt2, const fvec3_t &pnt3) const |
Compute the vector diffrence. | |
bool | vec3_unitize (fvec3_t &pnt) const |
Unitize the given point in place. | |
fvec3_t | vec3_linear_combination (uft_t scl1, const fvec3_t &pnt1, uft_t scl2, const fvec3_t &pnt2) const |
Compute the linear combination. | |
uft_t | vec3_det3 (const fvec3_t &pnt1, const fvec3_t &pnt2, const fvec3_t &pnt3) const |
Determinant of 3x3 matrix with given vectors as columns/rows. | |
Class utilities. | |
void | clear () |
Point Tests & Predicates | |
bool | pnt_has_nan (const fvec3_t &test_pnt) |
Return true if any component of the point has a NaN. | |
int | pnt_vs_level (const fvec3_t &test_pnt, int axis_index, uft_t level, uft_t close_epsilon=epsilon) |
Return 0 if point is close to the level, -1 if it is below the level, and 1 if it is above the level. | |
Cell Predicates | |
bool | cell_above_level (const cell_verts_t cell_verts, int level_index, uft_t level, uft_t level_epsilon=epsilon) |
Return true if ALL vertexes are above the level by more than epsilon. | |
bool | cell_below_level (const cell_verts_t cell_verts, int level_index, uft_t level, uft_t level_epsilon=epsilon) |
Return true if ALL vertexes are below the level by more than epsilon. | |
bool | cell_near_sdf_boundry (const cell_verts_t cell_verts, p2real_func_t sdf_function, uft_t sdf_epsilon=epsilon) |
Return true if cell is near SDF boundry. | |
Template class used to store and transform cell complexes (mesh/triangluation/etc...) and data sets generated from MR_rect_tree sample data.
The primary use case is to store and manipulate geometric (i.e. mesh) data derived from MR_rect_tree objects. On the mesh manipulation front the focus is on computations that require knowledge related to the function being approximated.
This code is a quick-n-dirty hack job. I simply wanted to quickly get to a point where I could visually test MR_rect_tree objects. Logically this class should be split into several classes (point, point list, cell, cell list, 3D vectors, 3D analytic geometry, etc...). It's a bit of a mess.
Design Constraints:
Cells supported:
Pyramid
HEXAHEDRON 4 PYRAMID .^. 3---------2 . / \ . TRIANGLE QUAD /| /| . / \ . / | / | . / \ . POINT SEGMENT 2 3---------2 7---------6 | 1...../.......\.....0 Back / \ | | | | | | | / \ | 0 0-------1 / \ | | | 0------|--1 Back | / \ | / \ | | | / | / | / \ | 0-------1 | | |/ |/ | / \ | 0---------1 4---------5 Front |/ \| 2 ----------------- 3 Front
A number of quality checks may be performed on points and cells before they are added to the object. These checks can slow down execution of add_cell() by an order of magnitude, and almost double the RAM required for this class. These checks are entirely optional.
Levels Of Cell Goodness
+-------------+-------------------+--------------------+--------------------+-------------------------------+-------------------------------+ | | chk_point_unique | chk_point_unique | chk_point_unique | chk_point_unique | chk_point_unique | | | chk_cell_unique | chk_cell_unique | chk_cell_unique | chk_cell_unique | chk_cell_unique | | | chk_cell_vertexes | chk_cell_vertexes | chk_cell_vertexes | chk_cell_vertexes | chk_cell_vertexes | | | | chk_cell_dimension | chk_cell_dimension | chk_cell_dimension | chk_cell_dimension | | | | | chk_cell_edges | chk_cell_edges | chk_cell_edges | | | | | | check_cell_face_intersections | check_cell_face_intersections | | | | | | | check_cell_faces_plainer | | | | | | | check_cell_convex | +-------------+-------------------+--------------------+--------------------+-------------------------------+-------------------------------+ | vertex | Perfect | | | | | | segment | Perfect | | | | | | triangle | | Perfect | | | | | quad | | | Good Enough | | Perfect | | hexahedron | | | Mostly OK | Good Enough | Perfect | | pyramid | | | Good Enough | | Perfect | +-------------+-------------------+--------------------+--------------------+-------------------------------+-------------------------------+
chk_point_unique | Only allow unique points on the master point list |
chk_cell_unique | Only allow unique cells on the master cell list. Won't prevent cells that are sub-cells of existing cells. |
chk_cell_vertexes | Do cell vertex checks (See: cell_stat_t) |
chk_cell_dimension | Do cell dimension checks (See: cell_stat_t) |
chk_cell_edges | Do cell edge checks (See: cell_stat_t) |
flt_type | Type for floating point values ( |
eps | Epsilon used to detect zero |
Definition at line 211 of file MR_cell_cplx.hpp.
typedef std::function<bool(const cell_verts_t&)> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::c2bool_func_t |
Function that takes a cell and returns a bool (Cell Predicate)
Definition at line 1687 of file MR_cell_cplx.hpp.
|
private |
Type for a list of poly cells.
Definition at line 371 of file MR_cell_cplx.hpp.
typedef cell_lst_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_structure_t |
typedef node_idx_list_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_verts_t |
Type to hold the vertexes of a poly cell.
Definition at line 309 of file MR_cell_cplx.hpp.
typedef std::map<named_data_name_t, node_data_idx_lst_t> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::data_name_to_node_data_idx_lst_t |
Type to map names to named data sets (index lists).
Definition at line 277 of file MR_cell_cplx.hpp.
typedef std::vector<fvec3_t> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::fvec3_list_t |
Hold a list of MR_cell_cplx::fvec3_t objects.
Definition at line 261 of file MR_cell_cplx.hpp.
typedef std::array<uft_t, 3> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::fvec3_t |
Hold a tuple of real values defining a point/vector in R^3 (also see MR_cell_cplx::vdat_t).
Definition at line 258 of file MR_cell_cplx.hpp.
typedef int mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::io_result |
Type returned by I/O functions.
Definition at line 1324 of file MR_cell_cplx.hpp.
typedef std::vector<named_data_name_t> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::named_data_name_list_t |
Type to hold a list of dataset names.
Definition at line 274 of file MR_cell_cplx.hpp.
typedef std::string mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::named_data_name_t |
Type to hold a dataset name.
Definition at line 271 of file MR_cell_cplx.hpp.
typedef std::vector<node_data_idx_t> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_data_idx_lst_t |
Type to hold a list of data indexes – one element for scalars, 3 for vectors, etc....
Definition at line 243 of file MR_cell_cplx.hpp.
typedef std::variant<int, uft_t> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_data_idx_t |
Type used to hold an index into a node_data_t or a constant MR_cell_cplx::uft_t.
Definition at line 240 of file MR_cell_cplx.hpp.
typedef std::vector<uft_t> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_data_t |
Type to hold a data for a single node.
Definition at line 237 of file MR_cell_cplx.hpp.
typedef std::vector<node_idx_t> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_list_t |
list of node indexes.
Definition at line 255 of file MR_cell_cplx.hpp.
typedef int mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_t |
Integer type used to indentify/index nodes.
Definition at line 252 of file MR_cell_cplx.hpp.
|
private |
Type to hold a all node data.
Definition at line 352 of file MR_cell_cplx.hpp.
typedef std::function<bool(const node_data_t&)> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::p2bool_func_t |
Function that takes node data and returns a bool (Node Data Predicate)
Definition at line 1685 of file MR_cell_cplx.hpp.
typedef std::function<node_data_t(const node_data_t&)> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::p2data_func_t |
Function that takes and returns a node_data_t (Node Data Transform)
Definition at line 1680 of file MR_cell_cplx.hpp.
typedef std::function<uft_t(const node_data_t&)> mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::p2real_func_t |
Function that takes node data and returns a float (Node Data SDF)
Definition at line 1683 of file MR_cell_cplx.hpp.
|
private |
Used to uniquify points and assign point index values.
Definition at line 346 of file MR_cell_cplx.hpp.
typedef flt_type mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::uft_t |
Universal floating point type – used for point components, scalar data values, vector components, all computation, etc....
Definition at line 220 of file MR_cell_cplx.hpp.
|
private |
Used to uniquify cells.
Definition at line 377 of file MR_cell_cplx.hpp.
typedef node_data_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vdat_t |
Type to hold a list values extracted from node data via a MR_cell_cplx::node_data_idx_lst_t (also see MR_cell_cplx::fvec3_t).
Definition at line 246 of file MR_cell_cplx.hpp.
|
strong |
Cell Types.
Enumerator | |
---|---|
POINT | |
SEGMENT | |
TRIANGLE | |
QUAD | |
HEXAHEDRON | |
PYRAMID |
Definition at line 299 of file MR_cell_cplx.hpp.
|
strong |
Cell Status.
Definition at line 285 of file MR_cell_cplx.hpp.
|
strong |
Segment intersection types.
Definition at line 664 of file MR_cell_cplx.hpp.
|
inline |
Add a cell.
new_cell_kind | The type of the new cell |
new_cell_verts | The vertexes of the new cell |
true | The cell was added or had been added previously |
false | The cell could not be added (because of a failed geometric check) |
Definition at line 1269 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_lst, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_stat_is_bad(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::check_cell_dimension(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::check_cell_edge_intersections(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::check_cell_vertexes(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_cell_new, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_cell_stat, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::uniq_cell_lst.
|
inline |
Add parts of a cell of the specified dimension.
Example 1: a valid cell_kind_t::PYRAMID cell added wth dimension == 2 results in three cell_kind_t::TRIANGLE cells and one cell_kind_t::QUAD cell.
Example 2: a valid cell_kind_t::PYRAMID cell added wth dimension == 3 results in one cell_kind_t::PYRAMID cell added
Example 3: a valid cell_kind_t::PYRAMID cell added wth dimension == 1 results in 8 cell_kind_t::SEG cells added
new_cell_kind | The type of the new cell |
new_cell_verts | The vertexes of the new cell |
dimension | The dimension of the parts to add. |
Definition at line 1245 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_cell(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_kind_to_dimension(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_kind_to_structure(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::req_pt_cnt_to_cell_kind().
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_cell(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::mirror(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::segment_folder(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::triangle_folder().
|
inline |
Add a point to the central node data store.
The geometric point coordinates are extracted, and tested before the node data is added leading to three cases:
Case 1: If the geometric point contains a NaN, then the point is NOT added to the central node data store, last_point_idx=-1, and last_point_new=false.
Case 2: If the geometric point is already on the list and chk_point_unique is true, then the point is NOT added to the central node data store, last_point_idx is stet to the existing point's index, and last_point_new=false. Only the geometric point components are used to determine if a point exists in the store.
Case 3: If the geometric point is not on the list, then the point is added to the central node data store, last_point_idx is set to the new point's index, and last_point_new=true Note that last_point_idx is always the return value.
node_data | The point to add! |
Definition at line 434 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::fvec3_from_node_data(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_point_idx, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_point_new, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_data_to_pnt, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_to_node_data, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::pnt_has_nan(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::pnt_to_node_idx_map.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::edge_solver_sdf(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::mirror().
|
inline |
Return true if ALL vertexes are above the level by more than epsilon.
Definition at line 1922 of file MR_cell_cplx.hpp.
|
inline |
Return true if ALL vertexes are below the level by more than epsilon.
Definition at line 1926 of file MR_cell_cplx.hpp.
|
inline |
Convert cell_kind_t value to the logical dimension of the cell.
Note that the vertexes of a cell_kind_t::QUAD cell might not be coplainer; however, the cell is logically a 2D cell. Similarly, the vertexes of a cell_kind_t::PYRAMID might be coplainer; however, the cell is logically a 3D cell.
Definition at line 1007 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::HEXAHEDRON, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::POINT, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::PYRAMID, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::QUAD, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::SEGMENT, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::TRIANGLE.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_cell(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_kind_to_structure().
|
inline |
Convert cell_kind_t value to the number of points required for cell type.
Definition at line 1020 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::HEXAHEDRON, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::POINT, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::PYRAMID, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::QUAD, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::SEGMENT, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::TRIANGLE.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::check_cell_vertexes(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::segment_folder(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::triangle_folder().
|
inline |
Convert cell_kind_t value to the VTK cell type integer.
Definition at line 1046 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::HEXAHEDRON, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::POINT, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::PYRAMID, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::QUAD, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::SEGMENT, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::TRIANGLE.
|
inline |
Convert cell_kind_t value to a list of vertexes.
Definition at line 944 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_kind_to_dimension(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::HEXAHEDRON, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::POINT, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::PYRAMID, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::QUAD, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::SEGMENT, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::TRIANGLE.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_cell(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::check_cell_edge_intersections(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::check_cell_faces_plainer().
|
inline |
Convert cell_kind_t value to the VTK cell type integer.
Definition at line 1033 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::HEXAHEDRON, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::POINT, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::PYRAMID, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::QUAD, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::SEGMENT, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::TRIANGLE.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_legacy_vtk(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_xml_vtk().
|
inline |
Return true if cell is near SDF boundry.
Definition at line 1930 of file MR_cell_cplx.hpp.
|
inline |
Convert cell_stat_t to a bool (true if BAD).
Definition at line 1077 of file MR_cell_cplx.hpp.
|
inline |
Convert cell_stat_t to a bool (true if GOOD).
Definition at line 1072 of file MR_cell_cplx.hpp.
|
inline |
Convert cell_stat_t enum value to a string.
Definition at line 1082 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::BAD_EDGEI, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::BAD_FACEI, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::BIG_PNT_IDX, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::CONCAVE, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::DIM_LOW, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::DUP_PNT, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::FACE_BENT, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::GOOD, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::NEG_PNT_IDX, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::TOO_FEW_PNT, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::TOO_MANY_PNT.
|
inline |
Perform cell dimension (2D cells must not be colinear & 3D cells must not be coplainer)
cell_kind | The type of the potential cell. |
cell_verts | The vertexes of the potential cell. |
Definition at line 1138 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::DIM_LOW, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pts_colinear(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pts_coplanar(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::GOOD, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::HEXAHEDRON, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::PYRAMID, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::QUAD, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::TRIANGLE.
|
inline |
Checks that cell edges have expected intersections.
Checks that every pair of cell edges has the correct intersection type (i.e. intersect in a single vertex or an empty intersection). If a bad intersection is detected, then a cell_stat_t of cell_stat_t::BAD_EDGEI will be returned. Otherwise cell_stat_t::GOOD will be returned.
Note that this function will detect some conditions caught by other checks. For example, this function will return cell_stat_t::BAD_EDGEI for cell_kind_t::SEG cells for which check_cell_dimension() returns cell_stat_t::DUP_PNT. Note the cell_stat_t values are different depending upon which check function is called.
cell_kind | The type of the potential cell. |
cell_verts | The vertexes of the potential cell. |
Definition at line 1168 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::BAD_EDGEI, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::C0_EMPTY, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::C1_VERTEX1, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_kind_to_structure(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_seg_isect_type(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::GOOD.
|
inline |
Checks that cell faces have expected intersections.
cell_kind | The type of the potential cell. |
cell_verts | The vertexes of the potential cell. |
Definition at line 1198 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::DIM_LOW, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pts_coplanar(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::GOOD, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::HEXAHEDRON, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::PYRAMID.
|
inline |
Check if the vertexes of a cell are coplainer.
Returns cell_stat_t::FACE_BENT if the cell is not plainer, and cell_stat_t::GOOD if it is.
Note that most visualization packages are tolerant of non-plainer faces, and can render them just fine. For example, most applications will automatically split a non-plainer cell_kind_t::QUAD into two triangles. That said such faces can be an issue when using a tessellation for computation. Such issues are most severe for things like FEM, but they can also show up for common visualization computations like the extraction of level curves/surfaces.
cell_kind | The type of the potential cell. |
cell_verts | The vertexes of the potential cell. |
Definition at line 1221 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_kind_to_structure(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::FACE_BENT, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pts_coplanar(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::GOOD.
|
inline |
Perform cell vertex checks.
cell_kind | The type of the potential cell. |
cell_verts | The vertexes of the potential cell. |
Definition at line 1103 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::BIG_PNT_IDX, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_kind_to_req_pt_cnt(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::DUP_PNT, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::GOOD, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::NEG_PNT_IDX, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::TOO_FEW_PNT, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::TOO_MANY_PNT.
|
inline |
Definition at line 917 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_lst, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::data_name_to_data_idx_lst, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::GOOD, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_cell_new, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_cell_stat, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_point_idx, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_point_new, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_data_to_pnt, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_to_node_data, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::pnt_to_node_idx_map, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::uniq_cell_lst.
|
inline |
Clear the solution cache stored in edge_solver_sdf().
Definition at line 1747 of file MR_cell_cplx.hpp.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::segment_folder(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::triangle_folder().
|
inline |
Create mapping beteen node data and geometric pionts.
Geometric points are constructed from node data via a node_data_idx_lst_t – just like named data sets. Each time a geometric point is required, it is dynamically pulled from the point's data via this mapping.
point_data_index | A node_data_idx_lst_t defining how to construct a geometric point. |
Definition at line 570 of file MR_cell_cplx.hpp.
|
inline |
Create named data sets.
Simple way to create named scalar datasets for the first n elements in each point's data.
scalar_name_strings | Scalar data set names to apply, in order, to node data elements. |
Definition at line 549 of file MR_cell_cplx.hpp.
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
scalar_name_strings | Scalar data set names to apply, in order, to node data elements. |
names | data_name_to_data_idx entries to create – frequently used to add a named vector dataset. |
Definition at line 558 of file MR_cell_cplx.hpp.
|
inline |
Delete cells matching a predicate function.
func | Predicate function – if true we get rid of the cell |
Definition at line 1692 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_lst, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::num_cells().
|
inline |
Dump object to STDOUT.
max_num_print | Maximum number of points/cells to print. Use 0 to print all points/cells. |
Definition at line 1524 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_kind_to_string(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_lst, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::named_datasets_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::named_scalar_datasets_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::named_vector_datasets_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_to_node_data, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_to_string(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::num_cells(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::req_pt_cnt_to_cell_kind().
|
inline |
Solve an SDF function for zero on a line between two node data sets, and add the solution to the central node data.
The SDF must have different signs on the given points. If this is not the case, then the endpoint with SDF closest to zero will be returned.
Uses bisection. Halting conditions:
This function stores a cache of previous solution results. This cache may be cleared by clear_cache_edge_solver_sdf().
pnt_idx1 | First edge vertex |
pnt_idx2 | Second edge vertex |
sdf_func | Data function (if nullptr, then clear solver cache and return immediately) |
solve_epsilon | Used to detect SDF value near zero |
dat_func | Produce the node data vector for the newly solved point. |
Definition at line 1766 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_node(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_to_node_data.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::clear_cache_edge_solver_sdf(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::segment_folder(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::triangle_folder().
|
inline |
Construct a fvec3_t from a node_data_t and a node_data_idx_lst_t.
This is a speciazlied form of vector_from_node_data() that produces fvec3_t objects. Primarly used to extract the location coordinates from node data. Note data_idx_lst must contain at least three values, but only the first three are used. If the node_data_idx_lst_t has fewer than three elements, then this function will throw.
data_idx_lst | Index list used to identify the data to pull |
node_data | node data vector from which to pull data |
Definition at line 472 of file MR_cell_cplx.hpp.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_node(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::get_pnt(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::mirror(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_ply().
|
inline |
Distance between a point and a line.
See: geomr_pnt_line_distance().
Definition at line 784 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_pnt_line_distance(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::get_pnt().
|
inline |
Check if points are colinear.
Definition at line 874 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_pts_colinear(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::get_pnt().
|
inline |
Check if points are colinear.
Definition at line 868 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_pts_colinear(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::get_pnt().
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::check_cell_dimension(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_seg_isect_type().
|
inline |
Check if points are coplanar.
Definition at line 884 of file MR_cell_cplx.hpp.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::check_cell_dimension(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::check_cell_face_intersections(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::check_cell_faces_plainer(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pts_coplanar().
|
inline |
Check if points are coplanar.
Definition at line 896 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_pts_coplanar(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::get_pnt().
|
inline |
Check if two line segments intersect in a single point.
Definition at line 752 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_seg_isect1(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::get_pnt().
|
inline |
Determine the nature of the intersection between two line segments.
Definition at line 688 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::BAD_SEGMENT, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::C0_EMPTY, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::C1_INTERIOR, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::C1_VERTEX1, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::CI_VERTEX0, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::CI_VERTEX1, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::CI_VERTEX2, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pnt_line_distance(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pts_colinear(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_seg_isect1().
|
inline |
Distance between a point and a line.
The result depends on the value of seg_distance:
Definition at line 792 of file MR_cell_cplx.hpp.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pnt_line_distance(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_pnt_tri_distance().
|
inline |
Compute the distance between a point and a plane.
Definition at line 830 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_tri_normal(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_dot_product().
|
inline |
Compute the euculedian (2 norm) distance between two points.
Definition at line 815 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_diff(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_two_norm().
|
inline |
Compute the distance between a point and a triangle.
Definition at line 836 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_pnt_line_distance(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_cross_product(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_diff(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_dot_product(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_linear_combination(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_unitize().
|
inline |
Check if points (just one point for this function) are zero.
Checks if the infinity norm is less than epsilon.
Definition at line 861 of file MR_cell_cplx.hpp.
|
inline |
Check if points are colinear.
Definition at line 879 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_pnt_zero(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_cross_product(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_diff().
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pts_colinear(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pts_colinear().
|
inline |
Check if points are coplanar.
Definition at line 901 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_diff(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_scalar_triple_product().
|
inline |
Check if two line segments intersect in a single point.
Definition at line 757 of file MR_cell_cplx.hpp.
|
inline |
Compute intersection of a segment and a triangle.
Definition at line 906 of file MR_cell_cplx.hpp.
|
inline |
Compute the normal of a triangle (or a plane defined by 3 points)
Definition at line 820 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_cross_product(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_diff(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_unitize().
|
inline |
Return point given a node index.
Definition at line 405 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::fvec3_from_node_data(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_data_to_pnt, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_to_node_data.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pnt_line_distance(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pts_colinear(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pts_colinear(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_pts_coplanar(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomi_seg_isect1(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_legacy_vtk(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_ply(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_xml_vtk().
|
inline |
Retruns the index of the last point given to the add_node() method.
Definition at line 410 of file MR_cell_cplx.hpp.
|
inline |
Retruns true if the last cell given to the add_cell() was new and the return value of status_of_last_cell_added() is cell_stat_t::GOOD.
If chk_cell_unique is true, this value is updated each time add_cell() is called. Otherwise its value is always true.
Definition at line 1314 of file MR_cell_cplx.hpp.
|
inline |
Retruns true if the last point given to the add_node() method was a new point.
Definition at line 415 of file MR_cell_cplx.hpp.
|
inline |
Add new cells with points from existing cells with the given coordinates negated.
When zero_epsilon is positive, some existing points may be adjusted such that components on the flipped axis near zero will become zero. When chk_point_unique is true, both the original point coordinates and the new point coordinates will be mapped to the same point index – that is to say if you add a new point to the complex with the old coordinates or the new coordinates, you will get the same index. Note that a point collision may occur if the adjusted point is equal-ish to another, existing point – a message is printed when this occurs.
flip_list | A vector of booleans (0 or 1). 1 indicates the coordinate in a node_data_t vector should be negated. |
zero_epsilon | If non-negative, will collapse flipped coordinates near zero to be precisely zero. |
reverse_vertex_order | Reverse the order of vertexes in each cell – useful if vertex order impacts rendering. |
Definition at line 1716 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_cell(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_node(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_lst, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::fvec3_from_node_data(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_data_to_pnt, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_to_node_data, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::num_cells(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::pnt_to_node_idx_map, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::req_pt_cnt_to_cell_kind().
|
inline |
Return the number of named (both vector and scalar) datasets.
Definition at line 536 of file MR_cell_cplx.hpp.
|
inline |
Return the number of named scalar datasets.
Definition at line 526 of file MR_cell_cplx.hpp.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::dump_cplx(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_legacy_vtk().
|
inline |
Return the number of named vector datasets.
Definition at line 531 of file MR_cell_cplx.hpp.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::dump_cplx(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_legacy_vtk().
|
inline |
Return the number of points in the central node data list.
Note the return type is node_idx_t (a signed integer type) and not a size_t.
Definition at line 400 of file MR_cell_cplx.hpp.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_node(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::dump_cplx(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::req_pt_cnt_to_cell_kind(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_legacy_vtk(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_ply(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_xml_vtk().
|
inline |
Convert a fvec3_t to a string representation.
pnt_idx | The point to convert. |
Definition at line 507 of file MR_cell_cplx.hpp.
|
inline |
Number of cells.
Definition at line 939 of file MR_cell_cplx.hpp.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cull_cells(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::dump_cplx(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::mirror(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::segment_folder(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::triangle_folder(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_legacy_vtk(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_ply(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_xml_vtk().
|
inline |
Return true if any component of the point has a NaN.
test_pnt | The point to test |
Definition at line 1656 of file MR_cell_cplx.hpp.
|
inline |
Return 0 if point is close to the level, -1 if it is below the level, and 1 if it is above the level.
test_pnt | The point to test |
axis_index | Which axis to compare to the level |
level | Level to test aginst |
close_epsilon | Epsilon used to check for "closeness". |
Definition at line 1665 of file MR_cell_cplx.hpp.
|
inline |
Convert number of points in a cell to cell_kind_t.
Definition at line 1059 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::HEXAHEDRON, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::POINT, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::PYRAMID, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::QUAD, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::SEGMENT, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::TRIANGLE.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_cell(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::dump_cplx(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::mirror(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_legacy_vtk(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_ply(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_xml_vtk().
|
inline |
Extract a uft_t from a node_data_t and a node_data_idx_t.
data_idx | Index list used to identify the data to pull |
node_data | node data vector from which to pull data |
Definition at line 498 of file MR_cell_cplx.hpp.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_legacy_vtk(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_xml_vtk().
|
inline |
Convert an seg_isect_t to a string.
Definition at line 674 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::BAD_SEGMENT, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::C0_EMPTY, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::C1_INTERIOR, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::C1_VERTEX1, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::CI_VERTEX0, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::CI_VERTEX1, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::CI_VERTEX2.
|
inline |
Fold segments that cross over an SDF function.
data_func | Data function |
sdf_func | SDF function |
solve_epsilon | Used to detect SDF value near zero |
Definition at line 1889 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_cell(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_kind_to_req_pt_cnt(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_lst, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::clear_cache_edge_solver_sdf(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::edge_solver_sdf(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_to_node_data, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::num_cells(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::SEGMENT.
|
inline |
Create named data sets by setting raw member.
names | value to set. |
Definition at line 542 of file MR_cell_cplx.hpp.
|
inline |
Retruns the status of the last cell given to the add_cell() method.
If (chk_cell_vertexes || chk_cell_dimension | chk_cell_edges) is true, this value is updated each time add_cell() is called. Otherwise its value is always cell_stat_t::GOOD.
Definition at line 1308 of file MR_cell_cplx.hpp.
|
inline |
Fold triangles that cross over an SDF function.
data_func | Data function |
sdf_func | SDF function |
solve_epsilon | Used to detect SDF value near zero |
Definition at line 1828 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_cell(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_kind_to_req_pt_cnt(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_lst, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::clear_cache_edge_solver_sdf(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::edge_solver_sdf(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_to_node_data, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::num_cells(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::TRIANGLE.
|
inline |
Compute the cross prodcut.
Definition at line 603 of file MR_cell_cplx.hpp.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_pnt_tri_distance(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_pts_colinear(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_tri_normal(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_scalar_triple_product().
|
inline |
Determinant of 3x3 matrix with given vectors as columns/rows.
Definition at line 645 of file MR_cell_cplx.hpp.
|
inline |
Compute the vector diffrence.
Definition at line 612 of file MR_cell_cplx.hpp.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_pnt_pnt_distance(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_pnt_tri_distance(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_pts_colinear(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_pts_coplanar(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_tri_normal().
|
inline |
Compute the cross prodcut.
Definition at line 595 of file MR_cell_cplx.hpp.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_pnt_pln_distance(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_pnt_tri_distance(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_scalar_triple_product().
|
inline |
Compute the linear combination.
Definition at line 637 of file MR_cell_cplx.hpp.
|
inline |
Compute the vector diffrence.
Definition at line 620 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_cross_product(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_dot_product().
|
inline |
Compute the self dot product – i.e.
magnitude squared
Definition at line 587 of file MR_cell_cplx.hpp.
|
inline |
Compute the magnitude.
Definition at line 582 of file MR_cell_cplx.hpp.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_pnt_pnt_distance(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_unitize().
|
inline |
Unitize the given point in place.
Return true if the result is valid, and false otherwise
Definition at line 625 of file MR_cell_cplx.hpp.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_pnt_tri_distance(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::geomr_tri_normal(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_ply().
|
inline |
Construct a vdat_t from a node_data_t and a node_data_idx_lst_t.
data_idx_lst | Index list used to identify the data to pull |
node_data | node data vector from which to pull data |
Definition at line 485 of file MR_cell_cplx.hpp.
|
inline |
Dump to a legacy VTK UNSTRUCTUREDGRID file.
Note: A point vector data set named "NORMALS" will be used for normal vectors. Note: A point vector data set named "COLORS" will be used as COLOR_SCALARS. Components should be in [0.0, 1.0].
file_name | The name of the output file |
description | This is the file description. |
Definition at line 1436 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_kind_to_vtk_type(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_lst, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::data_name_to_data_idx_lst, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::get_pnt(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::named_scalar_datasets_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::named_vector_datasets_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_to_node_data, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::num_cells(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::req_pt_cnt_to_cell_kind(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::scalar_from_node_data(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vector_from_node_data().
|
inline |
Dump to a PLY file.
Note: If one of the point vector data sets is named "NORMALS", then it will be used for normal vectors. Note: If one of the point vector data sets is named "COLORS", then it will be used for color data. Components should be in [0.0, 1.0].
file_name | The name of the output file |
description | For legacy files, this is the file description. For XML files this is included as a file comment at the start of the file. |
Definition at line 1571 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_lst, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::data_name_to_data_idx_lst, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::fvec3_from_node_data(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::get_pnt(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_to_node_data, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::num_cells(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::QUAD, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::req_pt_cnt_to_cell_kind(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::TRIANGLE, and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::vec3_unitize().
|
inline |
Dump to an XML VTK unstructured grid file.
Note: A point vector data set named "NORMALS" will be used for normal vectors.
file_name | The name of the output file |
description | This is included as a file comment at the start of the file. |
Definition at line 1333 of file MR_cell_cplx.hpp.
References mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_kind_to_vtk_type(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_lst, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::data_name_to_data_idx_lst, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::get_pnt(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_idx_to_node_data, mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::num_cells(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::req_pt_cnt_to_cell_kind(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::scalar_from_node_data().
|
private |
House all poly cells.
Definition at line 374 of file MR_cell_cplx.hpp.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_cell(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::clear(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cull_cells(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::dump_cplx(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::mirror(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::num_cells(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::segment_folder(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::triangle_folder(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_legacy_vtk(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_ply(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_xml_vtk().
|
private |
Hold named descriptions of data (scalars & vectors)
Definition at line 363 of file MR_cell_cplx.hpp.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::clear(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::create_named_datasets(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::create_named_datasets(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::named_datasets_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::named_scalar_datasets_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::named_vector_datasets_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::set_data_name_to_data_idx_lst(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_legacy_vtk(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_ply(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_xml_vtk().
|
staticconstexpr |
epsilon
Definition at line 223 of file MR_cell_cplx.hpp.
|
private |
True if the last cell given to the add_cell() method was new – i.e.
not on the master cell list. Only updated if chk_cell_unique is true. Value is invalid if last_cell_stat is NOT cell_stat_t::GOOD. See: last_cell_added_was_new()
Definition at line 385 of file MR_cell_cplx.hpp.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_cell(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::clear(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_cell_added_was_new().
|
private |
Status of the last cell added via add_cell() method.
Only updated if (chk_cell_vertexes || chk_cell_dimension | chk_cell_edges) is true. See: status_of_last_cell_added()
Definition at line 389 of file MR_cell_cplx.hpp.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_cell(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::clear(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::status_of_last_cell_added().
|
private |
The index of the last point added via the add_node() method.
Definition at line 325 of file MR_cell_cplx.hpp.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_node(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::clear(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::idx_of_last_point_added().
|
private |
True if the last point given to the add_node() method was new – i.e.
not on the central node data. Only updated if chk_point_unique is true. See: last_point_added_was_new()
Definition at line 329 of file MR_cell_cplx.hpp.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_node(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::clear(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::last_point_added_was_new().
node_data_idx_lst_t mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_data_to_pnt |
How to construct a point from a node dataset.
Definition at line 249 of file MR_cell_cplx.hpp.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_node(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::clear(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::create_dataset_to_point_mapping(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::get_pnt(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::mirror().
|
private |
Hold all node data sets.
Definition at line 355 of file MR_cell_cplx.hpp.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_node(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::cell_near_sdf_boundry(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::clear(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::dump_cplx(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::edge_solver_sdf(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::get_pnt(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::mirror(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_count(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::node_to_string(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::segment_folder(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::triangle_folder(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_legacy_vtk(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_ply(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::write_xml_vtk().
|
private |
Maps points to point index – used to detect points with nearly identical geometric points in R^3.
Definition at line 349 of file MR_cell_cplx.hpp.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_node(), mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::clear(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::mirror().
|
staticconstexpr |
Definition at line 224 of file MR_cell_cplx.hpp.
|
private |
Unique cell list.
Definition at line 380 of file MR_cell_cplx.hpp.
Referenced by mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::add_cell(), and mjr::MR_cell_cplx< chk_point_unique, chk_cell_unique, chk_cell_vertexes, chk_cell_dimension, chk_cell_edges, flt_type, eps >::clear().