I Acceleration through curved paths

  • I
  • Thread starter Thread starter Cato11
  • Start date Start date
  • Tags Tags
    Acceleration
AI Thread Summary
The discussion revolves around calculating the motion of an object that transitions from linear velocity to a curved path while uniformly accelerating. The user seeks advice on how to create a smooth path using Bezier curves but struggles with incorporating acceleration into the motion. Key points include the need for centripetal and tangential accelerations, as well as the challenge of defining specific radii (R1, R2, R3) for the arcs. Suggestions include finding the path equation, differentiating it, and using the work-energy theorem to determine the required tangential acceleration. The conversation emphasizes the importance of a smooth transition between points to avoid abrupt changes in direction.
Cato11
Messages
46
Reaction score
11
I would really appreciate some help with a challenge I have. It is illustrated in the figure below:

Complex Motion.png

Scenario: The moving object moves with linear velocity until it reaches P1. When it reaches P1, I need to create the motion of the blue dashed path. Whilst the object follows the blue dashed path, it needs to uniformly accelerate from Velocity(start) to Velocity(end).

The following pieces of information are known:
  • Velocity (start), e.g. 5 m/s
  • Velocity (end), e.g. 10 m/s
  • The locations of the four points P1 - P4
  • The location of the centre of the circle
Can anyone please advise how I should go about calculating this path and how to perform the uniform acceleration? Clearly the linear acceleration equations do not apply here since it is not a straight line, but I am not sure how to make use of the angular accelerations since the object is not following a circular orbit.

What I have already tried:
  • Separating the path into three separate arcs using bezier curves. This has been partially successful - I can approximate the path but with constant speed. I do not understand how to achieve acceleration through the curves. Also, the bezier method uses additional control points to approximate the arcs; it would be better if I could define the R1-3 values and somehow achieve precisely that motion, but I do not know how to do this.
For some extra context, I am tackling this in software to create actual motion. It is not a homework assignment on paper etc. Any help or advice would be greatly appreciated!

Note: The figure is merely a sketch and thus the curving of the arcs is a rough approximation. In reality, the arcs should connect with a more natural curvature, without the abrubt changes in direction.
 
Last edited:
Physics news on Phys.org
You will need to know the value of the radius of the circle, plus R1, R2 and R3.
You will have centripetal and tangential accelerations along that blue path.
 
Lnewqban said:
You will need to know the value of the radius of the circle, plus R1, R2 and R3.
You will have centripetal and tangential accelerations along that blue path.
I do know the radius since I know the centre of the circle and the four points.

Knowing R1,R2,R3 is a bit more difficult. Since I am using Bezier curves, I am placing an additional control point for each arc some distance away to approximate the shape of the arcs and therefore R1,R2,R3. So these values are not actually known until the motion takes place. Perhaps using Bezier curves is a bad way of doing it? Ideally I would be able define the R1-3 values and then create the motion for those values specifically, but I know of no way to achieve this.

Do you know if there is a better way for creating the motion? And even if this was not an issue, which equations would adequately describe the accelerations you mention.
 
The problem is not specific about the points of inflection, but at least P2 and P3 should not have the abrupt changes of direction shown in the picture.
If so, those points should be contained in a straight line that connects the centers of two contiguos semicircles.
 
Lnewqban said:
The problem is not specific about the points of inflection, but at least P2 and P3 should not have the abrupt changes of direction shown in the picture.
If so, those points should be contained in a straight line that connects the centers of two contiguos semicircles.
You are absolutely right regarding the abrubtness of the changes in direction. The diagram is simply an approximate sketch and poor drawing on my part. In reality, the arcs should smoothly connect for a more natural curvature. I will update the OP.

That being said, do you have any comments on how to tackle the challenge?
 
I would resolve it geometrically.
Perhaps other members could offer a mathematical approach pretty soon.
Is this for a computer simulation?
 
Cato11 said:
That being said, do you have any comments on how to tackle the challenge?
1. Find the equation of the path you want.
2. Differentiate it twice.

