- 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
C1에서의 공통 내접선의 접점을 구하려면?
ㄴ C3는 (idp,x,idp.y)를 중심으로 하고 위에서 구한 circle3.r 을 반지름으로 하는 원
[[cos(θ),−sin(θ)][sin(θ),cos(θ)]]→rot_matrix(θ)
((circle1.r)/(distance.c1idp))*rot_matrix(±t2)*(vector.c3-vector.c1)+vector.c1