Function Reference: longbone_FragmentGeometry

csg-toolkit: longbone_FragmentGeometry (filename, points)
csg-toolkit: longbone_FragmentGeometry (folder, filename, points)

This function analyzes the cross-sectional geometry of any diaphyseal long bone fragment at custom intervals defined by user defined points on the bone’s surface.

The fragment must be saved in Wavefront OBJ 3D model format, specified in filename, and the user defined points saved in a Meshlab PickedPoints file format, specified in points. Optionally, the folder containing the 3D model can be defined in folder, if the function is invoked from a different working directory. All thre input arguments must be strings.

longbone_FragmentGeometry will process an arbitrary number of cross sections, according to the user defined points, as specified in points, as long as they lie between 10% and 90% of the fragment’s maximum length. Points beyond this range are ignored.

longbone_FragmentGeometry does not return any output arguments, but it saves all geometric properties in CSV files as described in the following section. 3D models must be pure triangular meshes and their coordinate units are assumed to be in mm. Each OBJ file must explicitly contain a single 3D model of any long bone fragment.

Assuming a 3D model named "bone_ID.obj", the following files are generated:

FilenameDescription
Fgeometry-bone_ID.csvIt contains the properties of area (measured in mm^2), perimeter (measured in mm), centroid (returned as [x,y,z] coordinates in mm units), and the sectioning normal (returned as an [x,y,z] vector). Each row of the CSV file corresponds to the user defined points at the same order as they appear in the relevant Meshlab PickedPoints file. The aforementioned properties for each cross section are stored as a row vector with the respective order in columns [[2],[3],[4:6],[7:9]]. The first column contains the index of the corresponding cross-sectioning point in increasing order.
Finertia-bone_ID.csvIt contains the properties of Ixy, Imin, and Imax, all measured in mm^4. Accordingly, they are saved in a row vector [2:4] with the first column containing the index of each cross section.
Fpolyline2D-bone_ID.csvIt contains the 2D coordinates (on an arbitrary x,y local axis) for each cross section as an N×2 matrix, where N is the number of points for each cross-sectional polygon. These polygons are ordered as column duplets, i.e. [[1:2],...,[end-1:end]], in the same order their corresponding points are stored in the Meshlab PickedPoints file. Polygon coordinates start from the second row ([2:end],:), while the first row (1,[1,3,...,end-1]) contains the index of the corresponding cross-sectioning points.
Fpolyline3D-bone_ID.csvIt contains the 3D model coordinates for each cross section as an N×3 matrix, where N is the number of points for each cross-sectional polygon. These polygons are ordered as column triplets, i.e. [[1:3],...,[end-2:end]], in the same order their corresponding points are stored in the Meshlab PickedPoints file. Polygon coordinates start from starting from the second row ([2:end],:), while the first row (1,[1,4,...,end-2]) contains the index of the corresponding cross-sectioning points.

See also: longbone_Geometry, longbone_CustomGeometry, visualize_CrossSections

Source Code: longbone_FragmentGeometry