calculating parameters for defining subsections of quadratic bezier curves

后端 未结 2 1422
迷失自我
迷失自我 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:20

    The t equation is wrong, you need to use eq(1)

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

    and solve it using the the quadratic formula for the roots (2).

               -b ± √(b^2 - 4ac)
      (2)  x = -----------------
                  2a
    

    Where

    a = ax-2bx+cx
    b = 2(bx-ax)
    c = ax - x
    
    0 讨论(0)
  • 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].

    0 讨论(0)
提交回复
热议问题