pygame을 사용하여 Koch Koch snow flake을 구현하고 싶습니다. 내가 http://en.wikipedia.org/wiki/File:KochFlake.svgpygame을 사용하여 Python으로 Koch 눈송이 구현
내 알고리즘에서 이미지의 다음과 같은 일련의 작업을하고
이
- 는
- 삼각형 3 분의 1의 포인트를 계산 삼각형을 그립니다 자사의 크기를 줄이고 가운데 선을 삭제하십시오.
- 외부 점을 찾으십시오 (두 번째 그림과 같이). 위의 이미지의 URE)
- 다각형을 사용하여 모든 엔드 포인트
- 의 목록을 확인 내가 두 번째 단계까지 수행 한
모든 점을 가입 할 수 있습니다. 그러나 세 번째 단계에서 어려움을 겪고 있습니다. 외부 지점을 찾는 방법을 알아낼 수 없으므로 어떤 조언을 드릴까요?
여기에 두 번째 정확히 단계
import pygame
from pygame.locals import *
pygame.init()
fpsClock = pygame.time.Clock()
screen = pygame.display.set_mode((600,600))
pygame.display.set_caption('Koch snowflake')
white = (255, 255, 255)
black = (0, 0 ,0)
def midpoints(pt1 , pt2):
(x1, y1) = pt1
(x2, y2) = pt2
return ((x1+x2)/2, (y1 + y2)/2)
def midline(pt1, pt2):
(x1, y1) = pt1
(x2, y2) = pt2
return [(x1 + float(x2-x1)/3.0,y1 + float(y2-y1)/3.0), (x1 + float(x2-x1)*2.0/3,y1+ float(y2-y1)*2.0/3)]
def drawline(pt1, pt2):
pygame.draw.line(screen, white, pt1, pt2)
def clearline(pt1,pt2):
pygame.draw.line(screen, black, pt1, pt2, 4)
a = [(150,150), (450,150), (300,410), (150,150)]
pygame.draw.polygon(screen, white ,(a[0], a[1], a[2]), 1)
i = 0
order = 0
length = len(a)
while order < length - 1:
pts = midline(a[i], a[i+1])
clearline(pts[0], pts[1])
a = a[:i+1] + pts + a[i+1:]
print a
if order < 3:
i = i+3
order = order + 1
#pygame.draw.polygon(screen, white ,Tup, 1)
pygame.display.update()
게시물을 쉽게 읽을 수 있도록 몇 가지 수정을했지만, 포인트 2에 대한 코드를 작성하고 포인트 3에 대해 시도한 코드가 –
감사합니다. Jon Clements – Hacker
환영합니다. 그러나 질문을 편집하여 2 단계로 가려면 수행 한 작업과 3 단계에서 시도한 작업을 포함하십시오. –