NurbsCurveFitParameters
ReferencesThe NURBS curve fit tool creates a NURBS curve that approximates an existing curve. The NurbsCurveFitParameters class contains the paramters that determine NURBS curve properties (degree, point count, ...) and other fitting contstraints.
Constructors
public NurbsCurveFitParameters()
Initializes a new instance of the NurbsCurveFitParameters class.
public NurbsCurveFitParameters(NurbsCurveFitParameters other)
Creates a new instance of the NurbsCurveFitParameters class as a copy of an existing instance.
Parameters:
| other (NurbsCurveFitParameters) | The instance to copy |
Exceptions:
| ArgumentNullException |
Finalizer
~NurbsCurveFitParameters
#~NurbsCurveFitParameters()
Passively reclaims unmanaged resources when the class user did not explicitly call Dispose().
Properties
If true, the TangentMatching setting is applied at kinks. Otherwise, TangentMatching applies only to the ends of curves.
Number of control points if the NURBS curve will be clamped. Number of total control points if the NURBS curve will be periodic. This number is >= PointCount() Includes SubDFriendly constrained points and the duplicated point for a clamped closed curve.
Number of total control points if the NURBS curve will be periodic. This number is >= PointCount() and includes periodic duplicates.
If Closed() is true, the number of constrained points is (TangentMatchStart() || TangentMatchEnd() ? 1 : 0) + (TangentMatchStart()?1:0) + (TangentMatchEnd()?1:0). If Closed() is false, the number of constrained points is 2 + (SubDFriendly() ? 2 : 0) + (TangentMatchStart()?1:0) + (TangentMatchEnd()?1:0).
Returns: Number of constrained points.
When CurvatureBiasIntensity == NurbsCurveFitParameters.Intensity::Custom, this value is used as the curvature bias parameter.
Curvature bias is used to make the fit curve stay close to regions of relatively high curvature. Use CurvatureBiasCoefficient() to convert this enum to the the value passed to the optimizer.
Default number of points to sample from input curves and pass to the fitter that creates the output NURBS curve.
The angle, in degrees, used to determine if when an abrupt change in tangent or curvature vector direction is a kink.
The angle, in radians, used to determine if when an abrupt change in tangent or curvature vector direction is a kink.
Gets or sets the kink splitting behavior used when fitting a NURBS curve. See also NurbsCurveFitParameters.KinkSplit
Remarks: This property determines how the curve fitting algorithm handles kinks or sharp changes in direction. Adjusting this value can influence the smoothness and accuracy of the resulting curve. Choose an appropriate value based on whether preserving or smoothing out kinks is desired for your application.
Gets the maximum number of points supported for NURBS curve fitting operations.
Maximum number of points to sample from input curves and pass to the fitter that creates the output NURBS curve.
The minimum clamped point count
The minimum closed point count
Minimum number of points to sample from input curves and pass to the fitter that creates the output NURBS curve.
If OptimizeCurve = false, then all options below are ignored and the Greville interpolant is returned. Rhino 1 - Rhino 8 Rebuild command created a result similar to what's created when m_bOptimizeCurve = false.
Number of total control points if the NURBS curve will be periodic. This number is >= PointCount() and includes periodic duplicates.
Number of distinct control points in the NURBS curve fit. If a range of point counts is possible, this is the minimum number.
Gets or sets the point count range as an IndexPair.
Returns: Maximum number of distinct control points in the NURBS curve fit.
Returns: Minimum number of distinct control points in the NURBS curve fit.
When a range of point counts is permitted and PointCountRangeTolerance greater than 0, then searching for the NURBS curve fit terminates if the separation is less than or equal to PointCountRangeTolerance.
Returns: The desired or target separation value used when a ranged of point counts is permitted.
This is the number of points the NURBS curve is fit through. Is it common for these points to be sampled from an input curve.
When SmoothingIntensity == NurbsCurveFitParameters.Intensity::Custom, this value is used as the smoothing parameter.
Smoothing penalty used to make triples of consecutive control polygon points colinear. Use SmoothingCoefficient() to convert this enum to the the value passed to the optimizer.
Gets or sets the SubDFriendly property. When true, the resulting curve will be more likely to have good subdivision surface properties, such as fewer kinks and more even parameterization. This is accomplished by using a more aggressive kink splitting strategy and by using the SmoothingCoefficient to bias the fit towards smoother curves.
Gets ot Sets the TangentMatching value
When UniformityIntensity == NurbsCurveFitParameters.Intensity::Custom, this value is used as the uniformity parameter.
Uniformity penalty used to make the distance between control points more equal. Use UniformityCoefficient() to convert this enum to the the value passed to the optimizer.
Methods
Supports the ICloneable inteface and creates a new NurbsCurveFitParameters object with the same property values as this instance.
public void Dispose()
Actively reclaims unmanaged resources that this instance uses.
Dispose
#For derived class implementers.
This method is called with argument true when class user calls Dispose(), while with argument false when the Garbage Collector invokes the finalizer, or Finalize() method.
You must reclaim all used unmanaged resources in both cases, and can use this chance to call Dispose on disposable fields if the argument is true.
Also, you must call the base virtual method within your overriding method.
Parameters:
| disposing (bool) | true if the call comes from the Dispose() method; false if it comes from the Garbage Collector finalizer. |
Returns the Curvature bias coefficient that corresponds to a given NurbsCurveFitParameters.Intensity value.
Parameters:
| intensity (NurbsCurveFitParameters.Intensity) |
public NurbsCurveFitParameters.Intensity GetCurvatureBiasIntensityFromCoefficient(double coefficient)
Returns the NurbsCurveFitParameters.Intensity value that corresponds to a given curvature bias coefficient.
Parameters:
| coefficient (double) |
Get the point count range and tolerance.
Returns the smoothing coefficient that corresponds to a given NurbsCurveFitParameters.Intensity value.
Parameters:
| intensity (NurbsCurveFitParameters.Intensity) |
Returns the NurbsCurveFitParameters.Intensity value that corresponds to a given smoothing coefficient.
Parameters:
| coefficient (double) |
Returns the uniformity coefficient that corresponds to a given NurbsCurveFitParameters.Intensity value.
Parameters:
| intensity (NurbsCurveFitParameters.Intensity) |
Returns the NurbsCurveFitParameters.Intensity value that corresponds to a given uniformity coefficient.
Parameters:
| coefficient (double) |
Given a point count and periodic setting, determine the maximum degree.
Give a degree and periodic setting, determine the minimum point count.
Set the point count range and tolerance.
Set the point count range and tolerance.
ValidInput
#public static bool ValidInput(long sample_point_count, int degree, int control_point_count, bool bClosed, Interval curve_domain)
returns true if the input values are within the acceptable ranges for NURBS curve fitting. If false is returned, the input values should be adjusted before calling the curve fitting function. See also MinimumPointCountForDegree() and MaximumPointCountForDegree().