判断两线段相交
来源:互联网 发布:不出于户 以知天下 编辑:程序博客网 时间:2024/05/01 20:53
#include <iostream>using namespace std;struct Point//点的定义{ double x,y;};typedef struct line//向量定义{ Point start,end;}vector;double multi(Point p1,Point p2,Point p0){ return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);}bool cross(vector v1,vector v2)//相交与否{ if(max(v1.start.x,v1.end.x)>=min(v2.start.x,v2.end.x)&& max(v2.start.x,v2.end.x)>=min(v1.start.x,v1.end.x)&& max(v1.start.y,v1.end.y)>=min(v2.start.y,v2.end.y)&& multi(v2.start,v1.end,v1.start)*multi(v1.end,v2.end,v1.start)>=0&& multi(v1.start,v2.end,v2.start)*multi(v2.end,v1.end,v2.start)>=0) return true; return false;}int main(){ int n; double x1,x2,x3,x4,y1,y2,y3,y4; while(cin>>n&&n!=0) { while(n--) { cin>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4;//4个点,两条线段 vector v1,v2; v1.start.x=x1; v1.start.y=y1; v1.end.x=x2; v1.end.y=y2; v2.start.x=x3; v2.start.y=y3; v2.end.x=x4; v2.end.y=y4; if(cross(v1,v2)) cout<<"YES"<<endl; else cout<<"no"<<endl; } } return 0;}
0 0
- 判断两线段相交
- 判断两线段是否相交
- 判断两线段是否相交
- 判断两线段是否相交
- 判断两线段是否相交
- 判断两线段是否相交
- 两线段相交判断方法
- 判断两线段是否相交
- 判断两线段是否相交
- 判断两线段是否相交
- 判断两线段是否相交
- zju1648 判断两条线段是否相交
- 判断两条线段是否相交
- 判断两条线段是否相交
- 判断两条线段是否相交
- 如何判断两条线段相交
- 判断两条线段是否相交
- objective-c判断两条线段相交
- 反射
- Android自定义类似ProgressDialog效果的Dialog
- 接触laravel第一周
- Java程序员成长的思考
- linux设备驱动模型
- 判断两线段相交
- Struts2架构中参数的封装
- 谈谈使用C程序实现zip文件解压问题
- 考研英语近义词与反义词·二
- 第一章 抽象和封装(一)
- 51Nod-1215-数组的宽度
- bro terminated immediately after starting; check output with "diag"
- TJA1050比pC8C250一个值得关注的优势
- 求最小覆盖圆