두 원 사이의 관계를 알 수 있는 프로그램
오늘은 Python의 Turtle모듈을 이용하여
두 원 사이의 관계를 나타내주는 프로그램을
만들것이다.
먼저 저 프로그램을 만들려면 무엇을
처음에 기획하고, 만들어야 할까?
1. 사용자에게 입력을 받아야한다.
2. 좌표평면을 구하고, 원을 그릴수 있어야한다
3. 두 원 사이의 관계를 구해야한다.
(내부에 있다, 외부에 있다, 겹친다 등)
자 그럼 이제 프로그램을 어떤 방식으로
짜야할까?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | import turtle import math t = turtle.Turtle() t.shape("turtle") #입력받기 x1 = float(turtle.numinput("input", "큰 원의 중심좌표 x1: ")) y1 = float(turtle.numinput("input", "큰 원의 중심좌표 y1: ")) r1 = float(turtle.numinput("input", "큰 원의 반지름: ")) x2 = float(turtle.numinput("input", "작은 원의 중심좌표 x2: ")) y2 = float(turtle.numinput("input", "작은 원의 중심좌표 y2: ")) r2 = float(turtle.numinput("input", "작은 원의 반지름: ")) #두 점사이의 거리 구하기 X_length = float(x2-x1) Y_length = float(y2-y1) Dpl = math.sqrt((X_length*X_length)+(Y_length*Y_length)) # X축 그리기 t.goto(-300,0) t.forward(600) t.right(120) t.forward(20) t.goto(300,0) t.right(120) t.forward(20) t.goto(300,0) t.left(60) # y축 그리기 t.goto(0,0) t.right(90) t.forward(300) t.right(120) t.forward(20) t.goto(0,300) t.right(120) t.forward(20) t.goto(0,300) t.left(60) t.forward(600) #큰원 그리기 t.pu() t.goto(x1-r1, y1) t.pd() t.circle(r1) #작은원 그리기 t.pu() t.goto(x2-r2, y2) t.pd() t.circle(r2) #두원의 위치 상태 구하기 if (r1-r2) > Dpl : turtle.write("두번째 원이 첫번째 원의 내부에 있습니다.") elif (r1-r2) == Dpl or (r1+r2) == Dpl : turtle.write("두번째 원이 첫번째 원과 겹칩니다.") elif (r1-r2) < Dpl and (r1+r2) > Dpl : turtle.write("두번째 원과 첫번째 원이 두점에서 만납니다.") else : turtle.write("두번째 원이 첫번째 원과 겹치지 않습니다.") | cs |
이 코드는 내가 미리 짜놓은 코드이다.
하나 하나 이해해 보자.
먼저 turtle모듈을 불러오는 것등은 생략하고,
바로 입력부터 보도록하자.
파이썬에서 입력받는 방법은 여러개가 있는데
나는 turtle.numinput을 선택하였다.
이것이 일반 입력 받기와 다른점은 UI을
창에 띄워 입력받는 다는 점이다.
이렇게 하면 사용자가 사용하기가 더욱 수월할
것이다. 그러면 원을 구할때 필요한 반지름,
좌표를 입력받고 이제 두 원 사이의 관계를
구할때 필요한 거리를 구해보자.
점과 점 사이의 거리 공식과
math에 정의되어있는 sqrt(제곱근)을
이용해주자!
그럼 그 다음엔 좌표 그리기 인데 이것은
사람마다 그리는 취향이 다르므로
건너 뛰도록하자.
자 그럼 남은건 가장 중요한 두 원의 관계를 나타내는 것이다. 이것 또한 원의 공식을 하나
이용하면 편하다.
http://terms.naver.com/entry.nhn?docId=2073725&cid=47324&categoryId=47324
(이곳을 참조하면 편하다)
자 그럼이제 if문을 이용해서 원의 관계를
구하는 코드를 위 코드처럼 만들고,
출력해주면 끝이다.
'IT전공관련' 카테고리의 다른 글
객체지향이란 무엇일까? (0) | 2018.03.31 |
---|---|
Python Turtle 명령어 정리 (0) | 2018.03.31 |
argument와 parameter의 차이 (0) | 2018.03.31 |
자바 메소드 오버로딩 (0) | 2018.01.31 |
유니티로 룰렛을 만들어보자!(2) (0) | 2018.01.31 |