计算几何中的叉积
最近笔者这里ACM的省级比赛很快就要开始了,笔者在团队中正好负责计算几何。尽管水平只是能算入门级别的,但是笔者还是想和各位分享一下有关自己对计算几何的认识和了解。
要说计算几何中最简单的概念应该是叉积了,尽管叉积比较简单。但是却非常重要,因为在计算几何中很多地方要用上叉积。比如:判断线段拐向、三点共线问题、两条线是否相交、极角排序 中的应用等。笔者用下面一段来简述一下叉积。
//向量的叉积
/* 计算行列式
| x1-x0 y1-y0 |
| x2-x0 y2-y0 |
的结果(向量的叉积 AB X AC)
*/
#include<iostream>
using namespace std;
struct point
{
int x; //表示point 的 x 坐标
int y; //表示point 的 y 坐标
};
int main(void)
{
point A,B,C; //定义三个点对象 A B C
while(cin>>A.x>>A.y>>B.x>>B.y>>C.x>>C.y)
{
cout<<"AB x AC="<<(B.x-A.x)*(C.y-A.y)-(B.y-A.y)*(C.x-A.x)<<"\n";
/*
通过向量的叉积得到的基本结论:
AB x AC>0 AC在AB的逆时针方向
AB x AC<0 AC在AB的顺时针方向
AB x AC=0 ABC 共线
*/
}
return 0;
}