博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
计算几何初步
阅读量:4216 次
发布时间:2019-05-26

本文共 1139 字,大约阅读时间需要 3 分钟。

#include
#include
#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 <
<< dot(o,a,b); cout << isInter(a,b,c,d); return 0; }

参考 :

转载地址:http://lmimi.baihongyu.com/

你可能感兴趣的文章
cocos2dx CCObject引用计数,内存释放分析(1)
查看>>
cocos2dx2.X 编译时,传递编译选项
查看>>
ccCArray.cpp 文件
查看>>
cocos2dx 屏幕大小
查看>>
libgdx: 2D Particle Editor工具使用
查看>>
eclipse 给jar库添加源码
查看>>
3.0正式版环境搭建(4)-- 运行(3)创建的工程
查看>>
C++ 枚举声明 enum 和 enum class
查看>>
Python optionParser模块的使用方法
查看>>
android 消灭星星出错
查看>>
PyCharm 教程(三)Hello world!
查看>>
PyCharm: 显示源码行号
查看>>
cocos2dx使用第三方字库.ttf,需要注意的事项
查看>>
cocos2dx 音频模块分析(4): 音效部分
查看>>
cocos2dx 音频模块分析(5): 音效部分
查看>>
19、Cocos2dx 3.0游戏开发找小三之Action:流动的水没有形状,漂流的风找不到踪迹、、、
查看>>
cocos2.X版本lua端使用定时器的方法
查看>>
lua math.fmod使用注意小数问题
查看>>
lua 时间转化
查看>>
lua学习笔记之五(Lua中的数学库)
查看>>