Vẽ hình trong Latex với gói lệnh Tikz
Gói lệnh Tikz sẽ hỗ trợ bạn vẽ hình rất nhiều trong Latex, ta hãy cùng tìm hiểu về nó
3.1. Khai báo và môi trường vẽ
Khai báo gói lệnh:
\usepackage{tikz} \usetikzlibrary{calc,angles}
Môi trường vẽ:
\begin{tikzpicture} ....... \path .... \draw .... \fill ... ...... \end{tikzpicture}
Như vậy, một file vẽ hình bằng TikZ có thể đầy đủ để bạn biên dịch:
\documentclass{standalone} \usepackage{tikz} \usetikzlibrary{calc,angles} \begin{document} \begin{tikzpicture} ........... \draw .... ........... \end{tikzpicture} \end{document}
3.2. Các đối tượng hình học
Để vẽ một đối tượng trong TikZ, ta thường dùng lệnh:
\draw [parameters] (point) object;
trong đó parameters là các tham số tham gia vào việc vẽ hình, point là tọa độ điểm xuất phát bút vẽ và object
là đối tượng cần vẽ.
Ta có một vài tham số cơ bản:
dashed: nếu muốn vẽ nét đứt
line width=: nếu muốn thay đổi độ to, nhỏ của nét vẽ.
color=: nếu muốn tô màu nét vẽ.
rotate=: nếu muốn xoay đối tượng vẽ quanh góc tọa độ một góc nào đó.
Tọa độ điểm có thể dùng tọa độ Đề-các thông thường dạng (a,b) hoặc tọa độ cực dạng (fi : r).
3.2.1. Hệ trục tọa độ
Các đối tượng hình học luôn gắn với hệ tọa độ. Chúng ta có thể sử dụng một trong hai hệ tọa độ để xác định các đối tượng cần vẽ: Hệ tọa độ vuông góc Oxy hoặc tọa độ cực.
\begin{tikzpicture}[>=stealth] \draw[->](-3,0)--(3,0); \draw[->](0,-1.5)--(0,3); \draw[dashed] (0,1)--(2,1)--(2,0); \draw (2,1) circle (0.04); \draw (3,0) node[above]{$x$} (0,3) node[left]{$y$} (0,0) node[below left]{$O$}; \end{tikzpicture}
\begin{tikzpicture}[>=stealth] \def\r{sqrt(5)} \draw[->](-3,0)--(3,0); \draw[->](0,-3)--(0,3); \draw[dashed] (0,1)--(2,1)--(2,0); \draw (0,0) circle (\r); \draw (0,0)--(2,1); \draw (2,1) circle (0.04); \draw (3,0) node[above]{$x$} (0,3) node[left]{$y$} (0,0) node[below left]{$O$}; \end{tikzpicture}
Để dễ dàng cho bạn khi bắt đầu tập vẽ, ta nên tạo lưới tọa độ vùng vẽ để khi xem kết quả ta dễ dàng hình dung ra cách thức và rút kinh nghiệm cho việc sử dụng lệnh bằng cú pháp:
\draw[step=1,gray,thin](lower left corner) grid (upper right corner);
trong đó lower left corner là tọa độ điểm góc trái phía dưới và upper right corner là tọa độ điểm góc phải bên trên của vùng vẽ lưới
Chẳng hạn tạo một lưới tọa độ với vùng vẽ từ (¡2;¡1) đến (3;2) ta dùng lệnh như sau:
\begin{tikzpicture} \draw[step=1,gray,very thin] (-2,-1) grid (3,2); \end{tikzpicture}
3.2.2. Vẽ Điểm
Ta xác định một điểm trên hình vẽ bằng tọa độ. Trên hệ Oxy ta xác định điểm bằng tọa độ (x; y). Còn trên hệ tọa độ cực ta xác định điểm bằng (a : r)
Ví dụ ta muốn vẽ điểm A(3;–1) ta dùng lệnh sau:
\draw (3,-1) circle (1pt);
Chú ý rằng tọa độ của điểm trong TikZ ngăn cách hoành độ và tung độ bởi dấu “phẩy” (,) chứ không phải dấu “chấm phẩy” (;) như ta thường viết trong văn bản. Kết thúc lệnh vẽ luôn bằng dấu “chấm phẩy”(;).
Ta cũng có thể vẽ điểm bằng lệnh \draw (60:2) circle (1pt); . Khi đó ta sẽ vẽ được điểm B sao cho OB ˘ 2 và góc giữa OB và Ox là 600.
Hãy xem ví dụ dưới đây:
\begin{tikzpicture}[>=stealth] \draw[step=1,gray,very thin,opacity=0.3] (-3,-3) grid (3,3); \draw[->](-2,0)--(3,0); \draw[->](0,-2.5)--(0,1.5); \draw[dashed] (0,1) -| (2,0); \draw (2,1) circle (0.04); \draw (2.8,0) node[above]{$x$} (0,1.45) node[left]{$y$} (0,0) node[below left]{$O$}; \draw (-60:1.5) circle (0.04); \draw (-60:1.5) -- (0,0); \draw (1.5,1) node[above right]{$A$} (-60:1.45) node[below right]{$B$}; \draw[<-](-60:4mm) arc (-60:0:4mm); \draw (-30:5mm)node[below right]{$-60^{\circ}$}; \end{tikzpicture}
Chú ý rằng lệnh vẽ điểm là \draw (point) circle (radius); trong đó point là tọa độ điểm và radius là bán kính điểm.
3.2.3. Đoạn thẳng
Để vẽ một đoạn thẳng, ta cần xác định tọa độ hai điểm đầu mút của đoạn thẳng và dùng lệnh vẽ: \draw (point one) – (point two); , trong đó point one và point two là tọa độ hai điểm đầu mút của đoạn thẳng.
Ví dụ muốn vẽ đoạn thẳng AB với A(2;1) và B(–3,–1) ta dùng lệnh:
\begin{tikzpicture} \draw[step=1,gray,very thin] (-3,-2) grid (2,1); \draw (2,1)--(-3,-2); \end{tikzpicture}
Như vậy, ta có thể vẽ đường gấp khúc qua nhiều điểm liên tiếp. Chẳng hạn:
\draw (0,1)–(1,3)–(2,2)–(3,5)–(4,-1); .
Ta sẽ được đường gấp khúc sau:
\begin{tikzpicture} \draw[step=1,gray,very thin] (0,-1) grid (6,5); \draw (0,1)--(1,3)--(2,2)--(3,5)--(6,1); \end{tikzpicture}
Hơn thế nữa, nếu muốn vẽ đa giác khi biết các đỉnh, cũng thật là dễ dàng với việc vẽ đường khép kín khi sử dụng cycle như sau:
\draw(0,1)–(3,2)–(5,0)–cycle;
\begin{tikzpicture} \draw[step=1,gray,very thin] (0,0) grid (5,3); \draw (0,1)--(3,2)--(5,0)--cycle; \end{tikzpicture}
3.2.4. Đường tròn
Để xác định một đường tròn, bạn cần tọa độ tâm đường tròn và bán kính đường tròn. Khi đó lệnh vẽ cũng rất đơn giản: \draw (point) circle (radius); trong đó point là tọa độ tâm và radius là bán kính của đường tròn.
Chẳng hạn ta dùng đoạn lệnh sau, ta sẽ được hai đường tròn. Đường thứ nhất có tâm là gốc tọa độ, bán kính có độ lớn bằng 1.5. Đường thứ hai có tâm là điểm có tọa độ (600 : 1.5) và bán kính bằng 1.
\begin{tikzpicture} \draw (0,0) circle (1.5); \draw (60:2.5) circle (1); \end{tikzpicture}
3.2.5. Đường ê-líp
Giống như đường tròn, ê-líp cần tọa độ tâm và độ dài hai bán trục. Ta dùng lệnh:
\draw (point) ellipse ({xradius} and {yradius});
trong đó point là tâm, xradius là bán trục hoành và yradius là bán trục tung của ê-lípse.
\begin{tikzpicture}[thick] \draw[step=1,gray,very thin] (-3,-3) grid (4,3); \draw (0,0) ellipse ({3} and {1}); \draw (3,0) ellipse ({1} and {2}); \end{tikzpicture}
3.2.6. Cung tròn – ê-líp – đường cong
Để vẽ một cung tròn, cung ê-líp ta có thể dùng lệnh:
\draw(point)arc[start angle=,end angle=,x radius=,y radius=];
trong đó point là điểm xuất phát để vẽ cung, start angle là góc xuất phát, end angle là góc kết thúc, và x radius, y radius lần lượt là bán trục hoành và bán trục tung của cung.
Như vậy, nếu bạn muốn vẽ cung tròn thì giá trị x radius và y radius phải bằng nhau, nếu bạn vẽ cung ê-líp thì hai giá trị này khác nhau tùy mục đích vẽ của bạn. Ví dụ sau đây sẽ cho bạn thấy rõ hình ảnh của các cung qua các lệnh vẽ:
\draw (-1,0) arc [start angle=0,end angle=120,x radius=1,y radius=1]; \draw (-1,1) arc [start angle=120,end angle=300,x radius=2,y radius=1];
Ta được hình vẽ như sau:
\begin{tikzpicture}[thick,>=stealth] \draw[step=1,gray,very thin] (-3,-2) grid (2,3); \draw[->] (-3,0)--(2,0); \draw[->] (0,-2)--(0,3); \draw (-1,0) arc [start angle=0,end angle=120,x radius=1,y radius=1]; \draw (-1,1) arc [start angle=120,end angle=300,x radius=1,y radius=1]; \end{tikzpicture}
Ở hình vẽ trên, lệnh vẽ cung tròn xuất phát từ điểm (¡1;0), góc vẽ xuất phát từ 00 và kết thúc ở 1200, bán kính hoành và tung là bằng nhau và bằng 2 (vì cung tròn). Lệnh vẽ cung ê-líp xuất phát từ điểm (1;1), góc vẽ xuất phát từ 1200 và kết thúc ở 3000. Bán kính hoành là 3 và bán kính tung là 1.
Để đơn giản hơn, TikZ cung cấp cho ta lệnh vẽ cung tròn rút gọn:
\draw (point) arc (start angle: end angle: radius);
Tương tự, TikZ cũng cho ta lệnh vẽ cung ê-líp rút gọn:
\draw (point) arc (start angle : end angle : {x radius} and {y radius});
Các bạn hãy xem thử đoạn lệnh dưới đây và quan sát kết quả:
\begin{tikzpicture}[thick,>=stealth] \draw[step=1,gray,very thin] (-3,-2) grid (2,3); \draw[->] (-3,0)--(2,0); \draw[->] (0,-2)--(0,3); \draw (-1,0) arc (0 :120:1); \draw (-1,1) arc(120 : 300 : {2} and {1}); \end{tikzpicture}
Ngoài việc vẽ các cung theo đường sẵn có (tròn, ellipse,. . . , ta còn có thể vẽ các đường cong theo ý mình bằng một số lệnh sau:
Lệnh controls. Cú pháp:
\draw (point A) .. controls (point one) and (point two) .. (point B);
trong lệnh vẽ trên, point A và point B là hai điểm đầu và cuối của đường cong.
Các điểm point one và point two là hai điểm điều khiển đường cong.
Lệnh to. Cú pháp:
\draw (point one) to [bend left=] {point two};
trong đó bend left hoặc bend right độ cong của đường.
3.2.7. Hiển thị tên đối tượng trên hình vẽ
Để hiển thị các chữ viết, các tên điểm, tên đường, hay có thể là ghi chú thích trên hình vẽ, ta có lệnh:
\draw (point) node[parameters]{Content notes};
trong lệnh trên point là điểm đặt nội dung ghi chú, parameters là các tham số và Content notes chính là nội dung ghi chú. Các tham số ở đây có:
above: ghi chú ở phía trên điểm.
below: ghi chú ở phía dưới điểm.
left: ghi chú ở bên trái điểm.
right: ghi chú bên phải điểm.
Hẳn nhiên bạn cũng có thể kết hợp các tham số này kiểu above left, above right, below left và below right mà TikZ cũng không hề phàn nàn gì. Bạn cứ yên tâm mà sử dụng.
Bài tiếp theo Thử vẽ một vài hình đơn giản trong Latex