Python Wand 中的 path_curve_to_quadratic_bezier() 函数

pythonserver side programmingprogramming

贝塞尔曲线是 Python 中内置的绘图函数。它用于根据给定的点在 Python 中绘制曲线。

二次贝塞尔曲线是一个 Python 函数,它通过顶点(控制点)绘制二次贝塞尔曲线的路径。二次贝塞尔曲线是一种参数曲线,它定义二维空间中的路径。此曲线由一个控制点和两个终点连接。

在可视化程序中,您可以使用此函数轻松构建和绘制。使用时间参数,您可以找到两个控制点并确定它们的位置。您可以通过这种方式构建敏感位置,并像曲线一样链接这些位置。借助此函数,我们可以轻松创建曲线和形状,而使用其他函数或方法很难或不可能创建这些曲线和形状。例如,借助二次贝塞尔函数,我们可以创建不同类型的图形和动画。

语法

此语法用于给定的示例 -

def quadratic_bezier(p0, p1, p2, t):

这里 p0、p1 和 p2 代表点,t 代表值。

示例 1

在此程序中,我们使用不同的点绘制曲线。

import matplotlib.pyplot as plt
import numpy as np

def quad_bez(p0, p1, p2, t):
   t1 = np.linspace(0, 1, t)
   x = (1 - t1) ** 2 * p0[0] + 2 * (1 - t1) * t1 * p1[0] + t1 ** 2 * p2[0]
   y = (1 - t1) ** 2 * p0[1] + 2 * (1 - t1) * t1 * p1[1] + t1 ** 2 * p2[1]
   return x, y

p0 = (0, 3)   # beginning  point
p1 = (4, 2)   # Control point
p2 = (1, 8)   # finishing point
t = 50

x, y = quad_bez(p0, p1, p2, t)

plt.plot(x, y)
plt.scatter([p0[0], p1[0], p2[0]], [p0[1], p1[1], p2[1]], c='red')  
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Bezier Curve')
plt.grid(True)
plt.show()

输出


在此代码中,我们使用 matplotlib 和 numpy 创建了一条贝塞尔曲线。我们已定义并用于绘制贝塞尔曲线上的点。起点、控制点和终点将显示在输出中。

示例 2

在此程序中,我们使用不同的点绘制曲线。

import matplotlib.pyplot as plt
import numpy as np

def quad_bez(p0, p1, p2, t):
   t1 = np.linspace(0, 1, t)
   x = (1 - t1) ** 2 * p0[0] + 2 * (1 - t1) * t1 * p1[0] + t1 ** 2 * p2[0]
   y = (1 - t1) ** 2 * p0[1] + 2 * (1 - t1) * t1 * p1[1] + t1 ** 2 * p2[1]
   return x, y
   
p0 = (2, 3)   # beginning  point
p1 = (6, 5)   # Control point
p2 = (3, 2)   # finishing point
t = 50

x, y = quad_bez(p0, p1, p2, t)

plt.plot(x, y)
plt.scatter([p0[0], p1[0], p2[0]], [p0[1], p1[1], p2[1]], c='red')  
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Bezier Curve')
plt.grid(True)
plt.show()

输出


在此代码中,我们使用 matplotlib 和 numpy 来生成贝塞尔曲线。使用我们使用的技术定义和绘制贝塞尔曲线上的起点。输出将显示起点、控制点和终点。

示例 3

在此程序中,我们使用不同的点绘制曲线。

import matplotlib.pyplot as plt
import numpy as np

def quad_bez(p0, p1, p2, t):
   t1 = np.linspace(0, 1, t)
   x = (1 - t1) ** 2 * p0[0] + 2 * (1 - t1) * t1 * p1[0] + t1 ** 2 * p2[0]
   y = (1 - t1) ** 2 * p0[1] + 2 * (1 - t1) * t1 * p1[1] + t1 ** 2 * p2[1]
   return x, y

p0 = (2, 3)   # beginning  point
p1 = (-2, 5)   # Control point
p2 = (-3, 2)   # finishing point
t = 80

x, y = quad_bez(p0, p1, p2, t)

plt.plot(x, y)
plt.scatter([p0[0], p1[0], p2[0]], [p0[1], p1[1], p2[1]], c='red')  
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Bezier Curve')
plt.grid(True)
plt.show()

输出


在此代码中,为了创建贝塞尔曲线,使用了 matplotlib 和 numpy。我们使用的方法定义并绘制贝塞尔曲线起点处的点。起始位置、控制点和终点都将显示在输出或图形中。

示例 4

在此程序中,我们使用不同的点绘制曲线。

import matplotlib.pyplot as plt
import numpy as np

def quad_bez(p0, p1, p2, t):
   t1 = np.linspace(0, 1, t)
   x = (1 - t1) ** 2 * p0[0] + 2 * (1 - t1) * t1 * p1[0] + t1 ** 2 * p2[0]
   y = (1 - t1) ** 2 * p0[1] + 2 * (1 - t1) * t1 * p1[1] + t1 ** 2 * p2[1]
   return x, y

p0 = (2, -5)   # beginning  point
p1 = (-2, 5)   # Control point
p2 = (-3, 2)   # finishing point
t = 50

x, y = quad_bez(p0, p1, p2, t)

plt.plot(x, y)
plt.scatter([p0[0], p1[0], p2[0]], [p0[1], p1[1], p2[1]], c='red')  
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Bezier Curve')
plt.grid(True)
plt.show()

输出


在此代码中,我们使用 matplotlib 和 numpy 构建了一条贝塞尔曲线。我们已经识别并利用了沿贝塞尔曲线的点。图像将显示起点、控制点和终点。

在上面的例子中,我们可以看到使用起点、控制点和终点创建的不同图形。

结论

总之,二次贝塞尔函数用于 Python Wand 创建平滑曲线。它需要三个点作为输入,并生成一条通过端点并受控制点位置影响的曲线。


相关文章


有用资源