- TI nspire
두 원이 주어졌을 때, 공통 내접선의 교점과 기울기를 구하는 방법 (프로그램)
문제 : 두 원에 대하여 c1={x1, y1, r1}, c2={x2, y2, r2} 로 입력받았다고 할 때,
공통내접선의 교점과 기울기를 구하려면?
- 내접선의 교점은 두 원의 중심을 이은 직선을 r1:r2 로 내분한 점(idp)과 같다.
ㄴ Internally Dividing Point
- 1.의 내분점(IDP) 과 c1 사이의 거리, IDP와 접선의 (c1에서의) 접점 사이의 거리를 구한다.
ㄴ IDP와 접선의 접점 사이 거리 = 내접선의 길이 * 내분 비율
- 각도 t1, t2를 구한다.
t1 = c1과 c2의 중점을 잇는 직선이 x축과 이루는 각
t2 = c1에서의 공통내접점 ~ 원의 중심 ~ IDP 사잇각
- 4. t1, t2를 이용해 기울기를 구한다.
아래는 TI-nspire 에서 작성된 프로그램입니다.
Define common_itl()= Prgm :© Request basic data for 2 circles :Request "{x1,y1,r1} List =",circle1,0 :Request "{x2,y2,r2} List =",circle2,0 : :© Check data compatibility :If (circle2[1]-circle1[1])^(2)+(circle2[2]-circle1[2])^(2)<(circle1[3]+circle2[3])^(2) Then : Disp "Too close" : Goto end :EndIf : :newList(3)→circle3 : :© Redefine vars to draw graph :circle1[1]→circle1.x :circle1[2]→circle1.y :circle1[3]→circle1.r :circle2[1]→circle2.x :circle2[2]→circle2.y :circle2[3]→circle2.r : :© Calculate Internally Dividing Point :((circle1[3]*circle2[1]+circle2[3]*circle1[1])/(circle1[3]+circle2[3]))→idp.x :((circle1[3]*circle2[2]+circle2[3]*circle1[2])/(circle1[3]+circle2[3]))→idp.y : :© Calculate Distances between IDP and the center of circles :Local circle1.ratio,circle2.ratio :((circle1[3])/(circle1[3]+circle2[3]))→circle1.ratio :((circle2[3])/(circle1[3]+circle2[3]))→circle2.ratio : :√((circle2[1]-circle1[1])^(2)+(circle2[2]-circle1[2])^(2))→distance.c1c2 :distance.c1c2*circle1.ratio→distance.c1idp :distance.c1c2*circle2.ratio→distance.c2idp : :√(distance.c1c2^(2)-(circle1[3]+circle2[3])^(2))→distance.citl :distance.citl*circle1.ratio→circle3.r :circle3.r→circle3[3] : :© Calculate Slope of Tangent Line :tan(((circle2[2]-circle1[2])/(circle2[1]-circle1[1])))→t1 :tan(((circle3[3])/(circle1[3])))→t2 : :tan(t1+t2+((π)/(2)))→idp.slope1 :tan(t1-t2+((π)/(2)))→idp.slope2 : :Disp "circle1=",circle1," and circle2=",circle2 :Disp "Intersection point of Common_ITL=",{idp.x,idp.y} :Disp "Slope of Common_ITL=",approx({idp.slope1,idp.slope2}) :c1_itp() : :Lbl end :EndPrgm
댓글1
-
세상의모든계산기
C1에서의 공통 내접선의 접점을 구하려면?
- C1과 C3을 연립하여 풀거나,
ㄴ C3는 (idp,x,idp.y)를 중심으로 하고 위에서 구한 circle3.r 을 반지름으로 하는 원 - c1->idp 벡터를 (t2)만큼 회전하고 scalar 곱하여 구할 수 있음.
[[cos(θ),−sin(θ)][sin(θ),cos(θ)]]→rot_matrix(θ)
((circle1.r)/(distance.c1idp))*rot_matrix(±t2)*(vector.c3-vector.c1)+vector.c1
- C1과 C3을 연립하여 풀거나,
세상의모든계산기 님의 최근 댓글
낮에 TV에서 영화 '말모이' 해주더라구요. 그래서 한번 물어 봤습니다. 2025 10.10 마지막 발언이 마지막 힌트이자 문제의 핵심이군요. 처음 들은 달이 8월이었다면 (15일인지 17일인지 확신할 수 없어서) 마지막 대사를 할 수 없지만, 처음 들은 달이 7월이었다면 (선택지가 16일 하나라서 확신이 가능하므로) 마지막 대사를 할 수 있다. 대사를 했으니 7월이다. 이제 이해되었습니다. 지금 보니까 이해가 되는데, 당시에는 왜 이해가 안됐을까요? 세가지 전제 하에 문제를 풀면 A는 마지막 대화 2줄만으로 C의 생일을 알 수 없어야 정상인데, 무슨 이유에서인지 "그럼 나도 앎!"이라고 선언해 버립니다. 알게 된 이유를 대화 속에서 찾을 수는 없습니다. 이 편견에 사로잡혀 빠져나오지 못하고 다른 길로 계속 샜나봅니다. 2025 10.09 (장*훈)님 (+10,000원) 계좌 후원(2025/10/09) 감사 드립니다. 2025 10.09 원래 식이 풀어진 상태에서는 두번째 인수 v가 분모, 분자에 섞여 있어서 계산기가 처리하지 못하는 듯 합니다. 이 때는 위에서와 반대로 분모 부분만 다른 문자(w)로 치환한 다음 completesquare(,v^2) 처리를 하면 일부분은 묶이는 듯 합니다. 하지만 여기서 처음 모양으로 더 이상 진행되진 않네요. 2025 10.08 전체 식에서 일부분(분모, 루트 내부)만 적용할 수는 없습니다. 번거롭더라도 해당 부분만 따로 끄집어 내서 적용하셔야 합니다. https://allcalc.org/30694#comment_30704 2025 10.08