Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static List<Vector2> generateBeizerCurve(float start, float end, Vector2 left, Vector2 right, Vector2 p1, Vector2 p2, Vector2 p3, float resolution) {
- float middle = start + (end - start) / 2;
- Vector2 middleVector = left + (right - left) / 2;
- Vector2 beizerCurve = calculateBeizerCurve(middle, p1, p2, p3);
- float difference = (beizerCurve - middleVector).magnitude;
- if (difference > resolution) {
- List<Vector2> points = new List<Vector2>();
- List<Vector2> leftPoints = generateBeizerCurve(start , middle, left , beizerCurve, p1, p2, p3, resolution);
- List<Vector2> rightPoints = generateBeizerCurve(middle, end , beizerCurve, right , p1, p2, p3, resolution);
- if (leftPoints != null)
- points.AddRange(leftPoints);
- points.Add(beizerCurve);
- if (rightPoints != null)
- points.AddRange(rightPoints);
- return points;
- }
- return null;
- }
- public static Vector2 calculateBeizerCurve(float t, Vector2 p1, Vector2 p2, Vector2 p3) {
- return (1 - t) * (1 - t) * p1 + 2 * (1 - t) * t * p2 + t * t * p3;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement