计算几何常用公式与技巧归纳之系列一:点与线
2012-08-18 01:00
441 查看
double eps=1e-8; struct P { double x,y; P(){} P(double x,double y):x(x),y(y){} P operator -(const P& p){return P(x-p.x,y-p.y);} P operator +(const P& p){return P(x+p.x,y+p.y);} P operator *(double d){return P(x*d,y*d);} P operator /(double d){return P(x/d,y/d);} double operator *(const P& p){return x*p.y-y*p.x;}// 叉积 double operator &(const P& p){return x*p.x+y*p.y;}// 点积 P rot(double th){return P(x*cos(th)-y*sin(th),x*sin(th)+y*cos(th));}// 逆时针旋转 double dis(){return sqrt(x*x+y*y);}// 与原点的距离 double angle(){return atan2(y,x);}// 极角 void read(){scanf("%lf%lf",&x,&y);} }; struct Line { P a,b;// 当表示有向时,将a作为起始点 Line(){} Line(P a,P b):a(a),b(b){} void read(){a.read();b.read();} double dis(){ return (a-b).dis(); } }L;ps:上面重载了点的相关操作,会在下面的代码中遇到。
首先介绍下叉积与点积:
叉积(*): a*b=|a|*|b|*sin(th)(注意:th为向量a绕原点旋转到b的角度,逆时针方向为正)
性质一: 我们可以用叉积来判断点在向量的哪一边
性质二:用来求三角形的面积
性质三: asin( a*b / (|a|*|b|) )可以得到a,b之间的夹角,但是一定要注意asin()的返回范围是:[-pi/2, pi/2], 因此如果两者之间成钝角,会出现问题,因而可以用来求锐角的角度
点积(&):a&b=|a|*|b|*cos(th),
性质一:基于cos(th)在90°~180°为负,可以判向量之间是否为钝角
性质二:求向量之间的度数,这里就保证了范围为0°~180°
《明天继续更新》
点在直线上
点在线段上
点到直线的距离
点到直线的垂足
点到线段的最近距离
点关于直线的对称点
两直线的交点
相关文章推荐
- 算法系列之九:计算几何与图形学有关的几种常用算法(二)
- 算法系列之九:计算几何与图形学有关的几种常用算法(一)
- 算法系列之九:计算几何与图形学有关的几种常用算法(一)
- 【图像处理】几何常用公式归纳
- 算法系列之九:计算几何与图形学有关的几种常用算法(二)
- 算法系列之九:计算几何与图形学有关的几种常用算法(一)
- 常用函数公式及操作技巧系列文章【共十篇】
- 算法系列之九:计算几何与图形学有关的几种常用算法(一)
- 算法系列之九:计算几何与图形学有关的几种常用算法(二)
- 算法系列之九:计算几何与图形学有关的几种常用算法(二)
- 算法系列之九:计算几何与图形学有关的几种常用算法(一)
- [推荐][提供下载](Excel):常用函数公式及操作技巧系列文章【共十篇】
- 算法系列之九:计算几何与图形学有关的几种常用算法(一)
- [推荐][提供下载](Excel):常用函数公式及操作技巧系列文章【共十篇】
- 算法系列之九:计算几何与图形学有关的几种常用算法(二) .
- [推荐][提供下载](Excel):常用函数公式及操作技巧系列文章【共十篇】
- hdu 5448 Marisa’s Cake(计算几何加推公式)
- C++实现常用的平面计算几何问题求解
- C语言系列(一):最近重拾C语言的想法,谈到C中易错点,难点;以及开源代码中C语言的一些常用技巧,以及如何利用define、typedef、const等写健壮的C程序
- 计算几何常用算法总结