pbj0812의 코딩 일기

[PYTHON] 기하학 로고 그리기 본문

ComputerLanguage_Program/PYTHON

[PYTHON] 기하학 로고 그리기

pbj0812 2022. 11. 6. 23:58

0. 목표

 - 기하학 로고 그리기

1. 구상

 - tan 함수로 x 에 대한 y 값 만들고 모든 변들의 관계가 1 : 2 라는 사실을 이용해서 그리기

2. 실습

 1) library 호출

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse, Polygon

 2) 숫자 만들기

x = -1
y = abs(x) * np.tan(1/3 * np.pi)
y_1 = 1/3 * y
y_2 = 2/3 * y

 3) 그림 그리기

fig, ax = plt.subplots(1, 1, figsize = [10, 10])

# 큰 삼각형
ax.plot([x, 0], [-y_1, y_2], linestyle='solid', linewidth=20, solid_capstyle='round', color='black') # 좌측 빗변
ax.plot([x, -x], [-y_1, -y_1], linestyle='solid', linewidth=20, solid_capstyle='round', color='black') # 아래
ax.plot([0, -x], [y_2, -y_1], linestyle='solid', linewidth=20, solid_capstyle='round', color='black') # 우측 빗변

# 작은 삼각형
ax.plot([2/3 * x, -1/3 * x], [0, 1/2 * y_2], linestyle='solid', linewidth=20, solid_capstyle='round', color='black') # 좌상단
ax.plot([-1/3 * x, -1/3 * x], [y_1, -y_1], linestyle='solid', linewidth=20, solid_capstyle='round', color='black') # 좌하단
ax.plot([2/3 * x, -1/3 * x], [0, -y_1], linestyle='solid', linewidth=20, solid_capstyle='round', color='black') # 좌하단

# 가운데 선
ax.plot([2/3 * x, 0], [0, 0], linestyle='solid', linewidth=20, solid_capstyle='round', color='black') # 가운데
ax.plot([0, -1/3 * x], [0, 1/2 * y_2], linestyle='solid', linewidth=20, solid_capstyle='round', color='black') # 우상단
ax.plot([0, -1/3 * x], [0, -1/2 * y_2], linestyle='solid', linewidth=20, solid_capstyle='round', color='black') # 우하단

# 색 칠하기
ax.add_patch(Polygon([(2/3 * x, 0), (0, 0), (-1/3 * x, 1/2 * y_2)], facecolor = '#B8E5FA')) # 우상단
ax.add_patch(Polygon([(2/3 * x, 0), (0, 0), (-1/3 * x, -1/2 * y_2)], facecolor = '#1D67B0')) # 우하단
ax.add_patch(Polygon([(-1/3 * x, 1/2 * y_2), (0, 0), (-1/3 * x, -1/2 * y_2)], facecolor = '#37BDF3')) # 오른쪽

ax.axis('off') # 숫자 지우기
ax.axis('square'); # 정사각형

3. 결과

4. 참고

 - Matplotlib 선 종류 지정하기

Comments