Skip to content

Commit 9493eb5

Browse files
committed
Autumn NIAC 2024 edits
1 parent 8881995 commit 9493eb5

7 files changed

+68
-183
lines changed

base_classes/NXcg_alpha_complex.nxdl.xml

Lines changed: 27 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -23,100 +23,79 @@
2323
-->
2424
<!--
2525
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">
2727
<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.
2929

3030
For details see:
3131

3232
* https://dx.doi.org/10.1109/TIT.1983.1056714 for 2D,
3333
* https://dx.doi.org/10.1145/174462.156635 for 3D,
3434
* 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
3737

38-
in CGAL, the Computational Geometry Algorithms Library.
38+
in CGAL, the Computational Geometry Algorithms Library respectively.
3939
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.
4045
</doc>
4146
<field name="type">
4247
<doc>
4348
Type of alpha complex following the terminology used by CGAL for now.
4449

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.
4752
</doc>
4853
<enumeration>
4954
<item value="convex_hull"/>
5055
<item value="alpha_shape"/>
5156
<item value="alpha_wrapping"/>
5257
</enumeration>
5358
</field>
54-
<field name="regularize_alpha_complex" type="NX_BOOLEAN">
59+
<field name="regularization">
5560
<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.
5867
</doc>
5968
</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-->
6169
<field name="alpha" type="NX_NUMBER" units="NX_LENGTH">
6270
<doc>
6371
The alpha parameter, i.e. the radius of the alpha-sphere that
6472
is used when computing the alpha complex.
6573
</doc>
6674
</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.-->
7075
<field name="offset" type="NX_NUMBER" units="NX_LENGTH">
7176
<doc>
7277
The offset distance parameter used when computing alpha_wrappings.
7378
</doc>
7479
</field>
7580
<!--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">
8182
<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.
8384
</doc>
8485
</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">
9887
<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.
10089
</doc>
10190
</group>
102-
<group name="triangle_meshID" type="NXcg_triangle_set">
91+
<group name="alpha_complexID" type="NXcg_triangle" nameType="partial">
10392
<doc>
104-
Triangle mesh representing the alpha complex.
93+
Triangle mesh representing the output of the computation, i.e. the alpha complex.
10594
</doc>
10695
</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">
11697
<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).
11899
</doc>
119100
</group>
120-
<!--document the alpha status
121-
https://doc.cgal.org/latest/Alpha_shapes_3/classCGAL_1_1Alpha__status.html-->
122101
</definition>

base_classes/NXcg_cylinder.nxdl.xml

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
<!--
2525
redundant as there is NXcsg, NXquadric, NXsolid_geometry with which
2626
cylinder could be constructed, but NXcylinder is easier to understand-->
27-
<definition xmlns="http://definition.nexusformat.org/nxdl/3.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" category="base" type="group" name="NXcg_cylinder_set" extends="NXcg_primitive_set" xsi:schemaLocation="http://definition.nexusformat.org/nxdl/3.1 ../nxdl.xsd">
27+
<definition xmlns="http://definition.nexusformat.org/nxdl/3.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" category="base" type="group" name="NXcg_cylinder" extends="NXcg_primitive" xsi:schemaLocation="http://definition.nexusformat.org/nxdl/3.1 ../nxdl.xsd">
2828
<symbols>
2929
<doc>
3030
The symbols used in the schema to specify e.g. dimensions of arrays.
@@ -41,33 +41,25 @@ cylinder could be constructed, but NXcylinder is easier to understand-->
4141
</symbol>
4242
</symbols>
4343
<doc>
44-
Computational geometry description of a set of cylinders.
44+
Computational geometry description of a set of cylinders or (truncated) cones.
4545

