计算几何初步
来源:互联网 发布:微交易一分钟k线数据 编辑:程序博客网 时间:2024/05/19 13:17
#include<iostream>#include<algorithm>#define EPS 1e-6using namespace std;typedef struct Point{int x, y;Point(int xx, int yy):x(xx), y(yy){}}point;bool isZero(double x){return (x <= EPS && x >= -EPS);}//叉积判断 OB相对 OA方向 如果为正 则 OB在OA逆时针方向 为负在顺时针方向 int cross(const point &O, const point &A, const point &B){int xoa = A.x - O.x;int xob = B.x - O.x;int yoa = A.y - O.y;int yob = B.y - O.y;return xoa*yob - xob*yoa;}//点积为0,两向量垂直;为正,锐角;为负,钝角。仿照叉积,点积的实现如下: int dot(const point &O, const point &A, const point &B){int xoa = A.x - O.x;int xob = B.x - O.x;int yoa = A.y - O.y;int yob = B.y - O.y;return xoa*xob + yoa*yob;}//判断两条线段是否相交 跨立 + 叉积 bool isInter(point A, point B, point C, point D){return max(A.x,B.x) >= min(C.x, D.x)&&max(C.x, D.x) >= min(A.x, B.x)&&max(A.y, B.y) >= min(C.y, D.y)&&max(C.y, D.y) >= min(A.y, B.y)&&cross(A,B,C)*cross(A,B,D) <= 0&&cross(C,D,A)*cross(C,D,B) <= 0 ; }int main(){//cout << isZero(1e-7);point o(0,0);point a(1,1);point b(1,3);point c(2,1);point d(3,5);//cout << cross(o,a,b);//cout <<endl << dot(o,a,b);cout << isInter(a,b,c,d); return 0;}
参考 :点击打开链接
阅读全文
0 0
- 计算几何初步认识
- 2118 计算几何初步
- [专辑]计算几何初步
- 计算几何初步模板
- [计算几何初步]
- 计算几何初步
- H - 计算几何初步
- 计算几何初步
- 计算几何初步(一)
- UVa 11178 - 计算几何初步
- 计算几何初步(点积叉积应用)
- 计算几何初步 线 段 属 性
- 计算几何初步及基本数据结构
- 计算几何初步—【JSOI2015】投影面积
- 计算几何初步-向量的旋转 Rescue The Princess
- 【计算几何初步-线段相交】【HDU1089】线段交点
- 【计算几何初步:多边形中心】【HDU1115】Lifting the Stone
- 【计算几何初步-判断是否凸多边形】【HDU2108】Shape of HDU
- 动态规划
- ActionScript3.0读取网页FlashVars中的参数
- Spring学习,AOP切点类型
- 斐波那契数列
- LUA 模式匹配
- 计算几何初步
- GC参数
- Spring Boot Admin管理监控数据
- NetWork
- Java中基本类型自动转换与强制转换
- 发一段网址就能安装测试项目
- Hibenate的CRUD操作
- 自定义GridView--pizifusheng
- BootStrap table增加一列显示序号