Object TRationalQuadraticBezierCurve
Unit
Declaration
type TRationalQuadraticBezierCurve = object(TObject)
Description
Quasi-standard rational quadratic Bezier curve. It has one control point c with a weight. To transform a rational quadratic Bezier curve with an affin transformation, you only have to transform the three points and leave the weight as it is.
Hierarchy
- TObject
- TRationalQuadraticBezierCurve
Overview
Fields
c: TPointF; |
|
p1: TPointF; |
|
p2: TPointF; |
|
weight: single; |
Methods
function ComputeLength(AAcceptedDeviation: single = 0.1): single; |
|
function ComputePointAt(t: single): TPointF; |
|
function GetBounds: TRectF; |
|
function ToPoints(AInfiniteBounds: TRectF; AAcceptedDeviation: single = 0.1; AIncludeFirstPoint: boolean = true): ArrayOfTPointF; overload; |
|
function ToPoints(AAcceptedDeviation: single = 0.1; AIncludeFirstPoint: boolean = true): ArrayOfTPointF; overload; |
|
procedure Split(out ALeft, ARight: TRationalQuadraticBezierCurve); |
Properties
property IsInfinite: boolean read GetIsInfinite; |
Description
Fields
c: TPointF; |
|
Control point |
p1: TPointF; |
|
Starting point |
p2: TPointF; |
|
End point |
weight: single; |
|
A negative
|
Methods
function ComputeLength(AAcceptedDeviation: single = 0.1): single; |
|
Compute the length of the curve |
function ComputePointAt(t: single): TPointF; |
|
Compute a point at the specified time (t in [0; 1]). The curve is defined by: p = ((1-t)ˆ2 * p1 + 2 * t * (1-t) * weight * c + tˆ2*p2) / (1-t)ˆ2 + 2 * t * (1-t) * weight + tˆ2) |
function GetBounds: TRectF; |
|
Compute the rectangular bounds of the curve |
function ToPoints(AInfiniteBounds: TRectF; AAcceptedDeviation: single = 0.1; AIncludeFirstPoint: boolean = true): ArrayOfTPointF; overload; |
|
Computes the points of the curve by providing where the infinite curve can stop. |
function ToPoints(AAcceptedDeviation: single = 0.1; AIncludeFirstPoint: boolean = true): ArrayOfTPointF; overload; |
|
Computes the points of the curve |
procedure Split(out ALeft, ARight: TRationalQuadraticBezierCurve); |
|
|
Properties
property IsInfinite: boolean read GetIsInfinite; |
|
Is the curve infinitely long |