￿ 먼저, 일엽쌍곡선에서 z = 0인 곡선은 타원이 나온다 .

<<Graphics`Shapes`

hyperboloid = ParametricPlot3D[{5 Cosh[s] Cos[t], 4 Cosh[s] Sin[t], 3 Sinh[s]}, {s, -2, 2}, {t, 0, 2Pi}, Boxed → False, Axes→False, AspectRatio →Automatic] ;

ellipse = ParametricPlot3D[{5 Cos[t], 4 Sin[t], 0}, {t, 0, 2Pi}, Boxed → False, Axes→False, AspectRatio →Automatic] ;

h = Show[WireFrame[hyperboloid[[1]]], Graphics3D[{RGBColor[1, 0, 1], Thickness[.007], ellipse[[1]]}], Boxed → False] ;

[Graphics:HTMLFiles/index_8.gif]

h1 = ParametricPlot3D[{5 (t Cos[s] - Sin[s]), 4 (t Sin[s] + Cos[s]), 3 t}, {t, -2, 2}, {s, 0, 2 Pi}, DisplayFunction → False, Boxed → False, Axes→False] ;

h2 = ParametricPlot3D[{5 (t Cos[s] - Sin[s]), 4 (t Sin[s] + Cos[s]), -3 t}, {t, -2, 2}, {s, 0, 2 Pi}, DisplayFunction → False, Boxed → False, Axes→False] ;

sh1 = Show[WireFrame[h1[[1]]], DisplayFunction→ $DisplayFunction] ;

sh2 = Show[WireFrame[h2[[1]]], DisplayFunction→ $DisplayFunction] ;

th = Show[Graphics3D[{RGBColor[1, 0, 0], sh1[[1]]}], Graphics3D[{RGBColor[0, 0, 1], sh2[[1]]}], Boxed → False] ;

tha = Show[th, ViewPoint-> {2., 0., 0.}] ;

thb = Show[th, ViewPoint-> {0., 0., 2.}] ;

[Graphics:HTMLFiles/index_17.gif]

lg1 := (x + 5 Sin[1/12 Pi])/(5 Cos[1/12 Pi]) == (y - 4 Cos[1/12 Pi])/(4 Sin[1/12 Pi]) == z/3 ;

lg2 := (x + 5 Sin[4/12 Pi])/(5 Cos[4/12 Pi]) == (y - 4 Cos[4/12 Pi])/(4 Sin[4/12 Pi]) == -z/3 ;

lg3 := (x + 5 Sin[8/12 Pi])/(5 Cos[8/12 Pi]) == (y - 4 Cos[8/12 Pi])/(4 Sin[8/12 Pi]) == z/3 ;

lg4 := (x + 5 Sin[11/12 Pi])/(5 Cos[11/12 Pi]) == (y - 4 Cos[11/12 Pi])/(4 Sin[11/12 Pi]) == -z/3 ;

lg5 := (x + 5 Sin[14/12 Pi])/(5 Cos[14/12 Pi]) == (y - 4 Cos[14/12 Pi])/(4 Sin[14/12 Pi]) == z/3 ;

lg6 := (x + 5 Sin[17/12 Pi])/(5 Cos[17/12 Pi]) == (y - 4 Cos[17/12 Pi])/(4 Sin[17/12 Pi]) == -z/3 ;

sol1 = Solve[{lg1, lg2}, {x, y, z}]

sol2 = Solve[{lg2, lg3}, {x, y, z}]

sol3 = Solve[{lg3, lg4}, {x, y, z}]

sol4 = Solve[{lg4, lg5}, {x, y, z}]

sol5 = Solve[{lg5, lg6}, {x, y, z}]

sol6 = Solve[{lg6, lg1}, {x, y, z}]

{{x→ -(5 (1 + 3^(1/2)))/(1 + 2^(1/2) + 3^(1/2)), y→ (4 (-1 + 2 2^(1/2) + 3^(1/2)))/(1 + 2^(1/2) + 3^(1/2)), z→ -(3 (1 - 3^(1/2) + 6^(1/2)))/(1 + 2^(1/2) + 3^(1/2))}}

{{x→ -10/3^(1/2), y→0, z→3^(1/2)}}

{{x→ -(5 (1 + 3^(1/2)))/(1 + 2^(1/2) + 3^(1/2)), y→ -(4 (-1 + 2 2^(1/2) + 3^(1/2)))/(1 + 2^(1/2) + 3^(1/2)), z→ -(3 (1 - 3^(1/2) + 6^(1/2)))/(1 + 2^(1/2) + 3^(1/2))}}

{{x→ (5 (1 - 2 2^(1/2) + 3^(1/2)))/(-1 - 2^(1/2) + 3^(1/2)), y→ (4 (-1 + 3^(1/2)))/(-1 - 2^(1/2) + 3^(1/2)), z→ -(3 (-1 - 3^(1/2) + 6^(1/2)))/(1 + 2^(1/2) - 3^(1/2))}}

{{x→ (5 (-1 + 2 2^(1/2) + 3^(1/2)))/(1 + 2^(1/2) + 3^(1/2)), y→ -(4 (1 + 3^(1/2)))/(1 + 2^(1/2) + 3^(1/2)), z→ -(3 (1 - 3^(1/2) + 6^(1/2)))/(1 + 2^(1/2) + 3^(1/2))}}

{{x→5 2^(1/2), y→4 2^(1/2), z→3 3^(1/2)}}