4646
The radius can either be defined in the radii field or by filling both
4747
the upper_cap_radii or lower_cap_radii field. The latter field case can
48-
thus be used to represent truncated cones.
48+
thus be used to represent (truncated) cones.
4949
</doc>
5050
<field name="height" type="NX_NUMBER" units="NX_LENGTH">
5151
<doc>
5252
A direction vector which is parallel to the cylinder/cone axis
5353
and whose magnitude is the height of the cylinder/cone.
54+
55+
The upper_cap is defined as the one that is farther away to the origin
56+
when inspecting a parallel projection onto the direction vector.
5457
</doc>
5558
<dimensions rank="2">
5659
<dim index="1" value="c"/>
5760
<dim index="2" value="d"/>
5861
</dimensions>
5962
</field>
60-
<!--observe that although we claim that d is the dimensionality we have
61-
currently no strategy to tell it must not be d but the actual value
62-
equally so the symbol c, currently all we say that in the specialization
63-
defined here the fields radii, upper_cap_radius, and others are all having
64-
value arguments of the same shape, i.e. these are arrays of rank one with some length c!
65-
behind the dimensionality field defined either in the here defined specialization
66-
of NXcg_primitive_set or otherwise that variable is undefined
67-
alternatively one could store the center of the lower and upper cap but
68-
these are then no longer necessarily on the same axis
69-
maybe a future feature for representing skewed cylinder, but then
70-
one should really better use NXquadric...-->
7163
<field name="radius" type="NX_NUMBER" units="NX_LENGTH">
7264
<doc>
7365
Radius of the cylinder if all have the same radius.
@@ -106,7 +98,7 @@ one should really better use NXquadric...-->
10698
<!--properties of the cylinder-->
10799
<field name="lateral_surface_area" type="NX_NUMBER" units="NX_AREA">
108100
<doc>
109-
Lateral surface area
101+
Lateral surface area of each cylinder.
110102
</doc>
111103
<dimensions rank="1">
112104
<dim index="1" value="c"/>
@@ -130,16 +122,10 @@ one should really better use NXquadric...-->
130122
</field>
131123
<field name="total_surface_area" type="NX_NUMBER" units="NX_AREA">
132124
<doc>
133-
Sum of upper and lower cap areas and lateral surface area
134-
of each cylinder.
125+
Sum of upper and lower cap area and lateral surface area of each cylinder.
135126
</doc>
136127
<dimensions rank="1">
137128
<dim index="1" value="c"/>
138129
</dimensions>
139130
</field>
140-
<!--again cap, lateral surface area and volume are so trivial to compute
141-
do we need really storage for this or recompute on-the-fly?
142-
similarly to hollow sphere discussion, hollow cylinder, cylinder stack
143-
do wish to define intersections?, if this is the case, one
144-
should use the NXcsg and NXquadric descriptions?-->
145131
</definition>

base_classes/NXcg_ellipsoid.nxdl.xml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
-->
2424
<!--
2525
redundant as there is NXcsg, and NXquadric but easier to understand-->
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_ellipsoid_set" 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_ellipsoid" extends="NXcg_primitive" xsi:schemaLocation="http://definition.nexusformat.org/nxdl/3.1 ../nxdl.xsd">
2727
<symbols>
2828
<doc>
2929
The symbols used in the schema to specify e.g. dimensions of arrays.
@@ -61,5 +61,20 @@ redundant as there is NXcsg, and NXquadric but easier to understand-->
6161
<dim index="2" value="d"/>
6262
</dimensions>
6363
</field>
64+
<!--convenience dictionary entries when all ellipsoids in the set are spheres.-->
65+
<field name="radius" type="NX_NUMBER" units="NX_LENGTH">
66+
<doc>
67+
In the case that all ellipsoids are spheres.
68+
</doc>
69+
</field>
70+
<field name="radii" type="NX_NUMBER" units="NX_LENGTH">
71+
<doc>
72+
In the case that all ellipsoids are spheres whose radii differ.
73+
For a mixture of spheres use half_axes_radii.
74+
</doc>
75+
<dimensions rank="1">
76+
<dim index="1" value="c"/>
77+
</dimensions>
78+
</field>
6479
<!--properties of ellipsoids-->
6580
</definition>

