找回密码
 快速注册
搜索
查看: 1193|回复: 4

TikZ 垂足的定位

[复制链接]

830

主题

4862

回帖

3万

积分

积分
36159

显示全部楼层

isee 发表于 2019-7-27 15:55 |阅读模式
本帖最后由 isee 于 2019-8-10 15:55 编辑 总是忘,记录一下

垂足定位:
<a>!<c>!<angle>:<b>

首先考虑一条由<a>到<b>的线段,
然后绕点<a>以<angle>角度旋转线段.
然后再过c点作垂线,那么垂足坐标就可以表示为<a>!<c>!<angle>:<b>

如果这条线段没有旋转,则可省略<angle>参数

源自 网海水手



=======================



(美元符号(a)!(c)!(b)美元符号)

C在AB上垂足

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2019-7-27 16:18
直接看手册 13.5 Coordinate Calculations 部分就是了,示例都画得很清楚。
三种情形:
  1. <coordinate>!<number>!<angle>:<second coordinate>
  2. <coordinate>!<dimension>!<angle>:<second coordinate>
  3. <coordinate>!<projection coordinate>!<angle>:<second coordinate>
复制代码
第一个就是位似旋转,第二个是将比例改为一个给定距离,第三个是用另一个点的垂足位置来定。

830

主题

4862

回帖

3万

积分

积分
36159

显示全部楼层

 楼主| isee 发表于 2019-7-27 16:21
回复 2# kuing


其实网上基本都是手册的理解而已,这个我记下,先,然后再看。。

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2019-7-27 17:48
闲着没事干,画了个谁都能一眼看懂的图示
QQ截图20190727174641.png
若不旋转,可省略 60: 。

附代码:
  1. \documentclass{article}
  2. \usepackage{tikz}
  3. \usetikzlibrary{calc}
  4. %直角标记及弧标记
  5. \newlength\zjw%直角标记宽度
  6. \zjw=7pt
  7. \newcommand\zjbj[4][]{%
  8. \draw[#1] let \p1=(#2),\p2=(#4),\p0=(#3),
  9. \n1={atan2(\y1-\y0,\x1-\x0)},
  10. \n2={atan2(\y2-\y0,\x2-\x0)} in
  11. (#3)++(\n1:\zjw)--++(\n2:\zjw)--++(\n1:-\zjw);
  12. }
  13. \newlength\hur%弧半径
  14. \newlength\huj%字母与弧的间距
  15. \hur=7pt
  16. \huj=10pt
  17. \newcommand\hubj[5][]{%
  18. \draw[#1] let \p1=(#2),\p2=(#4),\p0=(#3),
  19. \n1={atan2(\y1-\y0,\x1-\x0)},
  20. \n2={atan2(\y2-\y0,\x2-\x0)},
  21. \n3={Mod(\n2-\n1,360)} in
  22. (#3)++(\n1:\hur)arc[start angle=\n1,delta angle=\n3,radius=\hur]
  23. (#3)+(\n1+0.5*\n3:\hur+\huj) node {$#5$};
  24. }
  25. %测试用的临时命令
  26. \newcommand\wsxztest[1]{%
  27. \tikz{\draw (0,1) coordinate[label=180:$A$] (A)
  28. -- (3,0) coordinate[label=0:$B$] (B);
  29. #1}}
  30. \begin{document}
  31. \def\bi{0.7}\def\ag{60}
  32. \texttt{C = \$(A)!\bi!\ag:(B)\$}
  33. \wsxztest{
  34. \coordinate[label=0:$C$] (C) at ($(A)!\bi!\ag:(B)$);
  35. \draw (A)--node[sloped,above]{$\bi AB$}(C);
  36. \hubj BAC{\ag^\circ}
  37. }
  38. \def\bi{1.5cm}
  39. \texttt{C = \$(A)!\bi!\ag:(B)\$}
  40. \wsxztest{
  41. \coordinate[label=0:$C$] (C) at ($(A)!\bi!\ag:(B)$);
  42. \draw (A)--node[sloped,above]{\bi}(C);
  43. \hubj BAC{\ag^\circ}
  44. }
  45. \texttt{C = \$(A)!(P)!\ag:(B)\$}
  46. \wsxztest{
  47. \fill (2,1) coordinate[label=0:$P$] (P) circle (2pt);
  48. \coordinate[label=$C$] (C) at ($(A)!(P)!\ag:(B)$);
  49. \draw (A)--(C)--(P);
  50. \hubj BAC{\ag^\circ}
  51. \zjbj ACP
  52. }
  53. \end{document}
复制代码

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2019-7-27 21:39
还可以这样玩
\def\ag{45}\def\bi{{0.5*sqrt(2)}}
\wsxztest{\draw (A)
--($(A)!\bi!\ag:(B)$)
--($(A)!\bi!\ag:(B)!\bi!\ag:(B)$)
--($(A)!\bi!\ag:(B)!\bi!\ag:(B)!\bi!\ag:(B)$)
--($(A)!\bi!\ag:(B)!\bi!\ag:(B)!\bi!\ag:(B)!\bi!\ag:(B)$)
--($(A)!\bi!\ag:(B)!\bi!\ag:(B)!\bi!\ag:(B)!\bi!\ag:(B)!\bi!\ag:(B)$);}
效果:
QQ截图20190727213719.png
当然,要画这个应该有更简单的方法,这里纯粹是玩玩。

手机版|悠闲数学娱乐论坛(第3版)

GMT+8, 2025-3-4 12:19

Powered by Discuz!

× 快速回复 返回顶部 返回列表