我正在尝试找到一种使用python在屏幕上绘制线条图案的有效方法。
不久前,我整理了一些可以驱动LASER Spirograph的代码。基本上是3个圆圈,每个圆圈都围绕彼此圆周的移动点旋转。这会产生一系列的点,这些点根据每个圆旋转的相对速度来描绘出各种图案。
所以现在我有一长串希望以单线绘制的x,y线,python中是否有一个函数(当前正在与Pygames一起玩),它将获取一系列的点并用平滑的曲线将它们连接起来线。
例如,我在此link中有数百个描述模式的要点,在Python中是否有一种“简单”的方式来呈现完整的模式到屏幕。我认为这比尝试绘制几千个点以获得线条的外观要快。
编辑
我一直认为,通过向函数传递起点和终点以及半径,可以更快地在屏幕上绘制半圆。而不是计算曲线上的2,000个点,然后将它们分别绘制为点或短直线。我还假设绘制一条长100点的直线比输出同一条线作为单独的点更快。
免责声明这不是答案
要在上面补充我的评论
您不想要曲线。您想以足以愚弄感知的频率对曲线进行采样]
看一下密集采样与粗糙采样对屏幕上绘制内容的感知效果
import numpy as np
import matplotlib.pyplot as plt
t = np.linspace(0, np.pi*3, 301)
x = np.sin(t)
每个点(t[i], x[i])
代表一个点,这里为正弦曲线中的一个点,在您的应用中为更复杂的曲线,因此让我们使用不同的采样步骤绘制这些点,以查看采样率是否对您对所绘制内容的感知...
for step in (1, 25, 50):
plt.plot(t[::step], x[::step], label='step=%d'%step)
# ^^^^ ^^^^
plt.ylim((-1.05, 1.05))
plt.legend(loc='best')
给我
我敢说,以足够高的采样率,绘制的[[looks]]就像一条曲线,即使它是一系列直线段(如您看到t
与x
)。在其他评论中,您被告知可以使用哪个pygames
函数来完成任务。