base_classes/NXcg_face_list_data_structure.nxdl.xml

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
-->
2424
<!--
2525
duplicate of an NXoff_geometry ?-->
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_face_list_data_structure" 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_face_list_data_structure" extends="NXcg_primitive" xsi:schemaLocation="http://definition.nexusformat.org/nxdl/3.1 ../nxdl.xsd">
2727
<symbols>
2828
<doc>
2929
The symbols used in the schema to specify e.g. dimensions of arrays.
@@ -62,18 +62,17 @@ duplicate of an NXoff_geometry ?-->
6262
<doc>
6363
Computational geometry of primitives via a face-and-edge-list data structure.
6464

65-
Primitives must neither be degenerated nor self-intersect but can differ in
66-
their properties. A face-and-edge-list-based description of primitives is
65+
Primitives must neither be degenerated nor self-intersect but can have different
66+
properties. A face-and-edge-list-based description of primitives is
6767
frequently used for triangles and polyhedra to store them on disk for
6868
visualization purposes (see OFF, PLY, VTK, or STL file formats).
6969

70-
Although this description is storage efficient it is not well suited for
71-
topological analyses though. In this case, scientists may need a different
72-
view on the primitives which is better represented with e.g. a
73-
half_edge_data_structure.
70+
Although this description is storage efficient, it is not well-suited for
71+
topological analyses. In this case using a half-edge data structure is
72+
an alternative.
7473

7574
Having an own base class for the data structure how primitives are stored is
76-
useful to embrace both users with small or very detailed specification demands.
75+
useful to embrace both users with small or detailed specification demands.
7776
</doc>
7877
<!--resulting in a design similar to that of NXoff_geometry and the XDMF mixed primitive topology-->
7978
<field name="number_of_vertices" type="NX_INT" units="NX_UNITLESS">
@@ -159,10 +158,10 @@ duplicate of an NXoff_geometry ?-->
159158
Positions of the vertices.
160159

161160
Users are encouraged to reduce the vertices to a unique set as this may
162-
result in a more efficient storage of the geometry data.
163-
It is also possible though to store the vertex positions naively in which
164-
case vertices_are_unique is likely False. Naively here means that each
165-
vertex is stored even though many share the same positions.
161+
result in more efficient storage. Alternatively, storing vertex positions naively
162+
should be indicated with setting vertices_are_unique to False.
163+
Naively means that each vertex is stored even though many vertices may
164+
share the same positions.
166165
</doc>
167166
<dimensions rank="2">
168167
<dim index="1" value="n_v"/>

base_classes/NXcg_half_edge_data_structure.nxdl.xml

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
#
2222
# For further information, see http://www.nexusformat.org
2323
-->
24-
<definition xmlns="http://definition.nexusformat.org/nxdl/3.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" category="base" type="group" name="NXcg_half_edge_data_structure" extends="NXobject" xsi:schemaLocation="http://definition.nexusformat.org/nxdl/3.1 ../nxdl.xsd">
24+
<definition xmlns="http://definition.nexusformat.org/nxdl/3.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" category="base" type="group" name="NXcg_half_edge_data_structure" extends="NXcg_primitive" xsi:schemaLocation="http://definition.nexusformat.org/nxdl/3.1 ../nxdl.xsd">
2525
<!--holes in the polygon mesh can be handled-->
2626
<symbols>
2727
<doc>
@@ -194,8 +194,4 @@
194194
of microstructural objects like crystals/grains.
195195
</doc>
196196
</field>
197-
<!--eventually store the Weinberg vector as an integer array
198-
which could be more efficient
199-
see https://jerryyin.info/geometry-processing-algorithms/half-edge/
200-
for an illustrative example of half-edge data structures-->
201197
</definition>

0 commit comments

Comments
 (0)