Derivative of a Bezier curve in matrix form

122 views
Skip to first unread message

vince touache

unread,
Mar 8, 2021, 10:36:16 AM3/8/21
to Python Programming for Autodesk Maya
hi all, 

I'm working with some bezier curves (ultimately, the goal is to benchmark maya bifrost against regular maya - if you have any reference to share, regarding bifrost perfs, feel free!).
I get my pos at parameter using directly matrices, no decasteljau involved, I find it more elegant:
v_t = np.array([1, t, t**2, t**3])
cubic = np.array([
    [ 1.,  0.,  0.,  0.],
    [-3.,  3.,  0.,  0.],
    [ 3., -6.,  3.,  0.],
    [-1.,  3., -3.,  1.]
])
pos_at_param = np.dot(np.dot(v_t, cubic),  control_points)

Works just fine. But I would like to compute my tangents using the same logic

Whether I start from 
(1-t)**3 + 
3(1-t)**2t + 
3(1-t)t**2 + 
t**3
gets all those derivatives, and recreate a matrix out of it,

or start from the derivative I found online
3(1-t)(1-t) * (p1 - p0) + 
6t(1-t) * (p2 - p1) + 
3tt * (p3 - p2)
giving me 
  [ 3.,  0., 0.]
  [-6.,  6., 0.]
  [ 3., -5., 3.]

None of those seem to give me the actual derivative / tangent vector on my curve at the given param. Am I doing something? Is it simply impossible to compute the tangent of a curve using the same logic than the position?

Thank you


Reply all
Reply to author
Forward
0 new messages