我正在寻找一种在图像上绘制完美圆弧的方法。
目前我正在使用 tikz 绘制弧线。问题是,使用以下代码,弧线更像是椭圆的一部分而不是圆的一部分。这是由于环境中的x
和值不同。我无法更改这些值。我需要弧线中心的精确位置位于图像的某个位置。该位置以图像宽度和高度的分数给出(例如,如代码示例中的 (0.5,0.62)),因为我想保持与图像的实际缩放无关(保持其纵横比)。y
scope
我现在使用的代码如下:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node[anchor=south west,inner sep=0, opacity=0.6] (image) at (0,0,0) {\includegraphics[width=8cm]{image}};
\begin{scope}[x={(image.south east)},y={(image.north west)}]
\draw[->,>=stealth,line width=1mm,red] ([shift=(0:0.2)]0.5,0.62) arc(0:90:0.2);
\end{scope}
\end{tikzpicture}
\end{document}
这样,无论我选择的width
图像节点是什么(在本例中为 8 厘米),中心都处于完美的位置。
圆弧扭曲了,因为我提供了极坐标,而 x 和 y 具有不同的缩放因子。在 1:1 纵横比域中,这将是一个完美的圆。但它不是 1:1 域。
那么,我该怎么做才能获得圆弧半径的 1:1 域,同时保持图像与圆弧中心的笛卡尔坐标(即相应图像轴的分数)的纵横比?
我的解决方案
根据 Zarko 的解决方案,我提出了这个 MWE,其中还包括纵横比的计算:
\documentclass{article}
\usepackage{tikz}
\newlength{\mywidth}
\newlength{\myheight}
\makeatletter
\newcommand{\getlength}[2]{\pgfmathsetmacro#1{\strip@pt#2}} % to get rid of the pt dimension as a division of lengths apparently doesn't cancel it out
\makeatother
\newcommand{\pgfsize}[2]{
\pgfextractx{#1}{\pgfpointdiff{\pgfpointanchor{current bounding box}{south west}}{\pgfpointanchor{current bounding box}{north east}}}
\pgfextracty{#2}{\pgfpointdiff{\pgfpointanchor{current bounding box}{south west}}{\pgfpointanchor{current bounding box}{north east}}}
}
\begin{document}
\begin{tikzpicture}
\node[anchor=south west,inner sep=0, opacity=0.6] (image) at (0,0,0) {\includegraphics[width=8cm]{image}};
\begin{scope}[x={(image.south east)},y={(image.north west)}]
\pgfsize{\mywidth}{\myheight};
\getlength{\aspect}{\mywidth / \myheight};
\node (0,0) {Aspect ratio is \aspect~:~1};
\draw[->,>=stealth,line width=1mm,red] ([shift=(0:0.2)]0.5,0.62) arc(0:90:0.2 and 0.2*\aspect);
\end{scope}
\end{tikzpicture}
\end{document}
答案1
您可以定义arc
为椭圆段:
\draw (2,0) arc [x radius=1, y radius=2, start angle=0, end angle=180];
或者简单来说
\draw (2,0) arc arc(0:90:0.2 and 0.4);
考虑到您的代码片段(您应该将其扩展为最小的工作示例!)我获得(无需计算之间的比率X和是半径,这个我留给你了):
\usepackage[demo]{graphicx}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
\node[anchor=south west,inner sep=0, opacity=0.6] (image) at (0,0,0) {\includegraphics[width=8cm]{Bilder/panaxis}};
\begin{scope}[x={(image.south east)},y={(image.north west)}]
\draw[->,>=stealth,line width=1mm,red] ([shift=(0:0.2)]0.5,0.62) arc(0:90:0.2 and 0.4);
\end{scope}
\end{tikzpicture}
\end{document}
对于之间的精确比率X-半径和是-radius 你可以定义为X然后从中计算是考虑到X-图像的比例。