问题描述
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 (将#修改为@)