# NurbsCurveResult

```from panda3d.core import NurbsCurveResult
```
class NurbsCurveResult

Bases:

Bases: `ReferenceCount`

The result of a `NurbsCurveEvaluator`. This object represents a curve in a particular coordinate space. It can return the point and/or tangent to the curve at any point.

This is not related to `NurbsCurve`, `CubicCurveseg` or any of the ParametricCurve-derived objects in this module. It is a completely parallel implementation of NURBS curves, and will probably eventually replace the whole `ParametricCurve` class hierarchy.

Inheritance diagram

__init__(param0: NurbsCurveResult)

Determines the set of subdivisions necessary to approximate the curve with a set of linear segments, no point of which is farther than tolerance units from the actual curve.

After this call, you may walk through the resulting set of samples with `getNumSamples()`, `getSampleT()`, and `getSamplePoint()`.

evalExtendedPoint(t: float, d: int)

Evaluates the curve in n-dimensional space according to the extended vertices associated with the curve in the indicated dimension.

evalExtendedPoints(t: float, d: int, result: PN_stdfloat_[], num_values: int) bool

Simultaneously performs `evalExtendedPoint()` on a contiguous sequence of dimensions. The dimensions evaluated are d through (d + num_values - 1); the results are filled into the num_values elements in the indicated result array.

evalPoint(t: float, point: LVecBase3) bool

Computes the point on the curve corresponding to the indicated value in parametric time. Returns true if the t value is valid, false otherwise.

evalSegmentExtendedPoint(segment: int, t: float, d: int)

Evaluates the curve in n-dimensional space according to the extended vertices associated with the curve in the indicated dimension.

evalSegmentExtendedPoints(segment: int, t: float, d: int, result: PN_stdfloat_[], num_values: int)

Simultaneously performs `evalExtendedPoint()` on a contiguous sequence of dimensions. The dimensions evaluated are d through (d + num_values - 1); the results are filled into the num_values elements in the indicated result array.

evalSegmentPoint(segment: int, t: float, point: LVecBase3)

Evaluates the point on the curve corresponding to the indicated value in parametric time within the indicated curve segment. t should be in the range [0, 1].

The curve is internally represented as a number of connected (or possibly unconnected) piecewise continuous segments. The exact number of segments for a particular curve depends on the knot vector, and is returned by `getNumSegments()`. Normally, `evalPoint()` is used to evaluate a point along the continuous curve, but when you care more about local continuity, you can use `evalSegmentPoint()` to evaluate the points along each segment.

evalSegmentTangent(segment: int, t: float, tangent: LVecBase3)

As `evalSegmentPoint()`, but computes the tangent to the curve at the indicated point. The tangent vector will not necessarily be normalized, and could be zero, particularly at the endpoints.

evalTangent(t: float, tangent: LVecBase3) bool

Computes the tangent to the curve at the indicated point in parametric time. This tangent vector will not necessarily be normalized, and could be zero. See also `evalPoint()`.

getEndT()

Returns the last legal value of t on the curve.

getNumSamples() int

Returns the number of sample points generated by the previous call to `adaptiveSample()`.

getNumSegments() int

Returns the number of piecewise continuous segments within the curve. This number is usually not important unless you plan to call `evalSegmentPoint()`.

getSamplePoint(n: int)

Returns the point on the curve of the nth sample point generated by the previous call to `adaptiveSample()`.

For tangents, or extended points, you should use `getSampleT()` and pass it into `evalTangent()` or `evalExtendedPoint()`.

getSamplePoints() list
getSampleT(n: int)

Returns the t value of the nth sample point generated by the previous call to `adaptiveSample()`.

getSampleTs() list
getSegmentT(segment: int, t: float)

Accepts a t value in the range [0, 1], and assumed to be relative to the indicated segment (as in `evalSegmentPoint()`), and returns the corresponding t value in the entire curve (as in `evalPoint()`).

getStartT()

Returns the first legal value of t on the curve. Usually this is 0.0.