Uniform acceleration will not give you what you want. It's outward at R1 and inward at R2.
 
  • Like
Likes PeroK
Cato11 said:
Scenario: The moving object moves with linear velocity until it reaches P1. When it reaches P1, I need to create the motion of the blue dashed path. Whilst the object follows the blue dashed path, it needs to uniformly accelerate from Velocity(start) to Velocity(end).

As @Vanadium 50 suggests, a "uniform acceleration" vector does not apply since the directions are changing.
However, one can have the speed vary uniformly, as a function of time. So, the velocity vector is tangent to the path, but its magnitude grows at a constant rate as a function of time.

So, as @Vanadium 50 says, first find the equation that describes the path.
 
robphy said:
As @Vanadium 50 suggests, a "uniform acceleration" vector does not apply since the directions are changing.
However, one can have the speed vary uniformly, as a function of time. So, the velocity vector is tangent to the path, but its magnitude grows at a constant rate as a function of time.

So, as @Vanadium 50 says, first find the equation that describes the path.

Yes you are both right, what I meant by uniform acceleration was ramping the velocity at a uniform rate, as a function of time. So the moving body starts P1 at Vstart and hits P4 at Vend.

I'm sorry if this is an elementary question but how should I go about finding the equation of the path? I assume it involves finding the angles of the various arcs?

@Lnewqban Yes it is for simulating motion in a 3D environment. A 2D co-ordinate system is fine though as the motion is viewed from top down and the vertical axis is frozen.
 
  • Like
Likes Lnewqban
  • #10
Technically, you want to ramp the tangential-component-of-the-velocity[-vector].

You mentioned that you wanted a smooth transition at P_1, P_2, etc...

It seems that a sequence of your Bezier curves could do that.

Is this a planar path that cuts through points on a circle?
 
  • #11
Is gravity involved at any point here? The circle isn't any kind of celestial body, is it?
 
  • #12
Gravity alone won't do this. (Of course if you are free to add another arbitrary force, you are free to add gravity too. It's just an unnecessary complication. Adding other bodies makes this even more complicated and constrained)

But...

If you want epicylcles, write down equations for epicycles and differentiate twice. If you don't like the acceleration that comes out, isn't that the fault of the problem?
 
  • #13
Cato11 said:
the equation of the path
Any smooth path from starting point to ending point will do.

With the path in hand you can consider its length and the egress energy to determine the required (constantly increasing) tangential acceleration to do that much work over that much tangential displacement.

With the path and the tangential acceleration in hand, you can determine position versus time and recover the required tangential acceleration as well.
 
  • Like
Likes Cato11
  • #14
Thank you everyone for the replies, I appreciate it.

@robphy As mentioned the bezier curves do allow a pretty good approximation. Here is a demo of my code running a bezier curve. It joins two discrete arcs to create a fairly smooth curving motion (it is not the same path as the OP but it illustrates the point of being able to create a curved motion):

Motion.gif


Essentially I compute a position using the formula:

pos =
oneMinusT * oneMinusT * p0 +
2f * oneMinusT * t * p1 +
t * t * p2;

where t is the elapsed time. However as mentioned, the speed is constant and I do not know how to get the yellow dot to accelerate between a "start" and "end" velocity as it performs the motion. Perhaps I need to find the second derivative of the above formula? I am simply not sure how I can create the ramp in a controlled manner. The other problem with the Bezier method is I cannot define the R1-3 values, since Bezier curves rely on additional control points to approximate the path. Ideally if I could create a precise path with my own R1-3 values that would be ideal.

@DaveC426913 No, gravity is not involved. We can consider this as a weightless object in free space, so that should hopefully simplify matters.

@Vanadium 50 I was not aware of epicycles so thanks for suggesting that. If it is a circular motion then I'm not sure it will help but after searching it, it looks like it deals with swirling paths so I shall try to investigate this a bit further. To be honest my calculus is a bit rusty!

@jbriggs444 I'm sorry but what you said went right over my head! Are there any equations that you can post to substantiate this? I think I get the gist of what you mean but I am not sure how to execute it in practice.
 
  • Love
