[Tikz] Mặt cầu và thiết diện cắt bởi mặt phẳng

Bài toán: Trong không gian $Oxyz$, cho điểm $I(-3;0;1)$. Mặt cầu $(S)$ có tâm $I$ và cắt mặt phẳng $(P)\colon x-2y-2z-1=0$ theo một thiết diện là hình tròn. Biết rằng diện tích của hình tròn này bằng $\pi$. Viết phương trình mặt cầu $(S)$.

Có nhiều cách để vẽ hình này bằng Tikz, dưới đây là một cách thực hiện.

Trước tiên, ta cần khai báo gói lệnh và các thư viện cho việc vẽ hình. Tôi thường khai báo như sau:

\usepackage{tikz,tkz-tab}
\usetikzlibrary{calc, angles, quotes, intersections, positioning, patterns}

Thư viện nào không cần thiết, bạn có thể xóa đi.

Giả sử khoảng cách từ tâm $I$ đến mặt phẳng $(P)$ là $h$, bán kính đường tròn thiết diện là $a$, bán kính mặt cầu $(S)$ là $r$. Nếu định trước $h$ và $a$, ta có các công việc cần thực hiện như sau:

Tính bán kính mặt cầu

Bán kính mặt cầu được tính bằng $r=\sqrt{h^2+a^2}$, nên ta định nghĩa biến $r$ như sau:

\pgfmathsetmacro{\r}{sqrt(\h*\h+\a*\a)}

Vẽ mặt cầu

\draw[red] (0,\h) circle (\r);

Vẽ đường tròn thiết diện

Hình biểu diễn của đường tròn thiết diện trong không gian là một elip, được ghép lại bởi hai mảnh nửa elip. Ta có thể tô màu cho elip này bằng lệnh \fill.

\draw[green, dashed] (\a,0) arc [start angle=0, end angle=180, x radius=\a, y radius=\b];
\fill[green!10] (\a,0) arc [start angle=0, end angle=180, x radius=\a, y radius=\b];
\draw[green] (-\a,0) arc [start angle=180, end angle=360, x radius=\a, y radius=\b];
\fill[green!10] (-\a,0) arc [start angle=180, end angle=360, x radius=\a, y radius=\b];

Cuối cùng là một số đường nét, các điểm và ký hiệu góc vuông điểm xuyến thêm. Dưới đây là đoạn code đầy đủ:

\begin{tikzpicture}
	\def \h{1.8}
	\def \a{1.6}
	\def \b{0.3}
	\pgfmathsetmacro{\r}{sqrt(\h*\h+\a*\a)}
	\draw[green, dashed] (\a,0) arc [start angle=0, end angle=180, x radius=\a, y radius=\b];
	\fill[green!10] (\a,0) arc [start angle=0, end angle=180, x radius=\a, y radius=\b];
	\draw[green] (-\a,0) arc [start angle=180, end angle=360, x radius=\a, y radius=\b];
	\fill[green!10] (-\a,0) arc [start angle=180, end angle=360, x radius=\a, y radius=\b];
	\draw[dashed] (-\a,0)--(0,\h)--(\a,0) (\a/2,\h/2) node[right]{$R$};
	\filldraw (0,0) circle (0.05);
	\filldraw[red] (0,\h) circle (0.05);
	\draw[dashed] (0,0)--(\a,0) (\a/2,-0.1) node[above]{$r$};
	\draw[dashed] (0,0)--(0,\h) node[above]{$I$} (0,\h/2) node[right]{$h$};
	\coordinate (H) at (0,\h);
	\coordinate (O) at (0,0);
	\coordinate (A) at (\a,0);
	\draw[red] (0,\h) circle (\r);
	\kihieuvuong[size=6pt](H,O,A);
\end{tikzpicture}

Lưu ý:

Lệnh \kihieuvuong là được định nghĩa và khai báo cùng với các thư viện của tikz ở phần đầu.

\tikzset{every picture/.style={scale=1,font=\fontsize{8pt}{1pt}\selectfont}}
\def\kihieuvuong[size=#1](#2,#3,#4){
	\draw[gray] ($(#3)!#1!(#2)$)--($($(#3)!#1!(#2)$)+($(#3)!#1!(#4)$)-(#3)$)--($(#3)!#1!(#4)$);
}

Chúc các bạn thành công!

Bình luận

Chia sẻ