如何计算给定 t 下贝塞尔曲线的斜率/导数?

问题描述

DEFAULT_CONTROL_POINTS = [(0,0),(0,0)]

def factorial(n):
    result = 1
    while n > 1:
        result *= n
        n -= 1
    return result
    
def binomial_coefficient(n,k):
    return factorial(n) / (factorial(k) * factorial(n - k))


class BezierCurve(Curve):

    def __init__(self,control_points=None):
        if control_points is None:
            control_points = DEFAULT_CONTROL_POINTS

        self.control_points = control_points

    def get_order(self):
        return len(self.control_points) - 1

    def B(self,n,k,t):
        result = binomial_coefficient(n,k)
        result *= (1 - t) ** k
        result *= t ** (n - k)
        return result

    def calculate_point_multiplier(self,t):
        res_x = 0
        res_y = 0

        n = self.get_order()
        for k in range(n + 1):
            point = self.control_points[k]
            multiplier = B(n,t)
            res_x += point[0] * multiplier
            res_y += point[1] * multiplier

        return res_x,res_y

    def calculate_point_at(self,t):
        return self.calculate_point_multiplier(t,self.B)

    def calculate_slope_at(self,t):
        pass

这里,在方法 calculate_slope_at 中,我需要能够确定给定 t 点处曲线的斜率。

我需要这个,以便我可以在曲线上移动对象,并让它们在沿着曲线移动时面向正确的方向。

这里我需要一个值,即给定 t 处切线的斜率。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)