免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
返回列表 发帖

终于在pgfmanual里找到轴对换变换了:矩阵

本帖最后由 isee 于 2017-10-19 08:23 编辑

轴对称变换,在矩阵下,可以用旋转与平移“替代”。

TikZ自带手册(pgfmanual,Manual for Version 3.0.1a),362页看到了:

\draw[cm={0,1,1,0,(1cm,1cm)},red] (0,0) -- (1,1) -- (1,0);

%以上就是将拆线段先沿直线$y=x$对称。然后沿向量$(1cm,1cm)$平移。
%当然,轴对称变换只是这里的一个特殊情况。以下便是说的满足轴对称变换时,满足的条件。


一般情形,点$P(x_0,y_0)$关于直线$l:Ax+By+C=0$的对称点,用矩阵表示即$$\left(\begin{array}{ccc}a&c\\b&d\end{array}\right)\left(\begin{array}{c}x_0\\y_0\end{array}\right)+\left(\begin{array}{c}t_x\\t_y\end{array}\right).$$

其中$$a=\cos 2\theta,b=\sin 2\theta,c=\sin 2\theta,d=-\cos 2\theta,\tan \theta=-\frac AB=k.$$
$$t_x=\frac CB\cdot\sin2\theta,t_y=-\frac CB\cdot\frac{\sin2\theta}k=-\frac CB(1+\cos 2\theta).$$

亦是$$\left(\begin{array}{ccc}a&c\\b&d\end{array}\right)\left(\begin{array}{c}x_0\\y_0\end{array}\right)+\left(\begin{array}{c}t_x\\t_y\end{array}\right)=\left(\begin{array}{ccc}\cos 2\theta&\sin 2\theta\\\sin 2\theta&-\cos 2\theta\end{array}\right)\left(\begin{array}{c}x_0\\y_0\end{array}\right)+\left(\begin{array}{c}\sin2\theta\\-(1+\cos 2\theta)\end{array}\right)\frac CB.$$
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

可惜俺不懂矩阵神马的看来有空还是得学学看

TOP

回复 2# kuing

我也是刚补的。

代码中的,{0,1,1,0,(1cm,1cm)}就对应了{a,b,c,d,(t_x,t_y)},

把a,b,c,d,t_x,t_y换成轴对称的矩阵表示形式对应的元素即是。

我实例操作后,发现的。

不过,并不好用,主要是后面这个平移的“尾巴”,难记住。

例如,以下最后一行,就表示拆线(0,0) -- (1,1) -- (1,0)关于 直线 $2x-y-1=0$轴对称。
  1.         \begin{tikzpicture}[line width=0.75pt]  
  2.                   \draw [blue](0,-1)--(2,3);
  3.                      \draw (0,0) -- (1,1) -- (1,0);
  4.                        \draw[cm={-3/5,4/5,4/5,3/5,(4/5,-2/5)},red] (0,0) -- (1,1) -- (1,0);
  5.                 \end{tikzpicture}
复制代码

TOP

哈哈哈哈哈,把点关于直线对称,一般情况硬算了一次,这个当上得不小~

TOP

TikZ 的反正切是 atan(=arctan)

TOP

返回列表 回复 发帖