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'); # 정사각형