python - 如何计算给定 t 处贝塞尔曲线的斜率/导数?
问题描述
DEFAULT_CONTROL_POINTS = [(0, 0), (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, k, 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
。
解决方案
推荐阅读
- c# - 如何在 C# 中获取特定的单元格地址?
- javascript - PHP项目在本地主机中正常工作,但在远程服务器中不正常
- python - 有效地获得 3 个不同大小和类型的 numpy 数组的排列
- sql - 仍然无法使用 JOIN 在 SQL 中删除
- java - 管理每个 Servlet 的 Tomcat 请求
- c# - 在 Razor 页面 Web 应用程序中发布异步而不重定向
- spring - 从 Struts 迁移到 Spring 是否会发生大规模变化?
- html - 位置属性的转换不起作用(引导程序 4)
- javascript - Google表格数据移动器脚本不一致的问题
- c++ - 如何使 std::regex 匹配 Utf8