2016-05-09 177 views
0

我想制定一種使用python在屏幕上繪製線條圖案的有效方式。使用python高效地繪製線條

前段時間我拼湊了一些代碼,可以驅動LAser Spirograph。它們基本上是圍繞彼此圓周的運動點旋轉的3個圓圈。這產生了一系列點,根據每個圓圈旋轉的相對速度來追蹤各種圖案。

所以,現在我有一個很長的x,y線列表,我想把它作爲一條線繪製出來,是否有python中的函數(當前正在玩Pygames),它將採用一系列點並將它們與光滑的曲線。

例如說我有幾百個描述這個link模式的點,在Python中是否有一種「簡單」的方式來渲染他的全屏模式。我認爲這比試圖繪製幾千個點來獲得線的外觀要快。

編輯

我一直在假設會有畫通過傳遞函數的起點和終點以及半徑說半圓屏幕更快的方法。而不是在曲線上計算2,000點,並將它們分別繪製爲點或短直線。我還假設它比單獨輸出同一條線要快100倍?

+0

[**'pygame.draw.lines' **](http://www.pygame.org/docs/ref/draw.html#pygame.draw.lines) –

+0

嗨,據我所知,它繪製點之間的一系列線條並不順暢。例如,三個點可以用兩條直線連接並形成一個天使或一條平滑曲線。我想要曲線。 – DevilWAH

+0

您需要定義端點的切線和重量。曲線應遵循什麼路徑? –

回答

1

免責聲明這不是一個答案


要在我的評論擴大上述

你不想要的曲線。你想有足夠的愚弄感知頻率採樣曲線

看看的更密集VS粗糙的採樣上的是什麼屏幕

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') 

,讓我

enter image description here

我敢說,有足夠高的採樣率是什麼畫看起來像一條曲線,即使是直線段的序列(因爲它是明顯的,當你看看t vs x的其他兩個地方)。

在其他意見中,您被告知您可以使用哪個pygames功能來做您的行爲。

+0

嗨,歡呼聲全部放出,我的consern試圖挑選正確的採樣率,對於曲線「0.75-1.25」的某些部分曲線幾乎是直的。而從1.25 - 1.75的直線會非常明顯地偏離曲線。我可能會恢復到這一點,但會看起來像貝塞爾曲線。 – DevilWAH

+1

當正弦接近最大值時,曲率也有最大值,當正弦越過零點時,曲率接近於零,因此正弦曲線非常接近於直線。並在兩個地區進行均等取樣。無論如何,我不會試圖進一步說服你,因爲我覺得我不會說服你。再見 – gboffi