Get y from x on the cardinal spline curve

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

Discussion Overview

The discussion revolves around finding the y-value on a cardinal spline curve for a given x-value. Participants explore methods to determine the point of intersection along the spline, focusing on the mathematical formulation and computational techniques involved in solving the problem.

Discussion Character

  • Technical explanation
  • Mathematical reasoning
  • Exploratory

Main Points Raised

  • One participant describes their implementation of a cardinal spline and seeks to find the y-value for a specific x-value along the curve.
  • Another participant suggests finding the parameter t that corresponds to the desired x-value, noting that this involves solving a cubic equation which may have multiple solutions.
  • A participant shares their formula for the spline and mentions that their calculated points are approximate, expressing a need for a method to find the exact position on the curve.
  • There is a question about the definition and role of the variable "s" in the spline calculations, with a request for clarification on its origin.
  • One participant provides a code snippet illustrating their approach to calculate points on the spline, but indicates that the results are not exact and seeks further assistance.
  • A later post indicates that one participant has resolved their issue, but does not elaborate on the solution.

Areas of Agreement / Disagreement

The discussion contains multiple viewpoints on how to approach the problem, with no consensus on a single method for obtaining the exact y-value from the given x-value. Participants express uncertainty regarding the cubic equation's solutions and the implications of their calculations.

Contextual Notes

Participants mention the need to solve a cubic equation and the challenges associated with parametric equations, indicating that the problem may depend on specific assumptions about the spline's parameters and control points.

mishalkk
Messages
4
Reaction score
0
Hi,

I have implemented the cardinal spline curve. ref link:- http://www.ibiblio.org/e-notes/Splines/Cardinal.htm

My requirement is to get the Y Value along the spline curve for a given x.Please look at the image attached below.

Here P1,P2,P3,P4 are my Points and cardinal spline passes through these points. But how can I find the point along the curve whose x-value is given.How can I find out the point of intersection?

2v01mbn.jpg
 
Physics news on Phys.org
What you need to do is find the value of t (or whatever your parameter is called) that produces the desired value of x (1.5 in your case). Should be close to 0.5 if you are using parameter range of 0 to 1 and the plot is to scale. Once you know t you can calculate the corresponding value of y. In this case, you have to solve a cubic, which in general can have 3 values of t that produce the same x. In your case, the function is very normal looking, so you would only have 1 real solution. As far as I know, there are basically two choices, (1) solve the cubic algebraically (internet search will help find the formula) or (2) use a numerical method such as Newton-Raphson or subdivision. Thus is the challenge when using parametric equations.
 
Last edited:
Thank you .I have followed the above method.

Formula : P(t) = s(-t3 + 2t2 – t)P1 + s(-t3 + t2)P2 + (2t3 – 3t2 + 1)P2 + s(t3 – 2t2 + t)P3 + (-2t3 + 3t2)P3 + s(t3 – t2)P4

where P is the point on the curve,P1,P2,P3,P4 are the actual points, s is the tanget and it is inversely proportional to t. and t is the tension. I calculate P(t)x and P(t)y co ordinates for the t varying from 0 to 1.

But these points are approximate. Not exact. I need to get the exact position on the curve.

Can anyone suggest me any methods with which I can find the point on the curve?

Or how the points are drawn using the actual points and control points?

Thank you
 
Hi mishalkk! :smile:

I'm not sure where your "s" comes from.
I don't see it in your reference.
Is it simply s=1/t?

Either way, you should have a parametric curve P(t) consisting of P(t)x and P(t)y.
Solve P(t)x=1.5 to find t, and substitute in P(t)y, as hotvette said.

The difficulty of course is to solve P(t)x=1.5 for which you need to solve a cubic equation.
Do you need help with that?
 
Hi,

Thank you for your reply :)
http://algorithmist.wordpress.com/2009/09/28/cardinal-splines-part-2/

Cardinal splines specify the tangents at interior points based on the vector from previous point to subsequent point. Each tangent is parallel to this vector and some multiple of its length. For example, the tangent direction at point P1 is parallel to the vector P2 – P0, or we could simply write something like T1 = s(P2 – P0) where s is a real number.

Here is the pat of the code.
xtarget is the input value X, here in my case 1.5

Code:
 for (Double t = 0; t<=1; t += 0.01)
  {
      s = (1 - t) / 2;
P(t)x = s(-t3 + 2t2 – t)P1X + s(-t3 + t2)P2X + (2t3 – 3t2 + 1)P2X + s(t3 – 2t2 + t)P3X + (-2t3 + 3t2)P3X + s(t3 – t2)P4X

P(t)y = s(-t3 + 2t2 – t)P1Y + s(-t3 + t2)P2Y + (2t3 – 3t2 + 1)P2Y + s(t3 – 2t2 + t)P3Y+ (-2t3 + 3t2)P3Y + s(t3 – t2)P4Y

if(P(t)x=>xtarget)
{
return P(t)y;
}
-----------------
I get P(t)y which is approximate. But it is not the exact point on the curve(sometimes it is not on the curve). I need to get the exact points on the curve..ie P(t)y which is exactly on the curve.Any help is appreciated.

Thank you :)
 
I got it :)
 

Similar threads

  • · Replies 10 ·
Replies
10
Views
2K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 7 ·
Replies
7
Views
3K
  • · Replies 2 ·
Replies
2
Views
1K