Can y(x) be Calculated from a Cubic Bezier Curve?

  • Context: Undergrad 
  • Thread starter Thread starter tuoni
  • Start date Start date
  • Tags Tags
    Curve
Click For Summary
SUMMARY

This discussion centers on the challenge of calculating y as a function of x from a cubic Bezier curve defined by the equation B(t) = (1-t)³P₀ + 3(1-t)²P₁ + 3(1-t)P₂ + t³P₃. The user seeks a method to convert the Bezier representation into the form y = f(x), which is complex due to the cubic nature of the relationship. While direct rearrangement is impractical, the conversation suggests that stepping through t in small increments is a current workaround. An alternative approach mentioned is the use of standard cubic splines for data interpolation, which may provide a more accurate solution for modeling drag constant curves.

PREREQUISITES
  • Understanding of cubic Bezier curves and their mathematical representation
  • Familiarity with parametric equations and their conversion
  • Knowledge of numerical methods for interpolation
  • Experience with regression analysis and curve fitting techniques
NEXT STEPS
  • Research methods for converting parametric equations to explicit forms, specifically y = f(x)
  • Explore numerical techniques for root-finding in cubic equations
  • Learn about standard cubic splines for data interpolation
  • Investigate advanced regression techniques for better curve fitting
USEFUL FOR

Mathematicians, computer graphics developers, and engineers involved in modeling complex curves, particularly those utilizing Bezier curves for applications such as drag coefficient modeling.

tuoni
Messages
55
Reaction score
0
Is it possible to from a cubic Bezier curve (B) first calculate t as a function of x, and then y as a function of t?

I am currently using:

B(t) = (1-t)^{3} \cdot P_{0} + 3(1-t)^{2} \cdot P_{1} + 3(1-t)^{2} \cdot P_{2} + t^{3}P_{3}

; which works just fine to model several curves I need to use in my calculations, however, I would need to be able to calculate y as a function of x, as opposed to B as a function of t.

Is it possible? Simple rearranging doesn't seem to be possible.
 
Mathematics news on Phys.org
If I understand correctly, you want to convert a cubic bezier to the form y = f(x). I'm curious as to what situation you have that you'd want to do this. The beauty of bezier curves is that they can easily describe complicated shapes that can't readily be done with functions of the form y = f(x).

Conversion could potentially be done, but things get messy real fast since with bezier curves x is in general a cubic function in t. If the curve is a degernate one where x is a linear function of t, the conversion is straightforward.
 
At the moment I have to step through t in small increments until I find the x value I want, and then get the y value. I was just wondering whether there was a quicker and more accurate way of doing this.
 
tuoni said:
At the moment I have to step through t in small increments until I find the x value I want, and then get the y value

Tell us a little more about what you are doing. Maybe there is a different approach.
 
I am using Bezier curves to model drag constant curves.

http://enes.fi/temp/kdrag.png

Previously I divided the curve into smaller segments, then for each segment plotted a regression curve using the power function: ak^b (k is the Mach constant). The regression curves were sometimes poor approximations, so I looked for better alternatives.
 
Last edited by a moderator:
Is data interpolation the ultimate objective? If so, I'd try standard cubic splines.
 

Similar threads

Replies
6
Views
2K
  • · Replies 18 ·
Replies
18
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 11 ·
Replies
11
Views
2K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 2 ·
Replies
2
Views
4K
  • · Replies 8 ·
Replies
8
Views
4K
  • · Replies 1 ·
Replies
1
Views
4K
  • · Replies 18 ·
Replies
18
Views
4K
  • · Replies 2 ·
Replies
2
Views
2K