解析几何--对称,平移和旋转

对称问题就是计算几何中的经典问题,熟练掌握以及应用对称可以使得问题简化,时间复杂度也可能相对减少。

平移和旋转时解析几何中常用的坐标变换方法。坐标变换可能出现在问题中,也可能出现在解题的过程中。

解题时,通过巧妙的平移旋转,可以简化计算,使题目变得更加直观,方便解题。

例如,对于对称图形,只需要计算研究一半的性质,而另一半可利用对称的性质直接得出。

点的对称

点的对称是几何中的基础问题。

在二维平面上,关于原点对称有一种简单的情况,已知点A(x1,y1),B(x2,y2),&&A,B关于原点对称,那么很容易得出:x2=-x1,y2=-y1;

若点A,B关于点C对称,已知A,B,求点C的坐标。那么(x1+x2)/2=xc,(y1+y2)/2=yc;

Code:

Point SymmetricCoordinates(Point p1,Point p2){
	Point p3;
	p3.x=2.0*p2.x-p1.x;
	p3.y=2.0*p2.y-p1.y;
	return p3;
}

点关于直线的对称

求点关于直线的对称点,相当于求点关于直线上特定一点的对称点,即关于垂足的对称点。

首先讨论一种特例:点A(x1,y1)关于坐标轴的对称点。

易得:关于x轴的对称点为A'(x1,-y1);关于y轴的对称点为A''(-x1,y1);

当直线平行于坐标轴时:直线l1:y=a,l2:x=b;

易得:关于l1对称的点为A'(x1,2a-y1);

现在讨论一般的直线l:ax+by+c=0;设A'(x,y),

那么易得:点(\frac{x+x_{1}}{2},\frac{y+y_{1}}{2})在直线l上。且过A和B的直线与l垂直,即乘积-1。

可得计算公式:a\frac{x+x_{1}}{2}+b\frac{y+y_{1}}{2}+c=0 和 \frac{a(y-y_{1})}{b(x-x_{1})}=1

那么A'坐标即为:(\frac{(b^{2}-a^{2})x_{1}-2aby_{1}-2ac}{a^{2}+b^{2}},\frac{(a^{2}-b^{2})y_{1}-2abx_{1}-2bc}{a^{2}+b^{2}})

平移

坐标的平移使解析几何中的基础问题,把点A(x,y)沿向量a=(c1,c2)平移只需把点A的横坐标分别加上向量a的坐标即可。

边的平移可以看作点的平移,两个点向相同方向平移一段距离:

Code:

int Move(double mid){//默认向左平移mid距离
	for(int i=1;i<=n;++i){
		Edge2[i].start=Point(Edge[i].start.x+cos(Edge[i].ang+PI/2.0)*mid,Edge[i].start.y+sin(Edge[i].ang+PI/2.0)*mid);
		Edge2[i].end=Point(Edge[i].end.x+cos(Edge[i].ang+PI/2.0)*mid,Edge[i].end.y+sin(Edge[i].ang+PI/2.0)*mid);
	}
}

点延向量平移同时可以看作是坐标系延相反的方向平移,这样就可以得到简单图形的坐标平移,即左加右减。

旋转

旋转在几何和线性代数中是描述刚体围绕一个固定点的运动在平面||空间中的变换。

旋转不同于没有固定点的平移和翻转变换。旋转保留任意两点之间的距离在变幻前后不变。

首先给出点坐标的旋转公式:

x_{1}=xcos(\theta )-ysin(\theta )

y_{1}=ycos(\theta )+xsin(\theta)

其中,x,y表示物体相对旋转点旋转到\theta角度之前的坐标;x1,y1表示物体旋转\theta角后相对于旋转点的坐标。

具有下面几条关系:设A(x,y)绕B(a,b)旋转\beta度后的位置为C(c,d)。

1.设A点旋转前的角度为\delta,则旋转(逆时针)到C点后角度为\beta+\delta

2.求A,B两点的距离:dist1=|AB|=y/sin(\delta )=x/cos(\delta )

3.求C,B两点的距离:dist2=|CB|=d/sin(\beta +\delta )=c/cos(\beta +\delta)

4.显然dist1=dist2,设dist1=r,所以:r=x/cos(\delta )=y/sin(\delta )=d/sin(\beta +\delta)=c/cos(\beta +\delta)

5.有三角函数两角和公式得:

sin(\beta +\delta)=sin(\beta )cos(\delta)+cos(\beta )sin(\delta)

cos(\delta +\beta )=cos(\delta )cos(\beta )-sin(\delta )sin(\beta )

由此得出:

c=rcos(\delta +\beta )=rcos(\delta )cos(\beta-\delta)sin(\delta)sin(\beta)=xcos(\beta)-ysin(\delta)

c=rsin(\delta +\beta )=rsin(\delta )cos(\beta+\delta)cos(\delta)sin(\beta)=ycos(\beta)-xsin(\delta)

即旋转后的坐标c,d只与旋转前的坐标x,y和旋转角度\beta有关。如图:

.

猜你喜欢

转载自blog.csdn.net/qq_40482358/article/details/87993577
今日推荐