Free Form Curves
Free-form curves are defined by arrays of 3D points called
Data Points or Data Array. To be continuous the
curve is interpolated between data points. Data points do not have to be spaced
evenly. Two consecutive points in the array must be different.
InterpolationDegree is an important property of a free-form curve. It
determines how curve points are calculated between data points. The
greater is InterpolationDegree the more smooth the curve appears.
In calculation of internal point InterpolationDegree+1 points are
taken into account, which means that the curve has to have at least
InterpolationDegree+1 data points. By default InterpolationDegree
is 1, in which case the curve is approximated by straight segments
between data points.
The software assumes that the curve is smooth. If the modelled curve has sharp
angles it still can be approximated, but InterpolationDegree has
to be set to 1. It is recommended to (nearly) duplicate the angle point by
adding another point very close to it, but not coinciding.
Free-form curves can be accessed by
ICurveFreeForm
interface.
Free-form curves are Geometric Curves, hence they
implement ICurve
interface..
When Closed property is set to true the Data Array is assumed to
represent a closed curve (continuous loop).
To create a free-from curve:
1. Call
Create or
Create2 method of
IDIObjectGenerator with
parameter eType set to eObjTypeFreeFormCurve
member of
EObjectType enumeration.
2. Query ICurveFreeForm
from IUnknown
returned by the Create(2) method
3. Obtain IArray3D
of the Data Array with a call to ICurveFreeForm.GetData
4. Use
IArray3D.SetCount and
IArray3D.Set to set size and enter points
in the array
5. Select or tune in value for the InterpolationDegree property
most appropriate for the application.
Performance note: Higher degree of interpolation makes relevant
calculations little slower, but allow using fewer data points, which can
actually result in better performance. It is recommended to make few experiments
to find appropriate settings.
See also: Pipes sample,
|