标签:return point xb double 线段 xa 相交 ya 模板
struct point{ double x,y; point(double _x=0,double _y=0){ x=_x,y=_y; } point operator+ (const point& a) const{ return point(x+a.x,y+a.y); } point operator- (const point& a) const{ return point(x-a.x,y-a.y); } point operator* (double a) const{ return point(x*a,y*a); } }; // 点 struct line{ point s,e; line(point a,point b){ s=a,e=b; } line(){} }; // 线 double getdis(point a, point b){ double xx=a.x-b.x,yy=a.y-b.y; return sqrt(xx*xx+yy*yy); } // 两点距离 double multi(point a,point b,point c){ double xa,ya,xb,yb; xa=b.x-a.x; ya=b.y-a.y; xb=c.x-b.x; yb=c.y-b.y; return xa*xb+ya*yb; } // 点乘 double cross(point a,point b,point c){ double xa,ya,xb,yb; xa=b.x-a.x; ya=b.y-a.y; xb=c.x-a.x; yb=c.y-a.y; return xa*yb-xb*ya; } // 叉乘 int judgec(line a,line b){ if (max(a.s.x,a.e.x)>=min(b.s.x,b.e.x) && max(a.s.y,a.e.y)>=min(b.s.y,b.e.y) && max(b.s.x,b.e.x)>=min(a.s.x,a.e.x) && max(b.s.y,b.e.y)>=min(a.s.y,a.e.y) && cross(a.s,b.s,b.e)*cross(a.e,b.s,b.e)<=0 && cross(b.s,a.s,a.e)*cross(b.e,a.s,a.e)<=0 ) return 1; else return 0; } // 判断线段是否相交 point getpoi(point a,point b,point c,point d){ double u=cross(a,b,c),v=cross(b,a,d); return point((c.x*v+d.x*u)/(u+v),(c.y*v+d.y*u)/(u+v)); } // 求交点
标签:return,point,xb,double,线段,xa,相交,ya,模板 来源: https://www.cnblogs.com/lhclqslove/p/15539045.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。