我如何才能智能地创建这些以毫米为单位的对齐图像?
我使用 GeoGebra 生成下面显示的代码。
\documentclass[border=5mm]{standalone}
\usepackage{pgf,tikz}
\begin{document}
\begin{tikzpicture}
\draw (0mm,0mm) ellipse (50mm and 20mm);
\draw (150mm,0mm) circle (20mm);
\draw (-50mm,-72.5mm)-- (50mm,-72.5mm);
\draw (-50mm,-107.50mm)-- (50mm,-107.50mm);
\draw (-50mm,-72.5mm)-- (-50mm,-107.50mm);
\draw (50mm,-107.50mm)-- (50mm,-72.5mm);
\draw (110mm,-72.5mm)-- (190mm,-72.5mm);
\draw (110mm,-107.50mm)-- (190mm,-107.50mm);
\draw (110mm,-72.5mm)-- (110mm,-107.50mm);
\draw (190mm,-107.50mm)-- (190mm,-72.5mm);
\end{tikzpicture}
\end{document}
我想通过使用中心作为参考来定义几何图形的位置来改进代码。将椭圆的中心置于位置(0,0)
。
尺寸不必显示。它们仅用于设置轮廓尺寸。
链接这个视频展示了我想学的东西。我是巴西人,所以是葡萄牙语的。
答案1
您可以使用positioning
设置中心点,然后calc
绘制形状。我已将其缩放至一半大小,以便更好地适应正常页面大小,但您可以通过设置 来获取真实大小x=1mm,y=1mm
。
\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,calc}
\begin{document}
\begin{tikzpicture}[x=0.5mm,y=0.5mm]% Set the scale (default x and y is 1cm)
\coordinate (a11);
\coordinate[right=150 of a11](a12);
\coordinate[below=90 of a11](a21);
\coordinate[right=150 of a21](a22);
%%
\draw[ultra thick] (a11) circle (50 and 20);
\draw[dash dot] ($(a11)-(50+10,0)$) -- +($2*(50+10,0)$);
\draw[dash dot] ($(a11)-(0,20+10)$) -- +($2*(0,20+10)$);
%%
\draw[ultra thick] (a12) circle (20);
\draw[dash dot] ($(a12)-(20+10,0)$) -- +($2*(20+10,0)$);
\draw[dash dot] ($(a12)-(0,20+10)$) -- +($2*(0,20+10)$);
%%
\draw[ultra thick] ($(a21)-(50,17.5)$) rectangle +(50*2,17.5*2);
\draw[dash dot] ($(a21)-(50+10,0)$) -- +($2*(50+10,0)$);
\draw[dash dot] ($(a21)-(0,17.5+10)$) -- +($2*(0,17.5+10)$);
%%
\draw[ultra thick,rounded corners=8] ($(a22)-(50,17.5)$) rectangle +(50*2,17.5*2);
\draw[dash dot] ($(a22)-(50+10,0)$) -- +($2*(50+10,0)$);
\draw[dash dot] ($(a22)-(0,17.5+10)$) -- +($2*(0,17.5+10)$);
\end{tikzpicture}
\end{document}
答案2
这是一个开始。
- 您的示例中有很多不必要的东西(对于 MWE 而言)(
\pagestyle{empty}
例如奇怪的颜色定义和 -5.428299960530308)。 - 您是用其他软件生成代码的吗?
- 我删除了所有内容,并
article
在大多数情况下将其用作“更好的” MWE 文档类。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes,positioning}
\begin{document}
\begin{tikzpicture}[node distance=30mm]
\node[circle,draw,minimum width = 20mm,anchor=center] (n1) {Circle};
\node[ellipse,draw,minimum width = 20mm,minimum height = 10mm,anchor=center,below=20mm of n1] (n2) {Ellipse};
\node[rectangle,draw,minimum width = 20mm,minimum height = 10mm,anchor=center,right=20mm of n2] (n3) {Rectangle};
\end{tikzpicture}
\end{document}