pbj0812의 코딩 일기

[PYTHON] matplotlib 으로 원기옥(음식점 이름) 로고 그리기 본문

ComputerLanguage_Program/PYTHON

[PYTHON] matplotlib 으로 원기옥(음식점 이름) 로고 그리기

pbj0812 2022. 10. 26. 01:18

0. 목표

 - matplotlib 으로 원기옥(곰탕집) 로고 그리기

1.  실습

 1) 공식 세우기

  (1) 각 점 사이의 거리는 균일한 것으로 가정

  (2) 원의 중심을 지나는 직선의 방정식과 원의 방정식의 접점을 계산하여 이어주도록 함

  (3) 기울기를 균일하게 가져가기 위하여 tan(a) 의 값을 기울기로 이용

 2) 구현하기

  (1) library 호출

import matplotlib.pyplot as plt
import numpy as np

  (2) 원의 반지름, 접점의 개수(1 사분면 한정) 산정

r = 10
n = 25

  (3) 각도 구하기

degree = np.linspace(0, np.pi * 1/2, n)

  (4) tan(a) 구하기

tan_degree = []
for i in degree:
    tan_degree.append(np.tan(i))

  (5) x 구하기

x = []
for i in tan_degree:
    x.append(np.sqrt((r * r) / (i * i + 1)))

  (6) y 구하기

y = []
for i in range(len(tan_degree)):
    y.append(tan_degree[i] * x[i])

  (7) 그림 그리기

    - 끝점과 처음은 tan 값이 깔끔하지 않기에 선이 겹쳐보여 지워주고 따로 정의하여 그림

fig, ax = plt.subplots(1, 1, figsize = [5, 5])
for i in range(1, len(y) - 1):
    ax.plot([0, x[i]], [-r, y[i]], 'k') #우상
    ax.plot([0, -x[i]], [-r, y[i]], 'k') #좌상
    ax.plot([0, x[i]], [-r, -y[i]], 'k') #우하
    ax.plot([0, -x[i]], [-r, -y[i]], 'k') #좌하 
    
ax.plot([0, -r], [-r, 0], 'k')
ax.plot([0, r], [-r, 0], 'k')
ax.plot([0, 0], [-r, r], 'k')
    
ax.axis('off') # 숫자 지우기
ax.axis('square') # 정사각형

2. 결과

Comments