calculating parameters for defining subsections of quadratic bezier curves

后端 未结 2 1438
迷失自我
迷失自我 2021-01-03 04:06

I have a quadratic bezier curve described as (startX, startY) to (anchorX, anchorY) and using a control point (controlX, controlY).

I have two questions:

(1)

2条回答
  •  遥遥无期
    2021-01-03 04:23

    Part 1

    The formula for a quadratic Bezier is:

    B(t) = a(1-t)2    + 2bt(1-t)   + ct2
         = a(1-2t+t2) + 2bt - 2bt2 + ct2
         = (a-2b+c)t2+2(b-a)t + a

    where bold indicates a vector. With Bx(t) given, we have:

    x = (ax-2bx+cx)t2+2(bx-ax)t + ax

    where vx is the x component of v.

    According to the quadratic formula,

         -2(bx-ax) ± 2√((bx-ax)2 - ax(ax-2bx+cx))
    t = -----------------------------------------
                 (2ax(ax-2bx+cx))
                 
         ax-bx ± √(bx2 - axcx)
      = ----------------------
             ax(ax-2bx+cx)

    Assuming a solution exists, plug that t back into the original equation to get the other components of B(t) at a given x.

    Part 2

    Rather than producing a second Bezier curve that coincides with part of the first (I don't feel like crunching symbols right now), you can simply limit the domain of your parametric parameter to a proper sub-interval of [0,1]. That is, use part 1 to find the values of t for two different values of x; call these t-values i and j. Draw B(t) for t ∈ [i,j]. Equivalently, draw B(t(j-i)+i) for t ∈ [0,1].

提交回复
热议问题