New functions added to the C3D Toolkit are often the result of requests by our customers, as well as improvements we make to the existing algorithms. The functions we talk about today are just that kind. A software developer was writing an application based on our C3D Modeler geometric kernel, and required tools for visual analysis and quality control of curves by smoothness and curvature.

To implement them, we added several methods that are responsible for constructing curvature graphs and the subsequent analysis of the curves.

## Creating Curvature Graphs

A *curvature graph* is a visual representation of the curvature values at each point along a curve. These graphs are usually used to analyze the smoothness of curves controls the smoothness of change in values of curvature. The values are shown by the length of line segments drawn perpendicularly to the curves. The longer the segment, the greater the magnitude of curvature at that point.

To build curvature graphs, you can use either the *Curvature(double t)* method of calculating the curvature of the curve or else use the C3D test application and execute the *Perform-Construction-Plot-Curve Curvature* command. In both cases, the result is an image that appears on the screen like the one shown in Figure 1.

Details on the methods for calculating curve parameters are found on our online documentation:

https://c3d.ascon.net/doc/math/class_mb_curve.html

https://c3d.ascon.net/doc/math/class_mb_curve3_d.html

## QC for Curves

For visual analysis and quality control of curves, C3D developers added the *GetCurvatureSpecialPoints()* method for finding all the special points of a curve’s curvature function. These include extrema, break points, and inflection points. The input parameters to this method are an array (which the algorithm returns filled-in) and the accuracy factor of the calculation. The array field contains the parameters of the found points and their curvature values.

The C3D test application offers the ability to build special points of curvature through a new menu item, *Create-Point in space-Based on a curve-Bends and extremes of curvature of curve*. It visualizes the plots of curvature through the new *Perform-Construction-Plot-Curve curvature menu* item.

As examples, let’s consider the two best-known curves: a circle and an ellipse. A circle contains no singular points, and so the curvature graph is uniform. The ellipse contains two minima and two maxima of curvature, and so the curvature graph varies in size. The two graphs are shown in Figure 2.

In some cases, the analysis of the curve is performed not for the purpose of detecting extrema of curvature, but for the purpose of determining, for example, its maximum value -- that is, the minimum radius, the value of which may be a technological limitation.

You can perform tests on sets of objects of constant curvature. To find the points on curves at which the curvature reaches the limit values, we added the *CurveMinMaxCurvature()* method. A detailed description of this is found on our online documentation page:

https://c3d.ascon.net/doc/math/group___algorithms__3_d.html

Author

Sergey Biryukov

C3D Toolkit product manager