TikZ:泰勒斯圆,半径未知

TikZ:泰勒斯圆,半径未知

有没有什么方法可以仅知道直径上的两个点来画圆?

这是我正在尝试解决的完整问题:有一个线段 MN(但是点 M 和 N 被计算为其他线的交点,所以我不知道它们的坐标)并且我想构造泰勒斯圆(以找到一些直角)。

我找到了一些绘制部分圆周的代码,所以我对其进行了修改

\coordinate (S_MN) at ($(M)!.5!(N)$);
\draw[red] (S_MN) let \p1 = ($(N)-(S_MN)$) in  ++({veclen(\x1,\y1)},0) arc (0:360:({veclen(\x1,\y1)}););

(我正在使用该calc库),但编译时遇到错误。

!package Tikz error: + or - expected. See the tikz documentation...

(是的,不幸的是,我承认我对我使用过的 TikZ 构造了解不多。)

$(M) - (N)$我也尝试过通过(我曾在某处见过)来计算半径,但是没有成功。

- - 编辑 - -

(...)

但我想我已经找到问题了——我试图从文档中删除软件包并检查是否存在问题

-> 一旦\usepackage[czech]{babel}包被注释,一切都正常运行

\documentclass[12pt,a4paper]{report}

\usepackage[czech]{babel}

\usepackage[cp1250]{inputenc}
\usepackage{graphicx}
\usepackage{amsthm}
\usepackage{amsmath}
\usepackage{epstopdf}

\usepackage{tikz}
\usetikzlibrary{calc}
\pgfmathsetseed{\pdfuniformdeviate 10000000}

\begin{document}
\begin{tikzpicture}
\draw[style=help lines] (0,0) grid[step=1cm] (3,3);
\coordinate (M) at (2,1);
\foreach \x in {1,...,5}{
\node (N) at ({random(0,3)},{random(0,3)}) {here};
\coordinate (S_MN) at ($(M)!.5!(N)$);
\draw[red] (S_MN)
 let \p1 = ($(N)-(M)$),\n1 = {0.5*veclen(\x1,\y1)} in  ++(\n1,0) arc (0:360:\n1);
}
\end{tikzpicture}  
\end{document}

编辑 2:我曾将 percusse 的构造与 cjorssen 的“更新”结合使用,效果非常好。但现在我意识到一个问题 - 我如何找到与我在第一篇帖子中提到的其他线的交点?(摘要:我按照你的方式画了一个圆。还有一条线,比如说 AB,它在两点与圆相交。我如何检测它们来绘制我使用泰勒斯圆的直角?提前致谢

答案1

使用 tkz-euclide

\documentclass{scrartcl}
\usepackage{tkz-euclide} 
\usetkzobj{all} 
\begin{document}

\begin{tikzpicture} 
  \tkzDefPoint(2,1){A}
  \tkzDefPoint(7,3){B} 
  \tkzDrawCircle[diameter,fill=yellow!50](A,B) 
  \tkzDefMidPoint(A,B) \tkzGetPoint{O} 
  \tkzCalcLength[cm](O,B) \tkzGetLength{rAB}
  \tkzGetRandPointOn[circle = center O radius \rAB cm]{C}
  \tkzDrawPolygon[fill=red!40](A,B,C) 
  \tkzLabelPoints(A,B,C,O)
  \tkzMarkRightAngle(A,C,B)
\end{tikzpicture}

\end{document}  

在此处输入图片描述

答案2

我用一个随机节点替换了其中一个点。您可以使用寄存器\n进行计算并将其用于路径,也可以使用圆代替圆弧,但我保留了圆弧,这样您就可以区分您自己的代码和我的代码 :)

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{calc}
\pgfmathsetseed{\pdfuniformdeviate 10000000}

\begin{document}

\begin{tikzpicture}
\draw[style=help lines] (0,0) grid[step=1cm] (3,3);
\coordinate (M) at (2,1);
\foreach \x in {1,...,5}{
\node (N) at ({random(0,3)},{random(0,3)}) {here};
\coordinate (S_MN) at ($(M)!.5!(N)$);
\draw[red] (S_MN) let \p1 = ($(N)-(M)$),\n1 = {0.5*veclen(\x1,\y1)} in  ++(\n1,0) arc (0:360:\n1);
}
\end{tikzpicture}    
\end{document}

在此处输入图片描述

M在坐标上(2,1),但每次迭代时N都会显示为文本。here

答案3

当 babel 与捷克语一起使用时,它会-激活。这会导致 tikzcalc库无法正确解析坐标。这就是您收到错误消息的原因

!package Tikz error: + or - expected. See the tikz documentation...

因为 tikz在寻找带有 catcode 时找到了带有-catcode 13( ) 的。\active-12

\shorthandoff{-}一种解决方法是在 之前\begin{tikzpicture}\shorthandon{-}之后添加\end{tikzpicture}。但请注意,您将无法使用-内部相关的 babel 功能tikzpicture

相关内容