C# Class Nez.Splines.Bezier

cubic and quadratic bezier helper
Datei anzeigen Open project: prime31/Nez Class Usage Examples

Public Methods

Method Description
getFirstDerivative ( Vector2 start, Vector2 firstControlPoint, Vector2 secondControlPoint, Vector2 end, float t ) : Vector2

gets the first derivative for a cubic bezier

getFirstDerivative ( Vector2 p0, Vector2 p1, Vector2 p2, float t ) : Vector2

gets the first derivative for a quadratic bezier

getOptimizedDrawingPoints ( Vector2 start, Vector2 firstCtrlPoint, Vector2 secondCtrlPoint, Vector2 end, float distanceTolerance = 1f ) : List

recursively subdivides a bezier curve until distanceTolerance is met. Flat sections will have less points then curved with this algorithm. Returns a pooled list that should be returned to the ListPool when done.

getPoint ( Vector2 start, Vector2 firstControlPoint, Vector2 secondControlPoint, Vector2 end, float t ) : Vector2

evaluate a cubic bezier

getPoint ( Vector2 p0, Vector2 p1, Vector2 p2, float t ) : Vector2

evaluate quadratic bezier

Private Methods

Method Description
recursiveGetOptimizedDrawingPoints ( Vector2 start, Vector2 firstCtrlPoint, Vector2 secondCtrlPoint, Vector2 end, List points, float distanceTolerance ) : void

recursively subdivides a bezier curve until distanceTolerance is met. Flat sections will have less points then curved with this algorithm. This image defines the midpoints calculated and makes the variable names sensical: http://www.antigrain.com/research/adaptive_bezier/bezier09.gif based on http://www.antigrain.com/research/adaptive_bezier/index.html

Method Details

getFirstDerivative() public static method

gets the first derivative for a cubic bezier
public static getFirstDerivative ( Vector2 start, Vector2 firstControlPoint, Vector2 secondControlPoint, Vector2 end, float t ) : Vector2
start Microsoft.Xna.Framework.Vector2 P0.
firstControlPoint Microsoft.Xna.Framework.Vector2 P1.
secondControlPoint Microsoft.Xna.Framework.Vector2 P2.
end Microsoft.Xna.Framework.Vector2 P3.
t float T.
return Microsoft.Xna.Framework.Vector2

getFirstDerivative() public static method

gets the first derivative for a quadratic bezier
public static getFirstDerivative ( Vector2 p0, Vector2 p1, Vector2 p2, float t ) : Vector2
p0 Microsoft.Xna.Framework.Vector2 P0.
p1 Microsoft.Xna.Framework.Vector2 P1.
p2 Microsoft.Xna.Framework.Vector2 P2.
t float T.
return Microsoft.Xna.Framework.Vector2

getOptimizedDrawingPoints() public static method

recursively subdivides a bezier curve until distanceTolerance is met. Flat sections will have less points then curved with this algorithm. Returns a pooled list that should be returned to the ListPool when done.
public static getOptimizedDrawingPoints ( Vector2 start, Vector2 firstCtrlPoint, Vector2 secondCtrlPoint, Vector2 end, float distanceTolerance = 1f ) : List
start Microsoft.Xna.Framework.Vector2 Start.
firstCtrlPoint Microsoft.Xna.Framework.Vector2 First ctrl point.
secondCtrlPoint Microsoft.Xna.Framework.Vector2 Second ctrl point.
end Microsoft.Xna.Framework.Vector2 End.
distanceTolerance float Distance tolerance.
return List

getPoint() public static method

evaluate a cubic bezier
public static getPoint ( Vector2 start, Vector2 firstControlPoint, Vector2 secondControlPoint, Vector2 end, float t ) : Vector2
start Microsoft.Xna.Framework.Vector2 P0.
firstControlPoint Microsoft.Xna.Framework.Vector2 P1.
secondControlPoint Microsoft.Xna.Framework.Vector2 P2.
end Microsoft.Xna.Framework.Vector2 P3.
t float T.
return Microsoft.Xna.Framework.Vector2

getPoint() public static method

evaluate quadratic bezier
public static getPoint ( Vector2 p0, Vector2 p1, Vector2 p2, float t ) : Vector2
p0 Microsoft.Xna.Framework.Vector2 P0.
p1 Microsoft.Xna.Framework.Vector2 P1.
p2 Microsoft.Xna.Framework.Vector2 P2.
t float T.
return Microsoft.Xna.Framework.Vector2