2012-07-29 6 views
1

파이 게임에 포물선을 그려 넣고 싶습니다. 나는 pixelarray 객체를 만들었고 그것을 통해 반복하여 픽셀이 포물선 위에 있는지 여부를 결정했다. 포인트 사이에 틈이있는 이미지를 얻는 것 같습니다. 어떻게 하나의 연속 라인으로 만들 수 있습니까?파이 게임으로 포물선 그리기

import pygame 
import sys 
from pygame.locals import * 
import math 

WIDTH = 640 
HEIGHT = 480 

pygame.init() 
screen = pygame.display.set_mode((WIDTH, HEIGHT), 0, 32) 

pxarray = pygame.PixelArray(screen) 

while True: 
    for event in pygame.event.get(): 
     if event.type == QUIT: 
      pygame.quit() 
      sys.exit() 

    screen.fill((0,0,0)) 

    for y, py in enumerate(pxarray): 
     for x, px in enumerate(py): 
      if int(x) == (int(y)*int(y)) - 30*int(y) + 450: 
       pxarray[y][x] = 0xFFFFFF 

    pygame.display.update() 

답변

7
color = 255, 0, 0 
first = True 
prev_x, prev_y = 0, 0 
while True: 
    for event in pygame.event.get(): 
     if event.type == QUIT: 
      pygame.quit() 
      sys.exit() 

    screen.fill((0,0,0)) 

    for y, py in enumerate(pxarray): 
     for x, px in enumerate(py): 
      if int(x) == (int(y)*int(y)) - 30*int(y) + 450: 
       pxarray[y][x] = 0xFFFFFF 

       if first: 
        first = False 
        prev_x, prev_y = x, y 
        continue 

       pygame.draw.line(screen, color, (prev_y, prev_x), (y, x)) 
       prev_x, prev_y = x, y 

    first = True 
    pygame.display.flip() 

enter image description here

1

일련의 선분으로 포물선을 그릴 필요가 있습니다. 얼마나 많은 세그먼트를 사용 하느냐에 따라 얼마나 부드럽게 보이는지 알 수 있습니다. 따라서 포물선 x = y^2 + 30y + 450을 계산하는 경우 여러 y 값에 대해 x 값을 계산하고 (x0 , y0) ~ (x1, y1) 등등.

선 그리기 프리미티브가없는 경우 Bresenham's Algorithm과 같은 것을 사용하여 구현해야합니다.

관련 문제