|
23 | 23 | --> |
24 | 24 | <!-- |
25 | 25 | The so-called spectrum or sets of (weighted) alpha shapes includes the convex hull of a point set.--> |
26 | | -<definition xmlns="http://definition.nexusformat.org/nxdl/3.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" category="base" type="group" name="NXcg_alpha_complex" extends="NXcg_primitive_set" xsi:schemaLocation="http://definition.nexusformat.org/nxdl/3.1 ../nxdl.xsd"> |
| 26 | +<definition xmlns="http://definition.nexusformat.org/nxdl/3.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" category="base" type="group" name="NXcg_alpha_complex" extends="NXcg_primitive" xsi:schemaLocation="http://definition.nexusformat.org/nxdl/3.1 ../nxdl.xsd"> |
27 | 27 | <doc> |
28 | | - Computational geometry of alpha shapes or alpha wrappings about primitives. |
| 28 | + Computational geometry of alpha complexes (alpha shapes or alpha wrappings) about primitives. |
29 | 29 |
|
30 | 30 | For details see: |
31 | 31 |
|
32 | 32 | * https://dx.doi.org/10.1109/TIT.1983.1056714 for 2D, |
33 | 33 | * https://dx.doi.org/10.1145/174462.156635 for 3D, |
34 | 34 | * https://dl.acm.org/doi/10.5555/871114 for weighted, and |
35 | | - * https://doc.cgal.org/latest/Alpha_shapes_3 for 3D implementation |
36 | | - * https://doc.cgal.org/latest/Manual/packages.html#PkgAlphaWrap3 for 3D wrappings |
| 35 | + * https://doc.cgal.org/latest/Alpha_shapes_3 for 3D implementation of alpha shapes, and |
| 36 | + * https://doc.cgal.org/latest/Manual/packages.html#PkgAlphaWrap3 for 3D alpha wrappings |
37 | 37 |
|
38 | | - in CGAL, the Computational Geometry Algorithms Library. |
| 38 | + in CGAL, the Computational Geometry Algorithms Library respectively. |
39 | 39 | As a starting point, we follow the conventions of the CGAL library. |
| 40 | + |
| 41 | + In general, an alpha complex is a not necessarily connected or not necessarily pure complex, |
| 42 | + i.e. singular faces may exist. The number of cells, faces, and edges depends on how a specific |
| 43 | + alpha complex is filtered for lower-dimensional simplices. The fields is_regularized and |
| 44 | + regularization can be used to provide details about regularization procedures. |
40 | 45 | </doc> |
41 | 46 | <field name="type"> |
42 | 47 | <doc> |
43 | 48 | Type of alpha complex following the terminology used by CGAL for now. |
44 | 49 |
|
45 | | - Basic means (unweighted) alpha shapes. Alpha_wrapping means meshes |
46 | | - created using the alpha_wrapping algorithm. |
| 50 | + Alpha_shape means meshes created using one of the alpha_shape algorithm. |
| 51 | + Alpha_wrapping means meshes created using the alpha_wrapping algorithm. |
47 | 52 | </doc> |
48 | 53 | <enumeration> |
49 | 54 | <item value="convex_hull"/> |
50 | 55 | <item value="alpha_shape"/> |
51 | 56 | <item value="alpha_wrapping"/> |
52 | 57 | </enumeration> |
53 | 58 | </field> |
54 | | - <field name="regularize_alpha_complex" type="NX_BOOLEAN"> |
| 59 | + <field name="regularization"> |
55 | 60 | <doc> |
56 | | - Are singular faces removed, i.e. has the alpha complex |
57 | | - been regularized or not. |
| 61 | + Human-readable description about regularization procedures. |
| 62 | + </doc> |
| 63 | + </field> |
| 64 | + <field name="is_regularized" type="NX_BOOLEAN"> |
| 65 | + <doc> |
| 66 | + Was the alpha complex regularized, i.e. have singular faces been removed, or not. |
58 | 67 | </doc> |
59 | 68 | </field> |
60 | | - <!--R+0 means positive real number including zero which is a super set of NX_FLOAT and a sub-set of NX_NUMBER--> |
61 | 69 | <field name="alpha" type="NX_NUMBER" units="NX_LENGTH"> |
62 | 70 | <doc> |
63 | 71 | The alpha parameter, i.e. the radius of the alpha-sphere that |
64 | 72 | is used when computing the alpha complex. |
65 | 73 | </doc> |
66 | 74 | </field> |
67 | | - <!--the dim: argument can be omitted to indicate that a scalar is expected |
68 | | -means a length quantity, i.e. m, km, or nm is possible i.e. has to be length but no further constraints |
69 | | -stating meter is a stronger constraint while m is the strongest constraint, meaning literally the value is m.--> |
70 | 75 | <field name="offset" type="NX_NUMBER" units="NX_LENGTH"> |
71 | 76 | <doc> |
72 | 77 | The offset distance parameter used when computing alpha_wrappings. |
73 | 78 | </doc> |
74 | 79 | </field> |
75 | 80 | <!--check again carefully the CGAL documentation talks about, for 3D, the square of the radius!--> |
76 | | - <group name="point_setID" type="NXcg_point_set"> |
77 | | - <!-- |
78 | | -basically just constraints that if you use one or more instances of NXcg_point_set |
79 | | -inside an instance of NXcg_alpha_complex, name that group with the prefix "point_set" |
80 | | ---> |
| 81 | + <group name="point_cloudID" type="NXcg_point" nameType="partial"> |
81 | 82 | <doc> |
82 | | - Point cloud for which the alpha shape or wrapping has been computed. |
| 83 | + Point cloud serving as input for the computation of the alpha complex. |
83 | 84 | </doc> |
84 | 85 | </group> |
85 | | - <!--this could also just be implemented as a link but how would this be possible |
86 | | -unfold the NXcg_point_set and add a |
87 | | -weight(NX_NUMBER): |
88 | | -doc: Weights for each point |
89 | | -In general, an alpha complex is a disconnected and non-pure complex, |
90 | | -meaning in particular that the alpha complex may have singular faces. |
91 | | -so the number of cells, faces and edges depends on how a specific alpha complex, |
92 | | -i.e. an alpha-shape of S for alpha, is filtrated with respect to k < d-dimensional |
93 | | -simplices. Here we assume that number_of_cells, number_of_faces, number_of_edges |
94 | | -are reported assuming one filtrates these simplices according to type. |
95 | | -also using the assumption the base class reports the unique vertices |
96 | | -of the specifically filtrated alpha complex.--> |
97 | | - <group name="triangle_setID" type="NXcg_triangle_set"> |
| 86 | + <group name="triangle_soupID" type="NXcg_triangle" nameType="partial"> |
98 | 87 | <doc> |
99 | | - Triangle soup for which the alpha wrapping has been computed. |
| 88 | + Triangle soup serving as input for the computation of the alpha complex. |
100 | 89 | </doc> |
101 | 90 | </group> |
102 | | - <group name="triangle_meshID" type="NXcg_triangle_set"> |
| 91 | + <group name="alpha_complexID" type="NXcg_triangle" nameType="partial"> |
103 | 92 | <doc> |
104 | | - Triangle mesh representing the alpha complex. |
| 93 | + Triangle mesh representing the output of the computation, i.e. the alpha complex. |
105 | 94 | </doc> |
106 | 95 | </group> |
107 | | - <!--add for each triangle if desirable a notation of whether the simplex is |
108 | | -exterior, regular, singular, or interior with respect to the alpha complex |
109 | | -a triangulation is more than a triangle (soup)/set because there it has connectivity |
110 | | -customize the NXcg_triangle_set base class members such that connectivity can be contained naturally |
111 | | -we need to find also a better name for this, what people intutive understand |
112 | | -as the interior, may not even exist for a given alpha value |
113 | | -more specifically it is the set of filtrated cells acknowledging mode |
114 | | -e.g. the interior cells of the regularized alpha complex--> |
115 | | - <group name="interior_cellsID" type="NXcg_tetrahedron_set"> |
| 96 | + <group name="tetrahedralizationID" type="NXcg_tetrahedron" nameType="partial"> |
116 | 97 | <doc> |
117 | | - Set of tetrahedra representing the volume inside the alpha complex. |
| 98 | + Tetrahedra representing an interior volume of the alpha complex (if such exists). |
118 | 99 | </doc> |
119 | 100 | </group> |
120 | | - <!--document the alpha status |
121 | | -https://doc.cgal.org/latest/Alpha_shapes_3/classCGAL_1_1Alpha__status.html--> |
122 | 101 | </definition> |
0 commit comments