二维几何基础

两个向量的位置关系

第一个向量总是水平向右,第二个向量有n种方向,且其具备内循环特性。

double cross {vector a,vector b,}

return a.x*b.y-a.y*b.x
double area2{point a,point b,point c}
return cross(b-a,c-a)

向量旋转

vector rotate{vector a, double rad}

return vector {a.x*cos(rad)-a.y*sin(rad),a.x*sin(rad)+a.y*cos(rad)}

计算共轭复数

double dot {vector a,vector b}{return real(conj(a)*b)
double cross {vector a, vector  b,}{return imag(conj(a)*b)}\

vector rorate {vector a,double rad}{return a*exp(point)(0,rad)):}

如何计算多边形的有效面积

double convexpolygonarea(point*p,int n)
double area=0
for (int i=1,i<n;i++)
area+=cross{p[i]-p[0];p[i+1]-p[0]}
return area/2

圆相关的计算

直线和圆的交点

int linecricleintersection(line l, circle c,double t1,double t2,
vector <point>&sol){

double a=l.v.x,b=l.p.x-c.c.x,c=l.v.y,d=l.p.y-c.c.y
double e=a*a+c*c;f=2*(a*b+c*d),g=b*b+d*d-c.r*c.r;
double delta=f*f-4e*g
if (dcmp(delta)<0) return 0
if (dcmp(delta)==0){
t1=t2=-f/(2*e);sol.oush_back(l.point(ti))
return i

t1=(-f-sqrt(delta)/(2*e);sol.push_back(l.point(t1));
t2=(-f+sqrt(delta)/(2*e);sol.push_back(l.point(t2)));
return 2

计算向量极角的方法

double angle {vector v}{return atan2(v.y,v.x):}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值