如何达到这种效果:A向C的切线作垂直,并将垂足记下来命名为P

2020-04-25 12:44发布

[图]

524f3d1690afb2f1


3条回答
registor
2020-04-25 20:09

使用tkz-euclide宏包比较方便:

\documentclass[margin=3pt,
  convert,
  convert={
    outext=.png,
    command=\unexpanded{
      pdftocairo -r 300 -png \infile % 将生成的pdf文件转换为png图像
    }
  }
  ]{standalone}

% 欧几里得图形绘制宏包  
\usepackage{tkz-euclide}

\begin{document}
\begin{tikzpicture}
  % 定义坐标
  \tkzDefPoint(0,0){A}
  \tkzDefPoint(2,0){B}
  % 以AB为直径定义圆
  \tkzDefCircle[diameter](A,B)
  % 获得圆心
  \tkzGetPoint{O}
  % 计算半径
  \tkzCalcLength[cm](O,A) \tkzGetLength{rOA}
  % 定义圆上的点C
  \tkzDefShiftPoint[O](120:\rOA){C}
  % 定义过C点的圆的切线
  \tkzDefTangent[at=C](O) \tkzGetPoint{h}
  % 定义过C平行于AB的直线 
  \tkzDefLine[parallel=through C](A,B) \tkzGetPoint{c'}
  % 定义过A垂直于Ch切线的直线 
  \tkzDefLine[orthogonal=through A](C,h) \tkzGetPoint{a'}
  % 定义过C垂直于AB的直线  
  \tkzDefLine[orthogonal=through C](A,B) \tkzGetPoint{c''}
  % 定义过A垂直于Cc'的直线
  \tkzDefLine[orthogonal=through A](C,c') \tkzGetPoint{a''}
  % 求直线交点
  \tkzInterLL(A,B)(C,c'') \tkzGetPoint{I1}
  \tkzInterLL(A,a'')(C,c') \tkzGetPoint{I2}
  \tkzInterLL(C,h)(A,a') \tkzGetPoint{I3}
  % 绘制图形
  \tkzDrawCircle(O,B)
  \tkzDrawLine[add = 1 and 0.5](C, h)
  \tkzDrawSegment(C, I1)
  \tkzDrawSegment(A, I2)
  \tkzDrawSegment(I2, C)
  \tkzDrawSegment(A, I3)
  \tkzDrawSegment(A,B)
  % 标记点
  \tkzDrawPoints(A,B,C)
  \tkzLabelPoints(A,B,C)
  % 绘制垂直符号
  \tkzMarkRightAngle[fill=red!30](A,I3,h)
\end{tikzpicture}
\end{document}

绘制结果:

main-1.png

一周热门 更多>

相关问答