# Curve 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
[Serializable]
public class Curve : GeometryBase
```

Represents a base class that is common to most RhinoCommon curve types.

A curve represents an entity that can be all visited by providing a single parameter, usually called t.

**Derived types:** [ArcCurve](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.arccurve.md), [CurveProxy](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curveproxy.md), [LineCurve](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.linecurve.md), [NurbsCurve](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.nurbscurve.md), [PolyCurve](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.polycurve.md), [PolylineCurve](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.polylinecurve.md)

## Constructors

- [Curve](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/ctor.md): Protected serialization constructor for internal use.

## Properties

- [Degree](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/degree.md): Gets the maximum algebraic degree of any span or a good estimate if curve spans are not algebraic.
- [Dimension](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/dimension.md): Gets the dimension of the object. The dimension is typically three. For parameter space trimming curves the dimension is two. In rare cases the dimension can be one or greater than three.
- [Domain](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/domain.md): Gets or sets the domain of the curve.
- [IsClosed](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/isclosed.md): Gets a value indicating whether or not this curve is a closed curve.
- [IsPeriodic](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/isperiodic.md): Gets a value indicating whether or not this curve is considered to be Periodic.
- [IsSubDFriendly](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/issubdfriendly.md): Returns true if the curve is a cubic, non-rational, uniform NURBS curve that is either periodic or has natural end conditions. Otherwise, false is returned.
- [PointAtEnd](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/pointatend.md): Evaluates point at the end of the curve.
- [PointAtMid](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/pointatmid.md): Evaluates point at the middle, or mid, of the curve.
- [PointAtStart](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/pointatstart.md): Evaluates point at the start of the curve.
- [SpanCount](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/spancount.md): Gets the number of non-empty smooth (c-infinity) spans in the curve.
- [TangentAtEnd](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/tangentatend.md): Evaluate unit tangent vector at the end of the curve.
- [TangentAtStart](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/tangentatstart.md): Evaluates the unit tangent vector at the start of the curve.

## Methods

- [ChangeClosedCurveSeam](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/changeclosedcurveseam.md): If this curve is closed, then modify it so that the start/end point is at curve parameter t.
- [ChangeDimension](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/changedimension.md): Changes the dimension of a curve.
- [ClosedCurveOrientation](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/closedcurveorientation.md): (4 overloads) Determines the orientation (counterclockwise or clockwise) of a closed, planar curve in the world XY plane. Only works with simple (no self intersections) closed, planar curves.
- [ClosestPoint](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/closestpoint.md): (2 overloads) Finds the parameter of the point on a curve that is closest to testPoint. If the maximumDistance parameter is > 0, then only points whose distance to the given point is <= maximumDistance will be returned. Using a positive value of maximumDistance can substantially speed up the search.
- [ClosestPoints](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/closestpoints.md): (3 overloads) Gets closest points between this and another curves.
- [CombineShortSegments](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/combineshortsegments.md): Looks for segments that are shorter than tolerance that can be combined. For NURBS of degree greater than 1, spans are combined by removing knots. Similarly for NURBS segments of polycurves. Otherwise, RemoveShortSegments() is called. Does not change the domain, but it will change the relative parameterization.
- [Contains](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/contains.md): (3 overloads) Computes the relationship between a point and a closed curve region. This curve must be closed or the return value will be Unset.
- [ControlPolygon](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/controlpolygon.md): Gets the curve's control polygon.
- [CreateArcBlend](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createarcblend.md): (static) Creates a polycurve consisting of two tangent arc segments that connect two points and two directions.
- [CreateArcCornerRectangle](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createarccornerrectangle.md): (static) Creates an arc-cornered (rounded) rectangular curve.
- [CreateArcLineArcBlend](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createarclinearcblend.md): (static) Creates an arc-line-arc blend curve between two curves. The output is generally a PolyCurve with three segments: arc, line, arc. In some cases, one or more of those segments will be absent because they would have 0 length. If there is only a single segment, the result will either be an ArcCurve or a LineCurve.
- [CreateBlendCurve](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createblendcurve.md): (3 overloads, static) Makes a curve blend between two curves at the parameters specified with the directions and continuities specified.
- [CreateBooleanDifference](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createbooleandifference.md): (4 overloads, static) Calculates the boolean difference between two closed, planar curves. Note, curves must be co-planar.
- [CreateBooleanIntersection](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createbooleanintersection.md): (2 overloads, static) Calculates the boolean intersection of two closed, planar curves. Note, curves must be co-planar.
- [CreateBooleanRegions](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createbooleanregions.md): (2 overloads, static) Calculates curve Boolean regions, which trims and splits curves based on their overlapping regions.
- [CreateBooleanUnion](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createbooleanunion.md): (3 overloads, static) Calculates the boolean union of two or more closed, planar curves, and reports which input curve ended up in which output curve. Note, curves must be co-planar.
- [CreateCatenaryCurveFromApex](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createcatenarycurvefromapex.md): (static) Generate a catenary curve through catenary apex.
- [CreateCatenaryCurveFromLength](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createcatenarycurvefromlength.md): (static) Generate a catenary curve of specific length.
- [CreateCatenaryCurveFromParameter](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createcatenarycurvefromparameter.md): (static) Generate a catenary curve from catenary parameter.
- [CreateCatenaryCurveThroughPoint](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createcatenarycurvethroughpoint.md): (static) Generate a catenary curve through a point
- [CreateConicCornerRectangle](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createconiccornerrectangle.md): (static) Creates a conic-corned (rounded) rectangular curve.
- [CreateControlPointCurve](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createcontrolpointcurve.md): (2 overloads, static) Constructs a curve from a set of control-point locations.
- [CreateCurve2View](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createcurve2view.md): (static) Creates a third curve from two curves that are planar in different construction planes. The new curve looks the same as each of the original curves when viewed in each plane.
- [CreateFillet](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createfillet.md): (static) Computes the fillet arc for a curve filleting operation.
- [CreateFilletCornersCurve](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createfilletcornerscurve.md): (static) Rounds the corners of a kinked curve with arcs of a single, specified radius.
- [CreateFilletCurves](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createfilletcurves.md): (static) Creates a tangent arc between two curves and trims or extends the curves to the arc.
- [CreateInterpolatedCurve](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createinterpolatedcurve.md): (3 overloads, static) Interpolates a sequence of points. Used by InterpCurve Command This routine works best when degree=3.
- [CreateMatchCurve](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/creatematchcurve.md): (static) Changes a curve end to meet a specified curve with a specified continuity.
- [CreateMeanCurve](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createmeancurve.md): (2 overloads, static) Constructs a mean, or average, curve from two curves.
- [CreateNurbsCurveFit](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createnurbscurvefit.md): (static) Rebuilds the curve to a NURBS curve with the specified options.
- [CreatePeriodicCurve](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createperiodiccurve.md): (2 overloads, static) Removes kinks from a curve. Periodic curves deform smoothly without kinks.
- [CreateRevisionCloud](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createrevisioncloud.md): (2 overloads, static) Creates a revision cloud curve from a planar curve.
- [CreateSoftEditCurve](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createsofteditcurve.md): (static) Creates a soft edited curve from an existing curve using a smooth field of influence.
- [CreateTextOutlines](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createtextoutlines.md): (static) Creates outline curves created from a text string. The functionality is similar to what you find in Rhino's TextObject command or TextEntity.Explode() in RhinoCommon.
- [CreateTweenCurves](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createtweencurves.md): (2 overloads, static) Creates curves between two open or closed input curves. Uses the control points of the curves for finding tween curves. That means the first control point of first curve is matched to first control point of the second curve and so on. There is no matching of curves direction. Caller must match input curves direction before calling the function.
- [CreateTweenCurvesWithMatching](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createtweencurveswithmatching.md): (2 overloads, static) Creates curves between two open or closed input curves. Make the structure of input curves compatible if needed. Refits the input curves to have the same structure. The resulting curves are usually more complex than input unless input curves are compatible and no refit is needed. There is no matching of curves direction. Caller must match input curves direction before calling the function.
- [CreateTweenCurvesWithSampling](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/createtweencurveswithsampling.md): (2 overloads, static) Creates curves between two open or closed input curves. Use sample points method to make curves compatible. This is how the algorithm works: Divides the two curves into an equal number of points, finds the midpoint between the corresponding points on the curves and interpolates the tween curve through those points. There is no matching of curves direction. Caller must match input curves direction before calling the function.
- [CurvatureAt](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/curvatureat.md): Evaluate the curvature vector at a curve parameter.
- [DerivativeAt](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/derivativeat.md): (2 overloads) Evaluate the derivatives at the specified curve parameter.
- [Dispose](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/dispose.md): 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.
- [DivideAsContour](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/divideascontour.md): Divides this curve at fixed steps along a defined contour line.
- [DivideByCount](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/dividebycount.md): (2 overloads) Divide the curve into a number of equal-length segments.
- [DivideByLength](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/dividebylength.md): (4 overloads) Divide the curve into specific length segments.
- [DivideEquidistant](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/divideequidistant.md): (2 overloads) Calculates 3d points on a curve where the linear distance between the points is equal.
- [DoDirectionsMatch](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/dodirectionsmatch.md): (static) Determines whether two curves travel more or less in the same direction.
- [Duplicate](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/duplicate.md): Constructs an exact duplicate of this Curve.
- [DuplicateCurve](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/duplicatecurve.md): Constructs an exact duplicate of this curve.
- [DuplicateSegments](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/duplicatesegments.md): Duplicates curve segments. Explodes polylines, polycurves and G1 discontinuous NURBS curves. Single segment curves, such as lines, arcs, unkinked NURBS curves, are duplicated.
- [Extend](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/extend.md): (5 overloads) Extends a curve until it intersects a collection of objects.
- [ExtendByArc](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/extendbyarc.md): Extends a curve by an Arc until it intersects a collection of objects.
- [ExtendByLine](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/extendbyline.md): Extends a curve by a line until it intersects a collection of objects.
- [ExtendOnSurface](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/extendonsurface.md): (2 overloads) Extends a curve on a surface.
- [ExtremeParameters](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/extremeparameters.md): Returns the parameter values of all local extrema. Parameter values are in increasing order so consecutive extrema define an interval on which each component of the curve is monotone. Note, non-periodic curves always return the end points.
- [Fair](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/fair.md): Fairs a curve object. Fair works best on degree 3 (cubic) curves. Attempts to remove large curvature variations while limiting the geometry changes to be no more than the specified tolerance.
- [FilletSurfaceToCurve](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/filletsurfacetocurve.md): Creates a constant-radius fillet surface between a surface and the curve.
- [FilletSurfaceToRail](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/filletsurfacetorail.md): Creates a surface between two surfaces, with a fixed rail curve on the first surface.
- [FindLocalInflection](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/findlocalinflection.md): Local minimization for point on a curve with tangent perpendicular to N.
- [Fit](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/fit.md): Fits a new curve through an existing curve.
- [FrameAt](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/frameat.md): Returns a 3d frame at a parameter.
- [GetConicSectionType](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/getconicsectiontype.md): (2 overloads) Returns the type of conic section based on the curve's shape.
- [GetCurveParameterFromNurbsFormParameter](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/getcurveparameterfromnurbsformparameter.md): Convert a NURBS curve parameter to a curve parameter.
- [GetDistancesBetweenCurves](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/getdistancesbetweencurves.md): (static) Calculates the minimum and maximum distances between two curves. This function is useful for computing curve deviation. If you are not computing curve deviation, use [Curve.ClosestPoints(Curve, Point3d, Point3d)](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/closestpoints.md).
- [GetFilletPoints](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/getfilletpoints.md): (static) Finds points at which to cut a pair of curves so that a fillet of given radius can be inserted.
- [GetLength](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/getlength.md): (4 overloads) Gets the length of the curve with a fractional tolerance of 1.0e-8.
- [GetLocalPerpPoint](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/getlocalperppoint.md): (2 overloads) Search for a location on the curve, near seedParmameter, that is perpendicular to a test point.
- [GetLocalTangentPoint](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/getlocaltangentpoint.md): (2 overloads) Search for a location on the curve, near seedParmameter, that is tangent to a test point.
- [GetNextDiscontinuity](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/getnextdiscontinuity.md): (2 overloads) Searches for a derivative, tangent, or curvature discontinuity.
- [GetNurbsFormParameterFromCurveParameter](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/getnurbsformparameterfromcurveparameter.md): Convert a curve parameter to a NURBS curve parameter.
- [GetPerpendicularFrames](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/getperpendicularframes.md): Gets a collection of perpendicular frames along the curve. Perpendicular frames are also known as 'Zero-twisting frames' and they minimize rotation from one frame to the next.
- [GetSubCurves](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/getsubcurves.md): Gets subcurves from a curve. The results will be similar to what is produced by Rhino's Explode command.
- [HasNurbsForm](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/hasnurbsform.md): Does a NURBS curve representation of this curve exist?
- [InflectionPoints](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/inflectionpoints.md): (2 overloads) Returns a curve's inflection points. An inflection point is a location on a curve at which the sign of the curvature (i.e., the concavity) changes. The curvature at these locations is always 0.
- [IsArc](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/isarc.md): (2 overloads) Test a curve to see if it can be represented by an arc or circle within RhinoMath.ZeroTolerance.
- [IsCircle](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/iscircle.md): (2 overloads) Test a curve to see if it can be represented by a circle within RhinoMath.ZeroTolerance.
- [IsClosable](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/isclosable.md): (2 overloads) Decide if it makes sense to close off this curve by moving the endpoint to the start based on start-end gap size and length of curve as approximated by chord defined by 6 points.
- [IsContinuous](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/iscontinuous.md): Test continuity at a curve parameter value.
- [IsEllipse](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/isellipse.md): (2 overloads) Test a curve to see if it can be represented by an ellipse within RhinoMath.ZeroTolerance.
- [IsInPlane](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/isinplane.md): (2 overloads) Test a curve to see if it lies in a specific plane.
- [IsLinear](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/islinear.md): (2 overloads) Test a curve to see if it is linear to within RhinoMath.ZeroTolerance units (1e-12).
- [IsPlanar](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/isplanar.md): (2 overloads) Test a curve for planarity.
- [IsPolyline](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/ispolyline.md): Several types of Curve can have the form of a polyline including a degree 1 NurbsCurve, a PolylineCurve, and a PolyCurve all of whose segments are some form of polyline. IsPolyline tests a curve to see if it can be represented as a polyline.
- [IsShort](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/isshort.md): (2 overloads) Used to quickly find short curves.
- [JoinCurves](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/joincurves.md): (5 overloads, static) Joins a collection of curve segments together.
- [LcoalClosestPoint](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/lcoalclosestpoint.md): (obsolete) Find parameter of the point on a curve that is locally closest to the testPoint. The search for a local close point starts at a seed parameter.
- [LengthParameter](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/lengthparameter.md): (4 overloads) Gets the parameter along the curve which coincides with a given length along the curve.
- [LocalClosestPoint](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/localclosestpoint.md): Find parameter of the point on a curve that is locally closest to the testPoint. The search for a local close point starts at a seed parameter.
- [MakeClosed](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/makeclosed.md): If IsClosed, just return true. Otherwise, decide if curve can be closed as follows: Linear curves polylinear curves with 2 segments, NURBS with 3 or less control points cannot be made closed. Also, if tolerance > 0 and the gap between start and end is larger than tolerance, curve cannot be made closed. Adjust the curve's endpoint to match its start point.
- [MakeEndsMeet](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/makeendsmeet.md): (static) Makes adjustments to the ends of one or both input curves so that they meet at a point.
- [MaxCurvaturePoints](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/maxcurvaturepoints.md): (2 overloads) Returns a curve's maximum curvature points. The maximum curvature points identify where the curvature starts to decrease in both directions from the points.
- [NonConstOperation](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/nonconstoperation.md): For derived classes implementers. Defines the necessary implementation to free the instance from being constant.
- [NormalizedLengthParameter](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/normalizedlengthparameter.md): (4 overloads) Input the parameter of the point on the curve that is a prescribed arc length from the start of the curve.
- [NormalizedLengthParameters](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/normalizedlengthparameters.md): (4 overloads) Input the parameter of the point on the curve that is a prescribed arc length from the start of the curve.
- [Offset](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/offset.md): (3 overloads) Offsets this curve. If you have a nice offset, then there will be one entry in the array. If the original curve had kinks or the offset curve had self intersections, you will get multiple segments in the output array.
- [OffsetNormalToSurface](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/offsetnormaltosurface.md): Finds a curve by offsetting an existing curve normal to a surface. The caller is responsible for ensuring that the curve lies on the input surface.
- [OffsetOnSurface](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/offsetonsurface.md): (6 overloads) Offset this curve on a brep face surface. This curve must lie on the surface.
- [OffsetTangentToSurface](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/offsettangenttosurface.md): Finds a curve by offsetting an existing curve tangent to a surface. The caller is responsible for ensuring that the curve lies on the input surface.
- [PerpendicularFrameAt](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/perpendicularframeat.md): Return a 3d frame at a parameter. This is slightly different than FrameAt in that the frame is computed in a way so there is minimal rotation from one frame to the next.
- [PlanarClosedCurveRelationship](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/planarclosedcurverelationship.md): (static) Determines whether two coplanar simple closed curves are disjoint or intersect; otherwise, if the regions have a containment relationship, discovers which curve encloses the other.
- [PlanarCurveCollision](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/planarcurvecollision.md): (static) Determines if two coplanar curves collide (intersect).
- [PointAt](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/pointat.md): Evaluates point at a curve parameter.
- [PointAtLength](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/pointatlength.md): Gets a point at a certain length along the curve. The length must be non-negative and less than or equal to the length of the curve. Lengths will not be wrapped when the curve is closed or periodic.
- [PointAtNormalizedLength](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/pointatnormalizedlength.md): Gets a point at a certain normalized length along the curve. The length must be between or including 0.0 and 1.0, where 0.0 equals the start of the curve and 1.0 equals the end of the curve.
- [ProjectToBrep](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/projecttobrep.md): (6 overloads, static) Projects a Curve onto a Brep along a given direction.
- [ProjectToMesh](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/projecttomesh.md): (4 overloads, static) Projects a curve to a set of meshes using a direction and tolerance.
- [ProjectToPlane](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/projecttoplane.md): (static) Constructs a curve by projecting an existing curve to a plane.
- [PullToBrepFace](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/pulltobrepface.md): (3 overloads) Pulls this curve to a brep face and returns the result of that operation.
- [PullToMesh](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/pulltomesh.md): (2 overloads) Projects this curve onto a mesh.
- [Rebuild](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/rebuild.md): Rebuild a curve with a specific point count.
- [RebuildToMatchTemplateCurve](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/rebuildtomatchtemplatecurve.md): Rebuilds this curve so it takes on the degree, knot vector, and control point count of a template curve.
- [RemoveShortSegments](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/removeshortsegments.md): Looks for segments that are shorter than tolerance that can be removed. Does not change the domain, but it will change the relative parameterization.
- [Repair](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/repair.md): Repairs a curve.
- [Reparameterize](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/reparameterize.md): Reparameterizes a curve using automatic parameterization.
- [Reverse](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/reverse.md): Reverses the direction of the curve.
- [RibbonOffset](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/ribbonoffset.md): (4 overloads) Offsets a closed curve in the following way: pProject the curve to a plane with given normal. Then, loose Offset the projection by distance + blend_radius and trim off self-intersection. THen, Offset the remaining curve back in the opposite direction by blend_radius, filling gaps with blends. Finally, use the elevations of the input curve to get the correct elevations of the result.
- [SetEndPoint](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/setendpoint.md): Forces the curve to end at a specified point. Not all curve types support this operation.
- [SetStartPoint](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/setstartpoint.md): Forces the curve to start at a specified point. Not all curve types support this operation.
- [Simplify](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/simplify.md): Returns a geometrically equivalent PolyCurve. The PolyCurve has the following properties All the PolyCurve segments are LineCurve, PolylineCurve, ArcCurve, or NurbsCurve. 2. The NURBS Curves segments do not have fully multiple interior knots. 3. Rational NURBS curves do not have constant weights. 4. Any segment for which IsLinear() or IsArc() is true is a Line, Polyline segment, or an Arc. 5. Adjacent co-linear or co-circular segments are combined. 6. Segments that meet with G1-continuity have there ends tuned up so that they meet with G1-continuity to within machine precision.
- [SimplifyEnd](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/simplifyend.md): Same as SimplifyCurve, but simplifies only the last two segments at "side" end.
- [Smooth](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/smooth.md): (2 overloads) Smooths a curve by averaging the positions of control points in a specified region.
- [SortCurves](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/sortcurves.md): (static) Sorts the curves into joinable segment groups. No joining is performed, the curves are only analyzed for start/end proximity.
- [SpanDomain](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/spandomain.md): Get the domain of the curve span with the given index. Use the SpanCount property to test how many spans there are.
- [SpanVector](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/spanvector.md): Returns the vector of span division parameters for this curve.
- [Split](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/split.md): (7 overloads) Splits a curve into pieces using a polysurface.
- [TangentAt](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/tangentat.md): Evaluates the unit tangent vector at a curve parameter.
- [ToArcsAndLines](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/toarcsandlines.md): Converts a curve into polycurve consisting of arc segments. Sections of the input curves that are nearly straight are converted to straight-line segments.
- [ToNurbsCurve](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/tonurbscurve.md): (2 overloads) Constructs a NURBS curve representation of this curve.
- [ToPolyline](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/topolyline.md): (3 overloads) Gets a polyline approximation of a curve.
- [TorsionAt](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/torsionat.md): Evaluate the torsion of a curve at a parameter. Sometimes also called the "second curvature", torsion is the rate of change of a curve's osculating plane.
- [Trim](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/trim.md): (3 overloads) Shortens a curve by a given length
- [TrimInterval](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/triminterval.md): (2 overloads) Trims the curve in-place by removing portions of the curve outside the specified interval.
- [TryGetArc](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/trygetarc.md): (4 overloads) Try to convert this curve into an Arc using a custom tolerance.
- [TryGetCircle](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/trygetcircle.md): (2 overloads) Try to convert this curve into a Circle using a custom tolerance.
- [TryGetEllipse](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/trygetellipse.md): (4 overloads) Try to convert this curve into an Ellipse using a custom tolerance.
- [TryGetPlane](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/trygetplane.md): (2 overloads) Test a curve for planarity and return the plane.
- [TryGetPolyline](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve/trygetpolyline.md): (2 overloads) Several types of Curve can have the form of a polyline including a degree 1 NurbsCurve, a PolylineCurve, and a PolyCurve all of whose segments are some form of polyline. IsPolyline tests a curve to see if it can be represented as a polyline.

## Inherited Members

- From [GeometryBase](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase.md): [HasBrepForm](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/hasbrepform.md), [IsDeformable](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/isdeformable.md), [IsDocumentControlled](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/isdocumentcontrolled.md), [IsShallowDuplicate](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/isshallowduplicate.md), [ObjectType](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/objecttype.md), [UserStringCount](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/userstringcount.md), [ComponentIndex](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/componentindex.md), [DataCRC](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/datacrc.md), [DeleteAllUserStrings](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/deletealluserstrings.md), [DeleteUserString](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/deleteuserstring.md), [DuplicateShallow](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/duplicateshallow.md), [GetBoundingBox](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/getboundingbox.md), [GetUserString](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/getuserstring.md), [GetUserStrings](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/getuserstrings.md), [MakeDeformable](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/makedeformable.md), [MemoryEstimate](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/memoryestimate.md), [OnSwitchToNonConst](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/onswitchtononconst.md), [Rotate](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/rotate.md), [Scale](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/scale.md), [SetUserString](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/setuserstring.md), [Transform](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/transform.md), [Translate](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/translate.md)
- From [CommonObject](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject.md): [Disposed](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/disposed.md), [HasUserData](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/hasuserdata.md), [IsValid](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/isvalid.md), [UserData](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/userdata.md), [UserDictionary](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/userdictionary.md), [ConstructConstObject](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/constructconstobject.md), [Dispose](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/dispose.md), [EnsurePrivateCopy](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/ensureprivatecopy.md), [GetObjectData](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/getobjectdata.md), [IsValidWithLog](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/isvalidwithlog.md), [ToJSON](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/tojson.md)
