- 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번 사진 3개 사진 공통적으로 구석(corner) 에 증상이 있다는 특징이 있네요. 영상 찾아보니 이 가능성이 가장 높은 듯 합니다. https://www.youtube.com/watch?v=zxRBohepzwc ㄴ Liquid Crystal Leakage (액정 누설). ㄴ 손으로 밀어내니 주변으로 밀려나네요. 그래서 점으로 보이기도 하구요. 2025 10.29 500! 의 십진수 근사값 확인 500! = 1.22013682599111006870123878542304692625357434280319284219241358838 × 10^(1134) (참값, 울프람 알파) 2025 10.29 관련 라이브러리 https://allcalc.org/56263 sgn(x) 내장된 부호 함수(signum function)와 달리, 이 함수의 sgn(0)은 0을 반환합니다. 2025 10.29 라이브러리로 사용할 수 있습니다. (제작자 추천) 1. mylib 폴더에 넣기 2. Actions ➡️ library ➡️ refresh libraries 실행 하기 2025 10.29 ChatGPT-5 기호(÷, /, :) 자체는 의미적으로 같은 “나눗셈”을 뜻하지만, 문맥(사람이 쓰는 수학 vs 컴퓨터/프로그래밍)에 따라 해석 우선순위가 달라질 수 있습니다. 🔹 1️⃣ 전통 수학 표기 — ÷, /, : 수학 교과서, 논문, 일반 문서 등에서는 셋 다 의미적으로 “나누기”로 간주됩니다. 즉, 48÷2(9+3), 48/2(9+3), 48:2(9+3) 은 같은 의미로 받아들여야 합니다. 모두 사람의 수학 관행적 해석이 적용되어 48 ÷ 2 × (9+3) = 288 로 처리되죠. 즉, 기호가 바뀌어도 결과는 바뀌지 않습니다. 🔹 2️⃣ 컴퓨터·프로그래밍 문맥에서 / 사용 시 컴퓨터는 “생략된 곱셈(implicit multiplication)”을 따로 구분하지 못합니다. 따라서 다음 두 식은 완전히 다르게 인식됩니다. 표현 파이썬 등에서 해석 결과 48 / 2*(9+3) ((48 / 2) * (9+3)) 288 48 / 2(9+3) ❌ 문법 오류 (생략된 곱셈 인식 불가) — 즉, 컴퓨터 언어에서는 생략된 곱셈이 허용되지 않기 때문에, /는 반드시 명시적 *와 함께 써야 합니다. 🔹 3️⃣ “:” 기호의 경우 현대 수학에서는 “비율”을 나타내는 기호로 쓰입니다. a:b = \frac{a}{b} 따라서 (27 : 3(1+2)3) 같은 표현은 모호하거나 비표준적으로 간주됩니다. 대부분의 경우 계산기로는 입력 자체가 불가능합니다. ✅ 정리 기호 의미 결과 변화 주로 쓰이는 문맥 ÷ 나누기 없음 초중등 수학, 일반 표기 / 나누기 없음 (단, 프로그래밍에서는 생략 곱 불허) 수학/컴퓨터 : 비율 (또는 나누기 의미로 혼용) 보통 계산식에서는 사용 안 함 비, 비율 표기 🔹 결론 48 ÷ 2(9+3), 48/2(9+3), 48:2(9+3) 는 “수학적 의미”로는 동일하게 81로 해석됩니다. 하지만 프로그래밍이나 수식 파서(context) 에서는 /만 유효하고, 생략된 곱은 허용되지 않으며, :는 아예 다른 의미(비율)로 인식됩니다. 2025 10.28