我一直在使用 tikz 绘制一些图片,想知道我是否可以说出一个数字。
例如,我选取圆上一个$A$
具有位置角的点,以及一条过该点且具有方向角(垂直于位置矢量)的 $\alpha=45\degree$
线。$\beta=\alpha+90\degree=135\degree$
后来我把重点改为$A$
,$\alpha=60\degree$
然后$\beta=150 \degree$
。
现在我手动更改两个角度。如果我可以命名第一个角度$\alpha$
和第二个角度$\beta$
,那么我只需要进行$\alpha$: $\beta$
相应的更改即可。
有没有办法做到这一点,命名一个数字?谢谢!
答案1
您还可以tikzmath
使用math
tikz图书馆
\documentclass[border=1cm,multi]{standalone}
\usepackage{tikz}
\usetikzlibrary{math,angles,quotes}
\begin{document}
\tikzmath{
\R=2; % circle radius
\d=3; % distance between A and B
\a1=30; % angle alpha
\a2=\a1 + 90; % angle beta
}
\begin{tikzpicture}
\draw (0,0)circle[radius=\R cm];
\path (\a1:\R) coordinate[label=\(A\)] (A) +(\a2:\d)coordinate[label=\(B\)](B);
\draw (A)--(B);
\coordinate(O) at(0,0);
\coordinate(x) at(1,0);
\draw(x)--(O)--(A);
\pic[draw,"\(\alpha=\a1\)",angle eccentricity=2.25]{angle=x--O--A};
\end{tikzpicture}
\tikzmath{
\R=2; % circle radius
\d=3; % distance between A and B
\a1=60; % angle alpha
\a2=\a1 + 90; % angle beta
}
\begin{tikzpicture}
\draw (0,0)circle[radius=\R cm];
\path (\a1:\R) coordinate[label=\(A\)] (A) +(\a2:\d)coordinate[label=\(B\)](B);
\draw (A)--(B);
\coordinate(O) at(0,0);
\coordinate(x) at(1,0);
\draw(x)--(O)--(A);
\pic[draw,"\(\alpha=\a1\)",angle eccentricity=2.25]{angle=x--O--A};
\end{tikzpicture}
\end{document}
答案2
您可以使用insert path
来插入大致相同的路径。这在 MWE 中有说明,其中大部分是插图。
\documentclass[tikz,border=3.14mm]{standalone}
\begin{document}
\begin{tikzpicture}[insert points/.style={insert path={%
(#1:1) coordinate(A) (#1+90:1) coordinate(B)}}]
% with 45 degrees
\path[insert points=45];
% only illustration
\draw circle (1);
\foreach \X in {A,B}
{\node[fill,inner sep=1pt,label=right:\X] at (\X){};}
% second example (shifted to avoid interference)
\begin{scope}[xshift=4cm]
% with 60 degrees
\path[insert points=60];
% only illustration
\draw circle (1);
\foreach \X in {A,B}
{\node[fill,inner sep=1pt,label=right:\X] at (\X){};}
\end{scope}
\end{tikzpicture}
\end{document}
答案3
如果我理解正确的话,您需要以一定的角度在圆上放置一个点 A,然后将一个点放置在与该 90 度半径垂直的方向上。
然后你希望这两个角度是相对的。可以使用 LaTeX 宏定义一个常量\def
,使用库定义另一个常量,calc
该库允许将一个点相对于具有给定角度的两个其他点放置(参见手册 3.0.1a 第 143 和 144 页)。
以下是一个例子:
\documentclass[tikz,border=5mm]{standalone}
\usetikzlibrary{calc}
\begin{document}
\def\alpha{45}
\begin{tikzpicture}[]
\draw (0,0)circle (2cm)circle(1pt);
\draw (\alpha:2) coordinate(A)circle(1pt);
\draw ($(A)!1!-90:(0,0)$)--($(A)!1!90:(0,0)$);
\end{tikzpicture}
\end{document}
作为圣诞礼物,一段小动画:
\documentclass[tikz,border=5mm]{standalone}
\usetikzlibrary{calc}
\begin{document}
\def\alpha{40}
\foreach \alpha in {0,5,...,180}{
\begin{tikzpicture}[]
\useasboundingbox (-3,-3) rectangle (3,3);
\draw (0,0)circle (2cm)circle(1pt);
\draw (\alpha:2) coordinate(A)circle(1pt);
\draw ($(A)!1!-90:(0,0)$)--($(A)!1!90:(0,0)$);
\end{tikzpicture}
}
\end{document}
答案4
PSTricks 解决方案仅用于娱乐目的。
静态图像
\documentclass[pstricks,12pt]{standalone}
\usepackage{pst-eucl}
\begin{document}
\pspicture(8,8)
\pstGeonode(4,4){O}([nodesep=2,angle=60]O){A}([offset=-2]{O}A){X}([offset=2]{O}A){Y}
\pstCircleOA{O}{A}
\psline(X)(Y)
\endpspicture
\end{document}
动画
\documentclass[pstricks,12pt]{standalone}
\usepackage{pst-eucl}
\begin{document}
\foreach \i in {0,30,...,330}{%
\pspicture(8,8)
\pstGeonode(4,4){O}([nodesep=2,angle=\i]O){A}([offset=-2]{O}A){X}([offset=2]{O}A){Y}
\pstCircleOA{O}{A}
\psline(X)(Y)
\endpspicture}
\end{document}