# SubDSurfaceInterpolator class

Namespace: [Rhino.Geometry](https://developer.rhino3d.com/api/rhinocommon/namespace/rhino.geometry.md) · Assembly: [RhinoCommon](https://developer.rhino3d.com/api/rhinocommon/assembly/rhinocommon.md)

```cs
public class SubDSurfaceInterpolator : IDisposable
```

Interpolate some or all of the vertices limit surface positions in a SubD to specified locations. NB: It is recommended not to use these methods to interpolate more than 1000 vertices. [SubD.SetVertexSurfacePoint(uint, Point3d)](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/setvertexsurfacepoint.md) [SubD.InterpolateSurfacePoints(Point3d[])](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/interpolatesurfacepoints.md) [SubD.InterpolateSurfacePoints(uint[], Point3d[])](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/interpolatesurfacepoints.md) [SubDVertex.SurfacePoint()](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subdvertex/surfacepoint.md)

## Constructors

- [SubDSurfaceInterpolator](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subdsurfaceinterpolator/ctor.md): Initialize an empty SubDSurfaceInterpolator.

## Finalizer

- [~SubDSurfaceInterpolator](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subdsurfaceinterpolator/finalize.md): Passively reclaims unmanaged resources when the class user did not explicitly call Dispose().

## Properties

- [ContextId](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subdsurfaceinterpolator/contextid.md): The context assigned id. This id is provided for applications using ON_SubDSurfaceInterpolator. It is not inspected or used in any part of the interpolation setup or calculations.
- [MaximumRecommendedInterpolatedVertexCount](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subdsurfaceinterpolator/maximumrecommendedinterpolatedvertexcount.md): (static) Interpolation requires building a solver. We estimate that this solver will work in reasonnable time if the number of interplolated vertices is smaller than MaximumInterpolatedVertexCount. However, given sufficient time, memory, and CPU resources, the code will work with any value. In version 8.0, this value is 1000.

## Methods

- [Clear](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subdsurfaceinterpolator/clear.md): Destroys the information needed to solve the interpolation.
- [CreateFromMarkedVertices](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subdsurfaceinterpolator/createfrommarkedvertices.md): (static) Create an interpolator where all the marked vertices (unmarked if interpolatedVerticesMark is false) in the SubD are free vertices in the linear system used for interpolation, and the unmarked (marked if interpolatedVerticesMark is false) are fixed to their initial positions. Free vertices are can move as a result of the interpolation, and can receive an interpolation target location.
- [CreateFromSelectedVertices](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subdsurfaceinterpolator/createfromselectedvertices.md): (static) Create an interpolator where all the selected vertices in the SubD are free vertices in the linear system used for interpolation, and the unselected are fixed to their initial positions. Free vertices are can move as a result of the interpolation, and can receive an interpolation target location.
- [CreateFromSubD](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subdsurfaceinterpolator/createfromsubd.md): (static) Create an interpolator where all the vertices in the SubD are free vertices in the linear system used for interpolation (i.e. can move as a result of the interpolation, and can receive an interpolation target location).
- [CreateFromVertexIdList](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subdsurfaceinterpolator/createfromvertexidlist.md): (static) Create an interpolator where all the listed vertices in the SubD are free vertices in the linear system used for interpolation, and the unselected are fixed to their initial positions. Free vertices are can move as a result of the interpolation, and can receive an interpolation target location.
- [Dispose](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subdsurfaceinterpolator/dispose.md): (2 overloads) Actively reclaims unmanaged resources that this instance uses.
- [FixedVertexCount](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subdsurfaceinterpolator/fixedvertexcount.md)
- [InterpolatedVertexCount](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subdsurfaceinterpolator/interpolatedvertexcount.md)
- [InterpolatedVertexIndex](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subdsurfaceinterpolator/interpolatedvertexindex.md)
- [IsInterpolatedVertex](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subdsurfaceinterpolator/isinterpolatedvertex.md): (2 overloads)
- [Solve](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subdsurfaceinterpolator/solve.md): Solve the interpolation system, given target interpolation locations for the free vertices in the system. Updates the subd referenced by this system so the corresponding surface points are at the locations given by surfacePoints.
- [Transform](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subdsurfaceinterpolator/transform.md): Apply an arbitrary transformation to the target interpolation points.
- [VertexIdList](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subdsurfaceinterpolator/vertexidlist.md)
