3
$\begingroup$

I want to connect two points on a plane. Both of the points have their angles given. The angles are representing the direction vector in which the curve should pass through this point.

One of this point lies on the center of the coordinate system. The other one can lie in any other location of the space.

For example: $$ \begin{aligned} P_0 &= (0,0) & \vec P_0 &= \begin{bmatrix} 1 \\ 0 \end{bmatrix} & \gamma &= 90° \\ P_1 &= (3,3) & \vec P_1 &= \begin{bmatrix} 0 \\ 1 \end{bmatrix} & \gamma &= 0° \end{aligned} $$

The resulting minimum radius of the curve should be as big as possible between the two points. In addition the length of the path should also be as short as possible. There should be no addition of extra straight paths or very big loops to stretch the radius.

For now I tried to access this problem with Beziér curves, Hermite curves and ellipses but for none I got the sufficient solution.

$\endgroup$
7
  • $\begingroup$ What is "the maximum possible radius"? Do you mean the radius of curvature? Or the distance from the origin? In either case, what would prevent the curve from having an arbitrarily large radius? Also, what do you mean by "the area between the two points"? $\endgroup$
    – joriki
    Commented Aug 10, 2015 at 9:47
  • $\begingroup$ @joriki Yes I mean the radius of curvature. The area between two points should describe the curve between this to points. So if I got a curve, the radius of curvature of the curve outside should not be considered. And for the arbitrary large radius I thought about ellipses, that should have a maximum radius for this problem, shouldn't they? $\endgroup$
    – Trollderim
    Commented Aug 10, 2015 at 10:11
  • $\begingroup$ A curve is not an area; the sentence would be a lot clearer if you delete "in the area". Independent of that, it's not clear how you define "the" radius of curvature of the curve between the points. The curve cannot, in general, have constant radius of curvature, since you're specifying one more degree of freedom than would allow the curve to be a circle in general. Thus it seems that you'd need to specify how the different radii of curvature of the curve are to be considered in defining "the" radius of curvature. I'm not sure I understand what you're saying about ellipses. $\endgroup$
    – joriki
    Commented Aug 10, 2015 at 10:22
  • $\begingroup$ @joriki Thank you for your answer, I'll delete this. I'll add a sentence about the maximum minimum radius of curvature to the question, so I want to find the minimum radius of curvature of a specific curve. This minimum radius should be as big as possible. The point about ellipses is, that an ellipse that fullfills this conditions (passing through the points in specific vectors), should have a minimum maximum curvature possible (a specific minimum radius of this ellipse, that is smaller for any other ellipse). $\endgroup$
    – Trollderim
    Commented Aug 10, 2015 at 10:36
  • $\begingroup$ I don't think that such a maximum exists. You can go straight in the directions specified for as long as you want, and the longer you've gone, the larger the radius of curvature of the circle that you can then use to connect the ends of the straight segments. $\endgroup$
    – joriki
    Commented Aug 10, 2015 at 10:48

1 Answer 1

0
$\begingroup$

If the input data don't imply an inflexion, then you can use a rational quadratic Bezier curve to solve the problem. Let the start and end points be $\mathbf{P}_0$ and $\mathbf{P}_1$, and let $\mathbf{P}_a$ be the point of intersection of the end tangent lines (the "a" stands for "apex").

The rational quadratic Bezier curve defined by this data is: $$ \mathbf{C}(t) = \frac{ (1-t)^2 \mathbf{P}_0 + 2wt(1-t) \mathbf{P}_a + t^2 \mathbf{P}_1 } { (1-t)^2 + 2wt(1-t) +t^2 } $$ You can use the weight $w$ to adjust the curvature of the curve. Using $w=0$ will give you a straight line, and large values of $w$ will give you a curve that passes very close to $\mathbf{P}_a$ and has a sharp turn in this region.

With some work, I expect you can calculate the minimum radius of curvature as a function of $w$, and then you can choose the value of $w$ that maximizes this minimum.

A simpler approach is to use some heuristic rule to define $w$. For example, one choice that I have used in numerous applications is: $$ w = \sqrt{\tfrac12(1 + \mathbf{U} \cdot \mathbf{V})} $$ where $\mathbf{U}$ and $\mathbf{V}$ are unit tangent vectors (i.e. unit vectors in the directions of $\mathbf{P}_a - \mathbf{P}_0$ and $\mathbf{P}_1 - \mathbf{P}_a$ respectively).

If the input data are symmetrical, this will give you a curve that it exactly circular. In other cases, you will get some other conic section curve (rational quadratics are always conics).

The picture below shows some example curves. The red one has $w$ computed via the heuristic formula I gave.

$\endgroup$
1
  • 1
    $\begingroup$ Where is the picture below? $\endgroup$
    – Ixanezis
    Commented Nov 6, 2018 at 12:47

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .