Class TPiecewiseCubicBezier

Unit

Declaration

type TPiecewiseCubicBezier = class(TControlPointsCurve)

Description

Piecewise (composite) cubic Bezier curve. Each segment (ControlPoints[i]..ControlPoints[i+1]) is a cubic Bezier curve (Bezier with 4 control points, 2 points in the middle are auto-calculated for max smoothness).

This is a cubic B-spline. Which is equivalent to C2 continuous composite Bézier curves. See https://en.wikipedia.org/wiki/Spline_%28mathematics%29 . Aka Cubic B-Spline (piecewise C2-Smooth Cubic Bezier).

ControlPoints.Count may be 1 (in general, for TControlPointsCurve, it must be >= 2).

Source: castlescript/castlecurves.pas (line 213).

Hierarchy

Show Additional Members:

Overview

Constants

Public DefaultSegments = 32;

Fields

Public ControlPoints: TVector3List;

Methods

Protected procedure LoadFromElement(const E: TDOMElement); virtual;
Protected procedure SaveToStream(const Stream: TStream); virtual;
Public constructor Create;
Public function Point(const t: Float): TVector3; virtual; abstract;
Public function Point2D(const t: Float): TVector2;
Public function PointOfSegment(const i, Segments: Cardinal): TVector3;
Public class function LoadFromFile(const Url: String): TCurve;
Public function BoundingBox: TBox3D; virtual; abstract;
Public function GeometryNode(const Segments: Cardinal = DefaultSegments): TAbstractGeometryNode;
Protected procedure LoadFromElement(const E: TDOMElement); override;
Protected procedure SaveToStream(const Stream: TStream); override;
Public function BoundingBox: TBox3D; override;
Public procedure UpdateControlPoints; virtual;
Public constructor Create;
Public constructor CreateFromEquation(CasScriptCurve: TCasScriptCurve; ControlPointsCount: Cardinal);
Public destructor Destroy; override;
Public function ConvexHull: TVector3List;
Public constructor Create;
Public destructor Destroy; override;
Public procedure UpdateControlPoints; override;
Public function Point(const t: Float): TVector3; override;
Public function BoundingBox: TBox3D; override;

Properties

Public property TBegin: Single read FTBegin write FTBegin default 0;
Public property TEnd: Single read FTEnd write FTEnd default 1;

Description

Constants

Public DefaultSegments = 32;

This item has no description.

Source: castlescript/castlecurves.pas (line 40).

Fields

Public ControlPoints: TVector3List;

This item has no description.

Source: castlescript/castlecurves.pas (line 164).

Methods

Protected procedure LoadFromElement(const E: TDOMElement); virtual;

This item has no description.

Source: castlescript/castlecurves.pas (line 36).

Protected procedure SaveToStream(const Stream: TStream); virtual;

This item has no description.

Source: castlescript/castlecurves.pas (line 37).

Public constructor Create;

This item has no description.

Source: castlescript/castlecurves.pas (line 42).

Public function Point(const t: Float): TVector3; virtual; abstract;

Curve function, for each parameter value determine the 3D point. This determines the actual shape of the curve. This is the simplest approach to calculate points on a curve.

Source: castlescript/castlecurves.pas (line 53).

Public function Point2D(const t: Float): TVector2;

This item has no description.

Source: castlescript/castlecurves.pas (line 54).

Public function PointOfSegment(const i, Segments: Cardinal): TVector3;

Curve function to work with rendered line segments begin/end points. This is simply a more specialized version of Point, it scales the argument such that you get Point(TBegin) for I = 0 and you get Point(TEnd) for I = Segments.

Source: castlescript/castlecurves.pas (line 60).

Public class function LoadFromFile(const Url: String): TCurve;

Load the first curve defined in given XML file. Hint: use https://castle-engine.io/curves_tool to design curves visually.

Source: castlescript/castlecurves.pas (line 65).

Public function BoundingBox: TBox3D; virtual; abstract;

This item has no description.

Source: castlescript/castlecurves.pas (line 67).

Public function GeometryNode(const Segments: Cardinal = DefaultSegments): TAbstractGeometryNode;

Represent this curve as an X3D geometry node, that you can use to visualize this.

Source: castlescript/castlecurves.pas (line 71).

Protected procedure LoadFromElement(const E: TDOMElement); override;

This item has no description.

Source: castlescript/castlecurves.pas (line 161).

Protected procedure SaveToStream(const Stream: TStream); override;

This item has no description.

Source: castlescript/castlecurves.pas (line 162).

Public function BoundingBox: TBox3D; override;

Bounding box of the curve. In this class, it is simply a BoundingBox of ControlPoints.

Source: castlescript/castlecurves.pas (line 168).

Public procedure UpdateControlPoints; virtual;

Always after changing ControlPoints or TBegin or TEnd and before calling Point (or anything that uses Point, like BoundingBox) call this method. It recalculates necessary things. ControlPoints.Count must be >= 2.

When overriding: always call inherited first.

Source: castlescript/castlecurves.pas (line 176).

Public constructor Create;

Constructor.

Source: castlescript/castlecurves.pas (line 179).

Public constructor CreateFromEquation(CasScriptCurve: TCasScriptCurve; ControlPointsCount: Cardinal);

Calculate initial control points by sampling given TCasScriptCurve, with analytical curve equation. TBegin and TEnd are copied from CasScriptCurve.

Source: castlescript/castlecurves.pas (line 184).

Public destructor Destroy; override;

This item has no description.

Source: castlescript/castlecurves.pas (line 187).

Public function ConvexHull: TVector3List;

Calculate the convex hull. Caller is responsible for freeing the result.

Source: castlescript/castlecurves.pas (line 190).

Public constructor Create;

This item has no description.

Source: castlescript/castlecurves.pas (line 224).

Public destructor Destroy; override;

This item has no description.

Source: castlescript/castlecurves.pas (line 225).

Public procedure UpdateControlPoints; override;

This item has no description. Showing description inherited from TControlPointsCurve.UpdateControlPoints.

Always after changing ControlPoints or TBegin or TEnd and before calling Point (or anything that uses Point, like BoundingBox) call this method. It recalculates necessary things. ControlPoints.Count must be >= 2.

When overriding: always call inherited first.

Source: castlescript/castlecurves.pas (line 226).

Public function Point(const t: Float): TVector3; override;

This item has no description. Showing description inherited from TCurve.Point.

Curve function, for each parameter value determine the 3D point. This determines the actual shape of the curve. This is the simplest approach to calculate points on a curve.

Source: castlescript/castlecurves.pas (line 227).

Public function BoundingBox: TBox3D; override;

This item has no description. Showing description inherited from TControlPointsCurve.BoundingBox.

Bounding box of the curve. In this class, it is simply a BoundingBox of ControlPoints.

Source: castlescript/castlecurves.pas (line 228).

Properties

Public property TBegin: Single read FTBegin write FTBegin default 0;

The valid range of curve function argument. Must be TBegin <= TEnd.

Source: castlescript/castlecurves.pas (line 46).

Public property TEnd: Single read FTEnd write FTEnd default 1;

This item has no description.

Source: castlescript/castlecurves.pas (line 47).


Generated by PasDoc 0.17.0.snapshot.