TikZ 和解析几何

TikZ 和解析几何

我有四个给定点,例如

A(3,2)
B(5,4)
C(-3, 4)
D(-3, 0)

使用 TikZ/PgfPlots,如何在笛卡尔坐标系中绘制它们,显示点,每个点都附有其名称(A,B,C,D),然后绘制四边形 ABCD 的边?

我是 TikZ 的新手:)

答案1

下面我列出了两个选项:第一个选项使用“纯”TikZ,第二个选项使用伟大的tkz-euclide包裹。

一种可能性(代码有解释性注释):

\documentclass{article} 
\usepackage{tikz}

\tikzset{
smalldot/.style={
  circle,
  fill,
  inner sep=1.5pt
  }
}

\begin{document} 

\begin{tikzpicture}
% The x-axis
\draw[->] 
  (-3.5,0) -- (5.5,0);
% The y-axis
\draw[->] 
  (0,-0.5) -- (0,4.5);
% Ticks for x-axis
\foreach \Valor in {-3,...,5}
  \draw (\Valor,2pt) -- (\Valor,-2pt) node[below] {\Valor};
% Ticks for y-axis
\foreach \Valor in {1,...,4}
  \draw (-2pt,\Valor) node[left] {\Valor} -- (2pt,\Valor);
% define coordinates at the desired points
\path
  coordinate (A) at (3,2)
  coordinate (B) at (5,4)
  coordinate (C) at (-3,4)
  coordinate (D) at (-3,0);
% draw lines between the coordinates  
\draw (A) -- (B) -- (C) -- (D) -- cycle;
% Label the points
\foreach \Nombre/\Pos in {A/right,B/right,C/left,D/left}
{
  \node[\Pos] at (\Nombre) {$\Nombre$};
  \node[smalldot] at (\Nombre) {};
}
\end{tikzpicture}

\end{document}

在此处输入图片描述

如果你刚开始使用 TikZ,我建议你使用tkz-euclide基于 TikZ 构建的软件包,它具有一系列更直观的命令和一些预定义功能,可以帮助你轻松绘制欧几里得图形(将下面的代码与使用“纯” TikZ 的代码进行比较):

\documentclass{article} 
\usepackage{tkz-euclide}

\begin{document} 

\begin{tikzpicture}
\tkzInit[xmax=5,xmin=-4,ymax=4,ymin=-1]
\tkzAxeXY
\tkzGrid
\tkzDefPoint[label=right:$A$](3,2){A}
\tkzDefPoint[label=right:$B$](5,4){B}
\tkzDefPoint[label=left:$C$](-3,4){C}
\tkzDefPoint[label=left:$D$](-3,0){D}
\tkzDrawSegments[color=red!70!black,line width=1pt](A,B B,C C,D D,A)
\tkzDrawPoints[color=red!70!black](A,B,C,D)
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

pgfplots

\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines=middle,enlargelimits,
    xlabel=$x$,ylabel=$y$,nodes near coords]
\addplot+[point meta=explicit symbolic] coordinates{
(3,2)  [A]
(5,4)  [B]
(-3, 4)[C]
(-3, 0)[D]
}; % Add "-- cycle" if you want to close the drawing
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案3

现在有了 MetaPost(和 LuaLaTeX)。

\documentclass[12pt, border = 5bp]{standalone}
\usepackage{luamplib}
    \mplibtextextlabel{enable}
\begin{document}
\begin{mplibcode}
    u = 1.5cm; len := 3bp;
    xmin := -3.5u; xmax := 5.75u; ymin := -.5u; ymax := 4.75u;
    pair A, B, C, D; A = u*(3,2); B = u*(5,4); C = u*(-3, 4); D = u*(-3,0);
    beginfig(1);
        labeloffset := 5bp;
        for i = -3 upto 5:
            if i <> 0: draw (i*u, -len) -- (i*u, len); 
                label.bot("$" & decimal i & "$", (i*u, 0)); fi
        endfor
        for j = 1 upto 4:
            draw (-len, j*u) -- (len, j*u);
            label.lft("$" & decimal j & "$", (0, j*u));
        endfor
        drawarrow (xmin, 0) -- (xmax, 0); drawarrow (0, ymin) -- (0, ymax);
        draw A -- B -- C -- D -- cycle; 
        labeloffset := 3bp;
        dotlabel.rt("$A$", A); dotlabel.rt("$B$", B);
        dotlabel.lft("$C$", C); dotlabel.ulft("$D$", D);
        label.llft("$O$", origin); label.bot("$x$", (xmax, 0)); label.lft("$y$", (0, ymax));
    endfig;
\end{mplibcode}
\end{document}

在此处输入图片描述

当我这样做时:另一个带有mfpic包裹:

\documentclass[12pt]{scrartcl}
\usepackage[metapost]{mfpic}
    \setlength{\mfpicunit}{1cm}
\opengraphsfile{\jobname}
\begin{document}
\begin{mfpic}[1.5]{-3.5}{5.75}{-0.5}{4.75}
    \pointdef{A}(3, 2)
    \pointdef{B}(5, 4)
    \pointdef{C}(-3, 4)
    \pointdef{D}(-3, 0)
    \polygon{\A, \B, \C, \D}
    \point{\A, \B, \C, \D}
    \doaxes{xy}
    \xmarks{-3 upto -1}\xmarks{1 upto 5}
    \ymarks{1 upto 4}
    \tlpointsep{3pt}
    \tlabels{[tr](0, 0){$O$} [tc](\xmax, 0){$x$} [cr](0, \ymax){$y$}
        [cl](\Ax, \Ay){$A$} [cl](\Bx, \By){$B$} [cr](\Cx, \Cy){$C$} [br](\Dx, \Dy){$D$}}
    \tlpointsep{6pt}
    \axislabels{x}{{$-3$}-3, {$-2$}-2, {$-1$}-1, {$1$}1, {$2$}2, {$3$}3, {$4$}4, {$5$}5}
    \axislabels{y}{{$1$}1, {$2$}2, {$3$}3, {$4$}4}
\end{mfpic}
\closegraphsfile
\end{document}

首先使用 LaTeX 运行它(使用任何引擎),然后使用 MetaPost,然后再次使用 LaTeX 运行它。

在此处输入图片描述

编辑再次,这次使用 Asymptote,一如既往的简短和高效。使用命令运行asy

import graph;
unitsize(1.5cm);
real Xmin=-4, Xmax=5, Ymin=-.5, Ymax=5;
pair A = (3, 2), B = (5,4), C = (-3, 4), D = (-3, 0);
draw (A--B--C--D--cycle);
xaxis(xmin=Xmin, xmax=Xmax, Ticks(Step=1, OmitTick(0, Xmax)), arrow=Arrow);
yaxis(ymin=Ymin, ymax=Ymax, Ticks(Step=1, OmitTick(0, Ymax)), arrow=Arrow);
label("$x$", (Xmax, 0), S); label("$y$", (0, Ymax), W);
dot(Label("$A$", A, E)); label("$O$", (0, 0), SE); dot(Label("$B$", B, E));
dot(Label("$C$", C, W)); dot(Label("$D$", D, NW));

在此处输入图片描述

答案4

试试这个。如果需要,你只需要修复轴。

\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}
    \draw[->] (-10,0) -- (10,0) node[below] {$x$};
    \draw[->] (0,-5) -- (0,10) node[left] {$y$};

    \draw (3,2) -- (5,4) -- (-3,4) -- (-3,0);

\end{tikzpicture}
\end{document}

相关内容