pygame實現旋轉的摩天輪

2021-10-24 23:24:28 字數 3841 閱讀 6644

說明:在pycharm平台實現的影象旋轉

通過確定圓心,在乙個以座標原點為圓心的假想圓的圓周上繪製一定數量的點,並在這些點和圓心之間做直線,同時為每條直線圓心處的點和圓周上的點設定一種顏色,使得顏色漸變,最終讓其旋轉起來。

知識點:

視窗的繪製,等分點的尋找

​ 1、首先使用pygame建立乙個視窗,以便顯示影象

​ 2、通過迴圈找出半徑為300,圓心位置在(500,500)上的30個等分點

​ 3、構建draw()函式,進行圓心位置與等分點的連線

​ 4、設定時鐘訊號與清屏功能,產生旋轉效果

首先,使用dda演算法畫直線

dda演算法

'''if k >-1

and k <1:

# x 最大位移

while

true

:if x > x1:

break

add_pixel(x, y, bx,1)

x = x+

1 y = y+k

elif k >=1:

# y 最大位移

while

true

:if y > y1:

break

add_pixel(x, y, bx,1)

y = y+

1 x = x+1/k

else

:while

true

:if y < y1:

break

add_pixel(x, y, bx,1)

y = y-

1 x = x-

1/k

再實現bresenham演算法構建直線

if k >1:

while

true

:if y > y1:

break

add_pixel(x, y, ax,0)

y = y +

1 d = d +

1/ k

if d >

0.5:

x = x +

1 d = d -

1elif k >0:

while

true

:if x > x1:

break

add_pixel(x, y, ax,0)

x = x +

1 d = d + k

if d >

0.5:

y = y +

1 d = d -

1elif k >-1

:while

true

:if x > x1:

break

add_pixel(x, y, ax,0)

x = x +

1 d = d - k

if d >

0.5:

y = y -

1 d = d -

1else

:while

true

:if y < y1:

break

add_pixel(x, y, ax,0)

y = y -

1 d = d -

1/ k

if d >

0.5:

x = x +

1 d = d -

1

實現旋轉的摩天輪的完整**:

import pygame, os

import numpy as np

pi =

3.1415

fps =

100thare =

0fpsclock = pygame.time.clock(

)# 初始化pygame

pygame.init(

)r =

300# 半徑

number_point =

30# 等分點數量

temp = np.linspace(0,

2* np.pi,

1000

)x = np.sin(temp)

* ry = np.cos(temp)

* r# 設定視窗的大小,單位為畫素

screen = pygame.display.set_mode(

(1000

,1000))

pygame.display.set_caption(

'xuanzhaun'

)# 定義顏色

black =(0

,0,0

)white =

(255

,255

,255

)red =

(255,0

,0)green =(0

,255,0

)blue =(0

,0,255

)# 設定背景顏色

screen.fill(white)

# 繪製一條線

defdraw()

:for i in

range(30

):m =

int(x[i]

+500

) n =

int(y[i]

+500

) pygame.draw.line(screen, green,

[500

,500],

[m,n],3

) pygame.draw.circle(screen, blue,

[m,n],10

,0)#pygame.display.update()

# 設定pygame時鐘的間隔時間

fpsclock.tick(fps)

while

(thare<

100000):

x =y =

for i in

range

(number_point):2

* pi / number_point + thare))2

* pi / number_point + thare)

) thare = thare+

1 pygame.draw.circle(screen, green,

[500

,500],

300,1)

draw(

) pygame.display.update(

) screen.fill(white)

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-cuvndkfg-1603118083567)(c:\users\dsh\desktop\發發發.gif)]

pygame.display.update()

screen.fill(white)

### 四、實現效果

[外鏈轉存中...(img-4n40sutf-1603118083564)]

[外鏈轉存中...(img-cuvndkfg-1603118083567)]

### 五、總結

​ 在老師發了本次作業後,我最開始看了關於mfc實現的相關程式,仔細閱讀完程式後,就決定用python來實現這麼乙個動畫過程。在實現的過程中,也是遇到了許多的小問題,比如設定好增加角度迴圈,再重繪顯示後,在背景框上並沒有動畫的顯示。在翻閱資料後才知道,必須在繪製過程中加乙個時鐘延時過程,才可以看見動畫效果。

使用css3構建乙個摩天輪旋轉

一 摩天輪構建思路 1 自身繞圓旋轉 修改旋轉軸心 keyframes spin box ball box ball box inner animation inherit 繼承上級的屬性 animation name spin reverse 二 實踐 demo1 ball demo2 ball ...

自定義學習 摩天輪原理

這個例子是從課堂上拿過來的 是乙個很好的例子,可以學習手勢識別,以及事件分發,特別是轉動速度和滑動之間的關係。public class skywheel extends relativelayout public skywheel context context,attributeset attrs...

傾角感測器應用於摩天輪吊艙調平

無錫詠為感測科技 是一家設計 製造 銷售為一體的傾角感測器類產品 商,產品廣泛應用於角度測量 平台監測 雷射調平 安防控制等領域。現介紹一種應用於摩天輪安全控制方面的技術方案,均實拍與施工現場。1 設計需求 摩天輪轉動過程中,受到風力 慣性等因素的影響,轎廂會擺動,影響客戶體驗,同時,如果偏轉角度過...