终于在pgfmanual里找到轴对换变换了:矩阵
[i=s] 本帖最后由 isee 于 2017-10-19 08:23 编辑 [/i]轴对称变换,在矩阵下,可以用旋转与平移“替代”。
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.$$ 可惜俺不懂矩阵神马的[img]http://kuing.orzweb.net/attachments/month_1309/1309021709dd49b73dab8bdad9.gif[/img]看来有空还是得学学看 [b]回复 [url=http://kuing.orzweb.net/redirect.php?goto=findpost&pid=23490&ptid=4948]2#[/url] [i]kuing[/i] [/b]
我也是刚补的。
代码中的,{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$轴对称。[code] \begin{tikzpicture}[line width=0.75pt]
\draw [blue](0,-1)--(2,3);
\draw (0,0) -- (1,1) -- (1,0);
\draw[cm={-3/5,4/5,4/5,3/5,(4/5,-2/5)},red] (0,0) -- (1,1) -- (1,0);
\end{tikzpicture}[/code] 哈哈哈哈哈,把点关于直线对称,一般情况硬算了一次,这个当上得不小~ TikZ 的反正切是 atan(=arctan)
页:
[1]