[Pygame] Bezier Curve 파이게임 베지어 곡선
Python 2023. 9. 4. 12:42 |반응형
베지어 곡선을 계산하고 적용해 보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
#import numpy as np
import bezier
import pygame
pygame.init()
pygame.display.set_caption("Super fun game development")
screen = pygame.display.set_mode((640, 480))
clock = pygame.time.Clock()
running = True
#nodes = np.asfortranarray([
# [0.0, 640.0*2/4, 640.0*3/4, 640.0],
# [0.0, 960.0, -960.0, 960.0],
# ])
#curve = bezier.Curve(nodes, degree=3)
#nodes = np.asfortranarray([
# [0.0, 640.0*2/4, 640.0*3/4, 640.0],
# [0.0, 960.0, -960.0, 960.0],
# ])
#nodes = np.array([
# [0.0, 640.0*2/4, 640.0*3/4, 640.0],
# [0.0, 960.0, -960.0, 960.0],
# ])
nodes = [
[0.0, 640.0*2/4, 640.0*3/4, 640.0],
[0.0, 960.0, -960.0, 960.0],
]
# 곡선 위 노드 행렬. 행은 차원, 열은 노드의 좌표를 나타낸다.
# (0, 0), (640*2/4, 960), (640*3/4, -960), (640, 960)
curve = bezier.Curve.from_nodes(nodes)
# 베지어 곡선을 생성한다. 차수는 node로부터 계산한다.
index = 0.0
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
running = False
screen.fill("black")
index += 0.005
if index > 1:
index = 0.0
coord = curve.evaluate(index)
# 베지어 곡선 위 index 지점 좌표를 계산한다. index는 1을 넘을 수 있다.
pygame.draw.circle(screen, "yellow", (coord[0][0], coord[1][0]), 100)
pygame.display.flip()
clock.tick(60)
pygame.quit()
|
반응형
'Python' 카테고리의 다른 글
[Pygame] Look at the Mouse 파이게임 마우스 따라 회전하기 (0) | 2023.09.05 |
---|---|
[Pygame] Sprite Collision Detection 파이게임 스프라이트 충돌 감지 (0) | 2023.09.04 |
[Pygame] Tweening 파이게임 트윈(트위닝) (0) | 2023.09.04 |
[Pygame] Sprite Animation 파이게임 스프라이트 애니메이션 (0) | 2023.09.03 |
[Pygame] Alpha Channel 파이게임 알파채널 (0) | 2023.09.03 |