728x90
반응형
import pygame # Pygame 모듈을 임포트
from pygame.locals import * # Pygame 로컬 상수 임포트
from OpenGL.GL import * # OpenGL 함수 임포트
from OpenGL.GLU import * # OpenGL 유틸리티 함수 임포트
import math # 수학 함수 사용을 위한 math 모듈 임포트
def draw_triangle(): # 삼각형을 그리는 함수 정의
glBegin(GL_TRIANGLES) # 삼각형 그리기 시작
glVertex2f(-0.2, -0.2) # 첫 번째 꼭짓점 좌표
glVertex2f(0.2, -0.2) # 두 번째 꼭짓점 좌표
glVertex2f(0.0, 0.2) # 세 번째 꼭짓점 좌표
glEnd() # 그리기 종료
def draw_square(): # 사각형을 그리는 함수 정의
glBegin(GL_QUADS) # 사각형 그리기 시작
glVertex2f(-0.2, -0.2) # 첫 번째 꼭짓점 좌표
glVertex2f(0.2, -0.2) # 두 번째 꼭짓점 좌표
glVertex2f(0.2, 0.2) # 세 번째 꼭짓점 좌표
glVertex2f(-0.2, 0.2) # 네 번째 꼭짓점 좌표
glEnd() # 그리기 종료
def draw_circle(radius=0.2, num_segments=100): # 원을 그리는 함수 정의
theta = 2 * 3.1415926 / num_segments # 원의 각도 계산
c = math.cos(theta) # 코사인 값 계산
s = math.sin(theta) # 사인 값 계산
x = radius # 초기 x 좌표
y = 0 # 초기 y 좌표
glBegin(GL_POLYGON) # 다각형 그리기 시작
for i in range(num_segments): # 각 세그먼트에 대해
glVertex2f(x, y) # 꼭짓점 추가
t = x # 임시 변수에 x 저장
x = c * x - s * y # 회전 변환
y = s * t + c * y # 회전 변환
glEnd() # 그리기 종료
def main(): # 메인 함수 정의
pygame.init() # Pygame 초기화
display = (1000, 600) # 창 크기 설정
pygame.display.set_mode(display, DOUBLEBUF | OPENGL) # OpenGL 창 생성
width, height = display # 창의 너비와 높이 설정
gluOrtho2D(-1, 1, -1 * height / width, 1 * height / width) # 종횡비 맞추기
while True: # 무한 루프 시작
for event in pygame.event.get(): # 이벤트 처리
if event.type == pygame.QUIT: # 창 닫기 이벤트 처리
pygame.quit() # Pygame 종료
return # 함수 종료
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) # 화면 지우기
glColor3f(1, 0, 0) # 빨간색 설정
glPushMatrix() # 현재 변환 행렬 저장
glTranslatef(-0.5, 0, 0) # 위치 이동
draw_triangle() # 삼각형 그리기
glPopMatrix() # 이전 변환 행렬 복원
glColor3f(0, 1, 0) # 초록색 설정
glPushMatrix() # 현재 변환 행렬 저장
glTranslatef(0.5, 0, 0) # 위치 이동
draw_square() # 사각형 그리기
glPopMatrix() # 이전 변환 행렬 복원
glColor3f(0, 0, 1) # 파란색 설정
glPushMatrix() # 현재 변환 행렬 저장
glTranslatef(0, 0, 0) # 위치 이동
draw_circle() # 원 그리기
glPopMatrix() # 이전 변환 행렬 복원
pygame.display.flip() # 화면 업데이트
pygame.time.wait(10) # 잠시 대기
if __name__ == "__main__": # 메인 함수 실행 조건
main() # 메인 함수 실행
728x90
반응형
'프로그램' 카테고리의 다른 글
[파이썬] OpenGL의 3D 사각형을 시점 바꾸기 (2) | 2024.07.14 |
---|---|
[파이썬] OpenGL 사용해서 3D 사각형 그리기 (1) | 2024.07.14 |
[파이썬] 문제 : 카페 메뉴 가격 출력 (0) | 2024.07.11 |
[파이썬] 문제 : 음식 재료 입력하면 만들 수 있는 음식 출력 (0) | 2024.07.11 |
[파이썬] 문제 : 반지름으로 넓이와 둘레 계산 (0) | 2024.06.28 |
댓글