Undergrad Acceleration through curved paths

  • Thread starter Thread starter Cato11
  • Start date Start date
  • Tags Tags
    Acceleration
Click For 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.
  • #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}$$
 
Physics news on Phys.org
  • #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

Similar threads

  • · Replies 13 ·
Replies
13
Views
2K
  • · Replies 23 ·
Replies
23
Views
3K
  • · Replies 25 ·
Replies
25
Views
4K
  • · Replies 75 ·
3
Replies
75
Views
4K
  • · Replies 86 ·
3
Replies
86
Views
8K
  • · Replies 25 ·
Replies
25
Views
3K
  • · Replies 1 ·
Replies
1
Views
1K
Replies
6
Views
2K
  • · Replies 41 ·
2
Replies
41
Views
4K
  • · Replies 138 ·
5
Replies
138
Views
8K