Class TControlPointsCurve

DescriptionHierarchyFieldsMethodsProperties

Unit

Declaration

type TControlPointsCurve = class(TCurve)

Description

A basic abstract class for curves determined my some set of ControlPoints. Note: it is not defined in this class any correspondence between values of T (argument for Point function) and ControlPoints.

Hierarchy

Overview

Fields

Public ControlPoints: TVector3SingleList;

Methods

Protected function CreateConvexHullPoints: TVector3SingleList; virtual;
Protected procedure DestroyConvexHullPoints(Points: TVector3SingleList); virtual;
Public procedure RenderControlPoints;
Public function BoundingBox: TBox3D; override;
Public procedure UpdateControlPoints; virtual;
Public class function NiceClassName: string; virtual; abstract;
Public procedure RenderConvexHull;
Public constructor Create(AOwner: TComponent); override;
Public constructor CreateDivideCasScriptCurve(CasScriptCurve: TCasScriptCurve; ControlPointsCount: Cardinal);
Public destructor Destroy; override;

Properties

Public property ControlPointsColor: TCastleColor read FControlPointsColor write FControlPointsColor;
Public property ConvexHullColor: TCastleColor read FConvexHullColor write FConvexHullColor;

Description

Fields

Public ControlPoints: TVector3SingleList;
 

Methods

Protected function CreateConvexHullPoints: TVector3SingleList; virtual;

Using these function you can control how Convex Hull (for RenderConvexHull) is calculated: CreateConvexHullPoints should return points that must be in convex hull (we will run ConvexHull function on those points), DestroyConvexHullPoints should finalize them.

This way you can create new object in CreateConvexHullPoints and free it in DestroyConvexHullPoints, but you can also give in CreateConvexHullPoints reference to some already existing object and do nothing in DestroyConvexHullPoints. (we will not modify object given as CreateConvexHullPoints in any way)

Default implementation in this class returns ControlPoints as CreateConvexHullPoints. (and does nothing in DestroyConvexHullPoints)

Protected procedure DestroyConvexHullPoints(Points: TVector3SingleList); virtual;
 
Public procedure RenderControlPoints;

Render control points, using ControlPointsColor.

Public function BoundingBox: TBox3D; override;

This class provides implementation for BoundingBox: it is simply a BoundingBox of ControlPoints. Subclasses may (but don't have to) override this to calculate better (more accurate) BoundingBox.

Public procedure UpdateControlPoints; virtual;

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

When overriding: always call inherited first.

Public class function NiceClassName: string; virtual; abstract;

Nice class name, with spaces, starts with a capital letter. Much better than ClassName. Especially under FPC 1.0.x where ClassName is always uppercased.

Public procedure RenderConvexHull;

Render convex hull polygon, using ConvexHullColor. Ignores Z-coord of ControlPoints.

Public constructor Create(AOwner: TComponent); override;

Constructor. It has to be virtual because it's called by CreateDivideCasScriptCurve.

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

Calculates ControlPoints taking Point(i, ControlPointsCount-1) for i in [0 .. ControlPointsCount-1] from CasScriptCurve. TBegin and TEnd are copied from CasScriptCurve.

Public destructor Destroy; override;
 

Properties

Public property ControlPointsColor: TCastleColor read FControlPointsColor write FControlPointsColor;
 
Public property ConvexHullColor: TCastleColor read FConvexHullColor write FConvexHullColor;
 

Generated by PasDoc 0.14.0.