Likes PhDeezNutz
  • #15
Cato11 said:
I'm sorry but what you said went right over my head! Are there any equations that you can post to substantiate this? I think I get the gist of what you mean but I am not sure how to execute it in practice.
I apologize. The relevant ideas are straightforward, but rely on concepts from vector calculus.

Consider an object on a defined path. A locomotive on a railroad track. A bead on a wire. A car on a highway. A bullet in a rifle barrel. Even a parcel of water in a garden hose.

We can ignore the curves that the path makes and consider only motion along the path. Position along the path. Velocity along the path. Acceleration along the path. Everything reduces to a one-dimensional problem.

If you know the energy with which the object enters the path (##E_1=\frac{1}{2}mv_0^2##) and the energy with which it leaves the path (##E_4=\frac{1}{2}mv_4^2##) then you know that the work done along the path is equal to the change in energy. That is the work-energy theorem. Or conservation of energy. Whichever way you like to think about it.

The work done along the path is the "path integral" of instantaneous force applied multiplied by incremental distance moved: ##W=\int_S \vec{F} \cdot \vec{ds}##.

Looking back at the original post, you want a constant tangential acceleration from one end of the path to the other. That means that F is a constant. So that means that the above integral simplifies to ##W=F \times L## where L is the length of your chosen path.

That means that position (along the path) will come from your first year SUVAT equations: ##s=v_0t +\frac{1}{2}at^2##
 
Last edited:
  • Like
Likes Cato11 and Lnewqban
  • #18
@jbriggs444 Thank you so much for taking the time to explain that. I did not know that we could reduce this to a one-dimensional problem using the SUVAT equations. That is quite a revelation! So effectively I need to find the path length 's', and solve your last equation for 'a' where V0 is the initial velocity and 't' is the time taken travel the entire path. This will give me the rate of constant acceleration. Have I got that right?

@robphy and @A.T. Thank you for sharing the link, approximating the length of the curve was going to be my next issue so that link helps a lot!

I will attempt to make some progress on this when I get home and report back the results. Thanks again for the help!
 
  • #19
Cato11 said:
@Lnewqban Yes it is for simulating motion in a 3D environment. A 2D co-ordinate system is fine though as the motion is viewed from top down and the vertical axis is frozen.
I have no idea about how the magic of animation is achieved.
Could you make your input equations work by using simple circles and polar coordinates in this problem?
Must the moving object hit point P1 perpendicularly respect to the circle?
Could R1, R2 and R3 be the radii of the circular paths rather than the distance to the big circle?
 
  • #20
Cato11 said:
@jbriggs444 Thank you so much for taking the time to explain that. I did not know that we could reduce this to a one-dimensional problem using the SUVAT equations. That is quite a revelation! So effectively I need to find the path length 's', and solve your last equation for 'a' where V0 is the initial velocity and 't' is the time taken travel the entire path. This will give me the rate of constant acceleration. Have I got that right?
You would solve for acceleration ##a## based on ##v_4^2-v_0^2=2as##. That particular SUVAT equation is one that I never bother memorizing because I always think about it in terms of work and energy ##\frac{1}{2}mv_4^2-\frac{1}{2}mv_0^2=Fs## (divide out ##\frac{1}{2}m## and *voila*).

With the acceleration in hand then you can then solve for ##t## using the other equation.

Alternately, you could realize that because acceleration is constant, average velocity is the mean of initial velocity and final velocity. So ##v_\text{avg} = \frac{v_0+v_4}{2}## and ##t=\frac{s}{v_\text{avg}}##. Then with ##t## in hand you can solve for ##a##.

As long as what you are concerned with is tangential acceleration then the one dimensional approach is fine.

If, instead, you want to keep the magnitude of total acceleration (radial and tangential combined) constant then the problem becomes much more difficult.
 
Last edited:
  • Like
Likes Cato11
  • #21
robphy said:
Possibly enlightening...
https://pomax.github.io/bezierinfo/
Also possibly enlightening
https://math.stackexchange.com/ques...ath-and-minimum-curvature-path-implementation
which links to https://www.sciencedirect.com/science/article/pii/S0045794908000163?via=ihub
and has a screenshot of a section at

https://en.wikipedia.org/wiki/Dubins_path

Once you construct the path you wish, then you can implement the ideas mentioned before by others:
you have a 1-D constant acceleration problem along the arc-length of the path.

It may be useful to parametrize your path by a parameter T which is 0 at P1 and 1 at P4.

(I was trying to implement your path in #14 in Desmos... but didn't have time to debug the error in my attempt.)
 
  • Like
Likes Cato11
  • #22
As I understand your problem, you are looking to solve for motion with a constraint like ##|\dot{\vec{r}}|=bt+c##.

You could take a polar parametrization like ##r(t)=R_0(1+d\sin{\theta(t)})##, substitute it into the polar form of the constraint, ##|\dot{\vec{r}}|=\sqrt{\dot{r}(t)^2+r^2\dot{\theta}(t)^2}=bt+c##, and then, probably numerically, integrate for ##\theta(t)##.
 
  • #23
Why do you want this?
 
  • #24
Cato11 said:
I would really appreciate some help with a challenge I have. It is illustrated in the figure below:

View attachment 290622
Scenario: The moving object moves with linear velocity until it reaches P1. When it reaches P1, I need to create the motion of the blue dashed path. Whilst the object follows the blue dashed path, it needs to uniformly accelerate from Velocity(start) to Velocity(end).

The following pieces of information are known:
  • Velocity (start), e.g. 5 m/s
  • Velocity (end), e.g. 10 m/s
  • The locations of the four points P1 - P4
  • The location of the centre of the circle
Can anyone please advise how I should go about calculating this path and how to perform the uniform acceleration? Clearly the linear acceleration equations do not apply here since it is not a straight line, but I am not sure how to make use of the angular accelerations since the object is not following a circular orbit.

What I have already tried:
  • Separating the path into three separate arcs using bezier curves. This has been partially successful - I can approximate the path but with constant speed. I do not understand how to achieve acceleration through the curves. Also, the bezier method uses additional control points to approximate the arcs; it would be better if I could define the R1-3 values and somehow achieve precisely that motion, but I do not know how to do this.
For some extra context, I am tackling this in software to create actual motion. It is not a homework assignment on paper etc. Any help or advice would be greatly appreciated!

Note: The figure is merely a sketch and thus the curving of the arcs is a rough approximation. In reality, the arcs should connect with a more natural curvature, without the abrubt changes in direction.
Sorry to come in so late BUT.,
It looks like the incoming path is meeting the circle (at P1) along a normal (perpendicular to the tangent).
Is that true, and is that also true for P2 , P3 and P4?
If that is true, the centre of each blue arc is at the intersection of tangents drawn at P1 & P2, P2 & P3 and P3 & P4.Is P4 intended to be opposite P1 (on opposite ends of a diametre)?
If so, are P1, P2, P3 and P4 intended to be 1/3 of a circle away from each other?

If all that is true, I think the length of the dotted blue line is 8.(sqrt3).pi,R/9 where R is the Radius of the black circle. (4 times the first dotted blue arc).

Is the dotted blue line in my graphic the sort of path you were after?
Circulsr paths.jpg


Peter
 
Last edited:
  • Like
Likes Cato11 and Lnewqban
  • #25
@jbriggs444 (#20) Thank you for the extra clarification!

@robphy (#21) I think what you mention is the real key here. I need to reparametrize the path with a new T between 0 and 1. I have found quite a lot of discussion on arc length parametrization. I spent about 6 hours on it yesterday without much progress (argh!). I will keep working on it and hopefully post the results back here soon.

@PeterO Yes you are correct about the P1 and P4 being 180 degrees apart. It looks like your path is the Dubins Path method someone else mentioned here earlier. The curvature of this path is not exactly what I was after, as the bulge of the centre circle is beyond what I was looking for. I think the bezier curve method works best, if I can only figure out how to properly reparametrize the spline (three separate arc curves joined together). Thank you for the suggestion though.

Thanks again to everyone who is offering their advice. My progress is slow but I will keep chipping away. I hope to post a full solution here soon.
 
  • #26
Cato11 said:
@jbriggs444 (#20) Thank you for the extra clarification!

@robphy (#21) I think what you mention is the real key here. I need to reparametrize the path with a new T between 0 and 1. I have found quite a lot of discussion on arc length parametrization. I spent about 6 hours on it yesterday without much progress (argh!). I will keep working on it and hopefully post the results back here soon.

@PeterO Yes you are correct about the P1 and P4 being 180 degrees apart. It looks like your path is the Dubins Path method someone else mentioned here earlier. The curvature of this path is not exactly what I was after, as the bulge of the centre circle is beyond what I was looking for. I think the bezier curve method works best, if I can only figure out how to properly reparametrize the spline (three separate arc curves joined together). Thank you for the suggestion though.

Thanks again to everyone who is offering their advice. My progress is slow but I will keep chipping away. I hope to post a full solution here soon.
Be careful, that bulge the centre circle might not be what you expected, or were looking for, but if you want P1, P2, P3 and P4 evenly spaced along a semi-circle, and you also want the transition from the initial incidence to the first curve, the first curve to the second curve, the second curve to the third curve, and the third curve to the exit trajectory to be completely smooth - that is the shape you are dealing with.
 
  • Like
Likes Lnewqban and Cato11
  • #27
Cato11 said:
Thanks again to everyone who is offering their advice. My progress is slow but I will keep chipping away. I hope to post a full solution here soon.
Knowing what you're actually trying to accomplish would go a long ways towards us helping you to find a solution.
 
  • Like
Likes bob012345, jbriggs444 and Vanadium 50
  • #28
hmmm27 said:
Knowing what you're actually trying to accomplish would go a long ways towards us helping you to find a solution.
My apologies, I thought I made that clear. What I am trying to accomplish is to get a moving object to uniformly accelerate from a define start speed to a defined end speed, as it travels through a curved path. The curved path is a spline comprised of multiple arcs. There can be two arcs as shown in my post #14, or three as shown in the OP. The shape of the curve shouldn't really matter as it should be changeable.

Based on people's feedback in this thread, my understanding is that I need to do a few things:

1. Find the total path length of the curve
2. Parametrize the path with a 'T' value between 0 and 1
3. Adjust my scaling of 'T' to accelerate from one speed to another

It seems that this is more of a math problem vs a physics one so I am struggling myself to fully understand where to go with this. My apologies if this reply doesn't help, I am in something of a quandary!
 
  • #29
Cato11 said:
Based on people's feedback in this thread, my understanding is that I need to do a few things:

1. Find the total path length of the curve
2. Parametrize the path with a 'T' value between 0 and 1
3. Adjust my scaling of 'T' to accelerate from one speed to another

My suggestion to parametrize from 0 to 1 is just so we know the beginning and the end, independent of how you design your curve. Presumably the parametrization is just the arc-length divided by the total arc-length.

I think the biggest problem is to first design your curve, as you say, as a spline of multiple arcs.
If I recall correctly, you want the arcs to join with common tangents at the boundary circle.

I presume you want some movable intersection points on the boundary.
Maybe you want to specify the tangent lines of the trajectory at those boundary points.
Then determine the curve from those constraints.
 
  • Like
Likes Lnewqban
  • #30
Cato11 said:
My apologies, I thought I made that clear. What I am trying to accomplish is to get a moving object to uniformly accelerate from a define start speed to a defined end speed, as it travels through a curved path. The curved path is a spline comprised of multiple arcs. There can be two arcs as shown in my post #14, or three as shown in the OP. The shape of the curve shouldn't really matter as it should be changeable.

Based on people's feedback in this thread, my understanding is that I need to do a few things:

1. Find the total path length of the curve
2. Parametrize the path with a 'T' value between 0 and 1
3. Adjust my scaling of 'T' to accelerate from one speed to another

It seems that this is more of a math problem vs a physics one so I am struggling myself to fully understand where to go with this. My apologies if this reply doesn't help, I am in something of a quandary!
What is still not clear (at least to me) is if the object is physically constrained to move along this curved path or are you independently controlling the objects motion to force the acceleration to be uniform and how? Also, if we had a clue as to why you are doing this it may help as well. Is this just an academic exercise or is there a point to it?
 
  • #31
Take a piece of string, lay it out along the path, measure it, then apply :

$$a = \frac{v_{end}^2- v_ {start}^2}{2d}$$
 
  • #32
@robphy I think you are right, I have underestimated the the complexity of this problem it seems. I didn't think that the shape of the path was particularly important but clearly it is. I think I need to go back to the drawing board and rethink this problem. That being said, I appreciate everyone's help as it has given me a lot of food for thought. I do apologise for not articulating the problem more clearly, I will try to do better in future.

@bob012345 The object is not constrained in any way, I am the one trying to force it to move along this path and I am the one controlling the acceleration. It is for a personal animation project that I am working on, so there is a point. I think that I need to go back to the beginning and properly formulate the path, before thinking about the acceleration.

In the meantime I would like to thank everyone for their help.
 
  • Like
Likes bob012345 and Lnewqban
  • #33
Cato11 said:
...@PeterO Yes you are correct about the P1 and P4 being 180 degrees apart. It looks like your path is the Dubins Path method someone else mentioned here earlier. The curvature of this path is not exactly what I was after, as the bulge of the centre circle is beyond what I was looking for. I think the bezier curve method works best, if I can only figure out how to properly reparametrize the spline (three separate arc curves joined together).
The excellent graph done by @PeterO and shown in post #24 is the geometrical thruth about this problem.
The length of the middle trajectory or bulge of the center circle must always be greater than the other two.

Less severe difference could be achieved with reduced angle of incidence of the intial straight trajectory (less than perpendicular, or by reducing the length of the middle arc of the big circle respect to the other two.

It just occurred to me that in order to reduce the visual difference some and to avoid the many radii of spline lines, you could replace those three circles with three ellipses.
 
  • #34
Lnewqban said:
The excellent graph done by @PeterO and shown in post #24 is the geometrical thruth about this problem.
The #24 graph assumes a path of equal radii circle arcs, but it's (almost) as easy to use differently-sized circles for the satellites.

What's interesting (to me, anyways) is that all the angles incident to the main circumference will be the same, no matter what differing radii the satellite arcs are.
Lnewqban said:
The length of the middle trajectory or bulge of the center circle must always be greater than the other two.
In that graph, they're identical. [edit : and it appears I've lost track of the path a bit]
 
Last edited:
  • #35
It seems to me that since this is a computer animation the curve does not have to be mathematically continuous. For example, when it reaches point ##P_1## you define a new center of motion and let it be a circular arc through ##P_1## and ##P_2##. Do the same for the other arcs. Then you know the path and you can make it have an uniform angular acceleration along each arc. All you need to do is define the center point for each arc and for that you can use a geometry program such as this;

https://www.geogebra.org/geometry?lang=en
 
  • Like
Likes Lnewqban
  • #36
As @hmmm27 said above you can use circles of different radii to adjust the bulge. I wasn't sure if the points are equidistant around the arc as drawn here but if not it is easy to adjust for that. But these are all circles with different centers so the equations are easy. The object comes in from the left at ##E## and leaves at ##F##.

geogebra-export (1).png

Update: I'm calling this the Mickey Mouse version...
 
Last edited:
  • #37
bob012345 said:
As @hmmm27 said above you can use circles of different radii to adjust the bulge. I wasn't sure if the points are equidistant around the arc as drawn here but if not it is easy to adjust for that. But these are all circles with different centers so the equations are easy. The object comes in from the left at ##E## and leaves at ##F##.

View attachment 290835

Those circles appear to have “only approximately equal” tangents at the intersection points. That may be good enough.

(For the matching of tangent lines for circles, the centers and the intersection points should be collinear.)

How strict is the requirement (that is, what is the tolerance ) for matching the tangent lines?
 
Last edited:
  • Like
Likes bob012345 and Lnewqban
  • #38
Here's a GeoGebra file I just made:
https://www.geogebra.org/m/gvehkkfc
1634531569055.png


The T_{22} control point is forced to be on the tangent line defined by T_2 and P_2, and similarly for T_{33}. The arc-length of each arc is computed with GeoGebra's Length function... but a formula or algorithm is probably preferred. See the GeoGebra code for details.

Here are the curves:
Curve(P_1 (1 - t)³ + T_1 * 3(1 - t)² t + T_{2} * 3 (1 - t) t² + P_2 t³, t, 0, 1)
Curve(P_2 (1 - t)³ + T_{22} * 3(1 - t)² t + T_{32} * 3 (1 - t) t² + P_3 t³, t, 0, 1)
Curve(P_3 (1 - t)³ + T_{33} * 3(1 - t)² t + T_{43} * 3 (1 - t) t² + P_4 t³, t, 0, 1)

Play around with it.

UPDATE:
In addition the link ( https://pomax.github.io/bezierinfo/ ) I posted earlier,
these might be interesting
https://pomax.github.io/bezierjs/
https://raphlinus.github.io/curves/2018/12/28/bezier-arclength.html
https://math.stackexchange.com/questions/12186/arc-length-of-bézier-curves
https://fjorgedigital.com/insights/blog/can-bezier-curves-be-quickly-parameterized-by-arc-length/
https://stackoverflow.com/questions/17099776/trying-to-find-length-of-a-bezier-curve-with-4-points [this might be useful]
 
Last edited:
  • Like
Likes Cato11, bob012345 and Lnewqban
  • #39
Here's a constrained version:
https://www.geogebra.org/m/sxjwma2q

Given A and P_1, P_2, P_3, and P_4
the arcs are constrained to be symmetrical
by forcing their tangent lines to intersect at a point on
the diameter through the midpoint of the arc-points

PF-accelerationThroughCurvedPaths-v2.png


I would think that this constraint would force these Bezier curves to have a simpler form,
maybe to the point where the arc-length may expressed in closed form.
 
  • Like
Likes Cato11
  • #40
Hi All, I am happy to report that I have made some progress on this problem. In fact I think it is solved as far as my case is concerned!

Let's start with the formulation of the curve and take as an example a cubic bezier curve. Such a curve has two positional points (p0, p1) as well as two control points (c0, c1). If we want a curve to start at position 'p0' with velocity 'v0' and end at position 'p1' with velocity 'v1' after a specific time 't', then we must place the control points accordingly. How? By using the following equations:

p0 = p0
c0 = p0 + v0 * t / 3
c1 = p1 - v1 * t / 3
p1 = p1

Essentially we take the formula for a cubic bezier curve and differentiate with respect to time (as someone rightly said at the start of the thread!). By solving for c0 and c1 we get an expression for the control points given a required velocity. Once the points are placed, we evaluate position using the cubic bezier equation and passing in elapsed time (as animated in my post #14).

The result is a very smooth acceleration through the curve, as evidenced here with a spline that is composed of three separate curves:

Acceleration.gif


It's pretty awesome! It is important to ensure that when transitioning from one curve to another, the 'p1' and 'v1' of the curve that is being exited equals the 'p0' and 'v0' of the curve being entered. This provides continuity across the entire spline, preventing sharp turns or unnatural acceleration. The only challenge with this method is that the control points are placed for us, so if you want a very specific shape it requires splitting the spline into more curves for more precise control. This isn't necessarily a problem though. The main issue for me was achieving the acceleration so it's awesome to see it working.

Huge thanks to everyone here who helped by offering advice. And I must extend a massive shout-out to DMGregory over on GameDev StackExchange as he explained the solution and helped me to understand it.
Now I begin the exciting task of generating some complex looking curves!
 
  • Like
Likes bob012345, Lnewqban and hmmm27
Back
Top