九万五千一的计算几何笔记不完整版本

这篇博客介绍了计算几何中的基本概念和操作,包括acos和atan2函数的用途,点的坐标表示,以及两点之间的距离计算。此外,还详细阐述了点的加减乘除运算,点积与叉积的定义和计算方法,以及它们在几何问题中的应用。通过提供的代码示例,展示了如何在编程中实现这些运算。
摘要由CSDN通过智能技术生成

计算几何

函数 acos和atan2,是关于cos的反解函数

printf("%.9lf",acos(-1));这个是解cos的函数

可以精确的取到小数点后9位

cout<<atan2(sqrt(3),1);这个是解tan的函数,因为后面有个2,所以后面要有两个参数

点的表示:二维平面中的点用坐标(x,y)表示,我们通常写一个结构体来处理

struct Point{
  double x,y;
    Point(){}
    Point(double x,double y):x(x),y(y){}
};

两点之间的距离:

把两点堪称直角三角形的两个顶点,那斜边就是两点的距离

double Dist(Point A,Point B){
return sqrt((A.x-B.x)*(A.x-B.x) + (A.y-B.y)*(A.y-B.y));
}

运算,坐标(x1,y1)(x2,y2)

加:(x1+x2,y1+y2)

减:(x1-x2,y1-y2)

乘:一般用double或者long double k·a=(kx1,kx2)

点乘:向量a·向量b=向量a的模x向量b的模成cos夹角

叉乘:向量a x 向量b=(Xa·Yb-Xb·Ya)/2

这样叉乘出来时平行四边形的面积,除以二才是最后的三角形面积

  • 加:点与点的加法运算没有意义;点与向量相加得到另一个点;向量与向量相加得到另外一个向量。 Point operator + (Point B){return Point(x+B.x,y+B.y);}

  • 减:两个点的差是一个向量;向量 A 减 BB,得到由 B 指向 AA 的向量。Point operator - (Point B){return Point(x-B.x,y-B.y);}

  • 乘:向量与实数相乘得到等比例放大的向量。 Point operator * (double k){return Point(x*k,y*k);}

  • 除:向量与实数相除得到等比例缩小的向量。 Point operator / (double k){return Point(x/k,y/k);}

  • 等于: bool operator == (Point B){return sgn(x-B.x)==0 && sgn(y-B.y)==0;}

点积

编程时计算点积,并不需要知道θ。因为如果已知 A=( Ax, Ay),B=( Bx, By),那么就有:A•B = Ax·Bx + Ay·By

所以求a,b的点积的代码

double Dot(Vector A,Vector B){ return A.x*B.x+A.y*B.y;}

叉乘

它的计算公式是:A×B=|A||B|sinθ,其中 θ表示向量 A旋转到向量 B所经过的夹角。两个向量的叉积是一个带正负号的数值。

A×B 的几何意义为向量 A和 B形成的平行四边形的“有向”面积,这个面积是有正负的。叉积的正负符合“右手定则”,可以用下图中的正负情况帮助理解。

我们用以下程序计算向量 A、B的叉积 A×B:

double Cross(Vector A,Vector B){return A.x*B.y – A.y*B.x;}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值