￿ 6개의 직선 lg1, lg2, lg3, lg4, lg5, lg6 을 그리면,

line1[s_, t1_, t2_] := ParametricPlot3D[{5 (t Cos[s] - Sin[s]), 4 (t Sin[s] + Cos[s]), 3 t}, {t, t1, t2}, PlotRange→ {{-10, 10}, {-10, 10}, {-10, 10}}, Axes→False] ;

line2[s_, t1_, t2_] := ParametricPlot3D[{5 (-t Cos[s] - Sin[s]), 4 (-t Sin[s] + Cos[s]), 3 t}, {t, t1, t2}, PlotRange→ {{-10, 10}, {-10, 10}, {-10, 10}}, Axes→False] ;

tp1 = z/3/.sol1[[1]] ;

tp2 = z/3/.sol2[[1]] ;

tp3 = z/3/.sol3[[1]] ;

tp4 = z/3/.sol4[[1]] ;

tp5 = z/3/.sol5[[1]] ;

tp6 = z/3/.sol6[[1]] ;

l1 = line1[1/12 Pi, tp6, tp1] ;

l2 = line2[4/12 Pi, tp1, tp2] ;

l3 = line1[8/12 Pi, tp2, tp3] ;

l4 = line2[11/12 Pi, tp3, tp4] ;

l5 = line1[14/12 Pi, tp4, tp5] ;

l6 = line2[17/12 Pi, tp5, tp6] ;

tl = Show[Graphics3D[{RGBColor[1, 0, 0], l1[[1]], l3[[1]], l5[[1]]}], Graphics3D[{RGBColor[0, 0, 1], l2[[1]], l4[[1]], l6[[1]]}], PlotRange→ {{-10, 10}, {-10, 10}, {-10, 10}}] ;

[Graphics:HTMLFiles/index_53.gif]

point1 = {x/.sol1[[1]], y/.sol1[[1]], z/.sol1[[1]]} ;

point2 = {x/.sol2[[1]], y/.sol2[[1]], z/.sol2[[1]]} ;

point3 = {x/.sol3[[1]], y/.sol3[[1]], z/.sol3[[1]]} ;

point4 = {x/.sol4[[1]], y/.sol4[[1]], z/.sol4[[1]]} ;

point5 = {x/.sol5[[1]], y/.sol5[[1]], z/.sol5[[1]]} ;

point6 = {x/.sol6[[1]], y/.sol6[[1]], z/.sol6[[1]]} ;

dl1 = Graphics3D[Line[{point1, point4}]] ;

dl2 = Graphics3D[Line[{point2, point5}]] ;

dl3 = Graphics3D[Line[{point3, point6}]] ;

tdl = Show[dl1, dl2, dl3, PlotRange→ {{-10, 10}, {-10, 10}, {-10, 10}}]

ss1 = Show[Graphics3D[{EdgeForm[], h[[1]]}], Graphics3D[{Thickness[.005], tl[[1]]}], Graphics3D[{RGBColor[0, 1, 0], Thickness[.005], tdl[[1]]}], Boxed→False] ;

ss2 = Show[Graphics3D[{RGBColor[1, 0, 1], Thickness[.005], ellipse[[1]]}], Graphics3D[{RGBColor[0, 1, 0], Thickness[.005], tdl[[1]]}], Graphics3D[{Thickness[.005], tl[[1]]}], Boxed→False]

[Graphics:HTMLFiles/index_68.gif]

[Graphics:HTMLFiles/index_69.gif]

-Graphics3D -

￿ 위에서 그린 그림을 위에서 아래로 보면 아래와 같다 .

Show[ss1, ViewPoint-> {0., 0., 2.}] ;

Show[ss2, ViewPoint-> {0., 0., 2.}] ;

[Graphics:HTMLFiles/index_74.gif]

Solve[{lg1, lg4}, {x, y, z}]

{{x→ -(10 2^(1/2))/(-1 + 3^(1/2)), y→0, z→ -(3 (1 + 3^(1/2)))/(-1 + 3^(1/2))}}

Solve[{lg2, lg5}, {x, y, z}]

{{x→ (10 3^(1/2))/(-3 + 3^(1/2)), y→ (8 3^(1/2))/(-3 + 3^(1/2)), z→ -(3 (3 + 3^(1/2)))/(-3 + 3^(1/2))}}

Solve[{lg3, lg6}, {x, y, z}]

{{x→ (5 (-1 + 3^(1/2)))/(-1 + 2^(1/2) + 3^(1/2)), y→ -(4 (1 + 2 2^(1/2) + 3^(1/2)))/(-1 + 2^(1/2) + 3^(1/2)), z→ -(3 (1 + 3^(1/2) + 6^(1/2)))/(-1 + 2^(1/2) + 3^(1/2))}}

￿ 세 평면을 그리면 아래와 같다 .

plane1 = Show[Graphics3D[{EdgeForm[], Polygon[{point1, point2, point4, point5}]}], Boxed→False] ;

plane2 = Show[Graphics3D[{EdgeForm[], Polygon[{point2, point3, point5, point6}]}], Boxed→False] ;

plane3 = Show[Graphics3D[{EdgeForm[], Polygon[{point3, point4, point6, point1}]}], Boxed→False] ;

￿ 세 평면 위에 교점이 생긴다 .

Show[plane1, plane2, plane3, tdl]

[Graphics:HTMLFiles/index_90.gif]