- 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을 연립하여 풀거나,
세상의모든계산기 님의 최근 댓글
교점이 2개 이상일때 모든 값을 구하는 법 계산기마다 가능/불가능이 갈릴 수도 있고, 수식에 따라 가능/불가능이 갈릴 수도 있죠. 불확실할때는 그래프로 확인하세요. 2025 12.16 T가 410인 해를 찾는 방법 -> 초기값을 입력하세요. [공학용 계산기] 공학용 계산기의 꽃? solve (솔브) 기능 이해하기 (Newton-Raphson 법, 뉴튼법) https://allcalc.org/11532 2025 12.16 참고 - [공학용 계산기] 정적분 계산 속도 벤치마크 비교 https://allcalc.org/9677 2025 12.11 다른 계산기의 경우와 비교 1. TI-nspire CAS ㄴ CAS 계산기는 가능한 경우 부정적분을 먼저하고, 그 값에 구간을 대입해 최종값을 얻습니다. ㄴ 부정적분이 불가능할 때는 수치해석적 방법을 시도합니다. 2. CASIO fx-991 ES Plus ㄴ CASIO 계산기의 경우, 적분할 함수에 따라 시간이 달라지는 것으로 알고 있는데, 정밀도를 확보할 별도의 알고리즘을 채택하고 있는 것이 아닐까 생각되네요. 2025 12.11 일반 계산기는 보통 리셋기능이 따로 없기 때문에, 다른 요인에 영향을 받을 가능성은 없어 보이구요. '원래는 잘 되었는데, 지금은 설정 값이 날아간다'면 메모리 값을 유지할만큼 배터리가 꾸준하게 공급되지 않기 때문일 가능성이 높다고 봐야겠습니다. - 태양광이 있을 때는 계산은 가능하지만, 서랍등에 넣으면 배터리가 없어서 리셋 https://blog.naver.com/potatoyamyam/223053309120 (교체 사진 참조) 1. 배터리 준비: * 다이소 등에서 LR54 (LR1130) 배터리를 구매합니다. (보통 4개 들이 1,000원에 판매됩니다. LR44와 높이가 다르니 혼동하시면 안됩니다.) 2. 준비물: * 작은 십자드라이버 (계산기 뒷면 나사용. 이것도 없으시면 다이소에서...) 3. 커버 분해: * 계산기 뒷면의 나사를 풀고, 머리 부분(윗부분)의 커버를 조심스럽게 분해합니다. (참고해주신 블로그 사진을 보시면 이해가 빠르실 겁니다.) 4. 배터리 교체: * 기존 배터리를 빼냅니다. * 새 LR54 배터리의 '+'극 방향을 정확히 확인하여 제자리에 넣어줍니다. (대부분의 경우 '+'극이 위로 보이도록 넣습니다.) 5. 조립: * 커버를 다시 닫고 나사를 조여줍니다. * 블로그 사진을 보니 배터리 연결선 등이 눌려서 씹혀 있네요. 원래 씹히도록 설계를 안하는데, 원래 그렇게 만들어 놓은 건지? 모르겠네요. 여튼 씹히면 단선될 가능성이 있으니, 잘 보시고 플라스틱 틈새 등으로 적절히 배치해서 안씹히게 하는 것이 좋습니다. 6. TAX 재설정: * 계산기의 전원을 켜고 TAX 요율을 10%로 다시 설정합니다. 2025 12.10