Acceleration through curved paths

  • Context: Undergrad 
  • Thread starter Thread starter Cato11
  • Start date Start date
  • Tags Tags
    Acceleration
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
39 replies · 6K views
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
@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   Reactions: bob012345 and Lnewqban
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.
 
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:
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   Reactions: Lnewqban
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:
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   Reactions: bob012345 and Lnewqban
Here's a GeoGebra file I just made:
https://www.geogebra.org/m/gvehkkfc
1634531569055.png


The [itex]T_{22}[/itex] control point is forced to be on the tangent line defined by [itex]T_2[/itex] and [itex]P_2[/itex], and similarly for [itex]T_{33}[/itex]. 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   Reactions: Cato11, bob012345 and Lnewqban
Here's a constrained version:
https://www.geogebra.org/m/sxjwma2q

Given [itex]A[/itex] and [itex]P_1[/itex], [itex]P_2[/itex], [itex]P_3[/itex], and [itex]P_4[/itex]
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   Reactions: Cato11
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   Reactions: bob012345, Lnewqban and hmmm27