본문 바로가기

Python

12. 거북이 문제 (삼각형)만들기


출처: 누구나 쉽게 배우는 파이썬 프로그래밍 

(책 내용중 일부 수정 발췌하였습니다. 문제시 비공개로 전환하겠습니다.)



12. 거북이 문제 (삼각형)만들기


정삼가각형 그리기 


>>> t.reset()

>>> t = turtle.Pen()

>>> t.forward(100)

>>> t.left(120)

>>> t.forward(100)

>>> t.left(120)

>>> t.forward(100)

>>> 







직삼각형 만들기 


>>> t.reset()

>>> t = turtle.Pen()

>>> t.forward(50)

>>> t.left(104.47751218592992)

>>> t.forward(100)

>>> t.left(151.04497562814015)

>>> t.forward(100)

>>> 





104.47751218592992 도와 151.04497562814015 도라는 값을 어떻게 찾아냈을까?


삼각형의 한 변의 길이를 결정했다면 파이썬과 약간의 삼각법으로 내각을 계산할 수 있다.

다음의 그림에서 각도 a 를 알고 있다면 거북이가 회전해야 할 각도 b(외각)를 구할 수 있다.

각도 a 와 b의 합은 180도다.




올바른 공식을 알고 있다면 내각을 구하는 것은 어려운 일이 아니다.

예를 들어, 밑변의 길이가 50 픽셀(이것을 C 라고 하자) 다른 변인 A와 B의 길이가 각각 100 픽셀인 

삼각형을 만든다고 해보자. 





이 값을 얻기 위해서 파이썬의 math 모듈을 이용하는 간단한 파이썬 프로그램을 다음과 같이 만들 수 있다.


>>> A = 100

>>> B = 100

>>> C = 50

>>> a = math.acos((math.pow(A,2) + math.pow(C,2) - math.pow(B,2)) / (2*A*C))       

>>> print(a)

1.318116071652818

>>> 



먼저 math 모듈을 임포트한 다음에 각 변에 대한 변수들(A, B, C)을 생성한다.

①에서 우리는 math  함수인 acos(아크 코사인, arc cosine)을 이용하여 그 각을 계산한다.

이 계산식은 1.318116071652818 이라는 라디안(radian) 값을 반환한다.

라디안은 각도를 측정하는 데 사용하는 또 다른 단위다.





라디안 값은 math 함수인 degree로 각도 변환될 수 있으며, 180도에서 이 값을 빼면 

외각(거북이가 회전해야 할 값)을 구할 수 있다.






거북이가 그 다음에 회전할 방정식도 비슷하다.







물론 각도를 구하기 위해서 이 방적식을 반드시 사용해야 할 필요는 없다. 

그냥 여러분이 보기에 좋을 때까지 각도를 돌려보면서 작업을 할 수 도 있을 것이다.