博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
计算几何入门——二维几何基础
阅读量:6133 次
发布时间:2019-06-21

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

//Part 1struct Point(){    double x,y;    Point(double x=0,double y=0):x(x),y(y) { }};typedef Point Vector;Vector operator + (Vector A,Vector B) { return Vector(A.x+B.x,A.y+B.y); }Vector operator - (Vector A,Vector B) { return Vector(A.x-B.x,A.y-B.y); }Vector operator * (Vector A,double p) { return Vector(A.x*p.A.y*p); }Vector operator / (Vector A,double p) { return Vector(A.x/p.B.y/p); }bool operator < (const Point& a,const Point& b) { return a.x
0) return Length(v3); return fans(Cross(v1,v2)/Length(v1)); }//点在直线上的投影Point GetLineProjection(Point P,Point A,Point B){ Vector v=B-A; return A+v*(Dot(v,P-A)/Dot(v,v));} //线段相交判定(规范相交) bool SegmentProperIntersection(Point a1,Point a2,Point b1,Point b2){ double c1=Cross(a2-a1,b1-a1),c2=Cross(a2-a1,b2-a1), c3=Cross(b2-b1,a1-b1),c4=Cross(b2-b1,a2-b1); return dcmp(c1)*dcmp(c2)<0 && dcmp(c3)*dcmp(c4)<0;} //点在线段上bool OnSegment(Point p,Point a1,Point a2){ return dcmp(Cross(a1-p,a2-p))==0 && dcmp(Dot(a1-p,a2-p)<0);} //Part 4 多边形double PolygonArea(Point* p,int n){ double area=0; for(int i=1;i

 

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/6972061.html

你可能感兴趣的文章
JavaScript面向对象编程深入分析(2)
查看>>
linux 编码转换
查看>>
POJ-2287 Tian Ji -- The Horse Racing 贪心规则在动态规划中的应用 Or 纯贪心
查看>>
Windows8/Silverlight/WPF/WP7/HTML5周学习导读(1月7日-1月14日)
查看>>
关于C#导出 文本文件
查看>>
使用native 查询时,对特殊字符的处理。
查看>>
maclean liu的oracle学习经历--长篇连载
查看>>
ECSHOP调用指定分类的文章列表
查看>>
分享:动态库的链接和链接选项-L,-rpath-link,-rpath
查看>>
单例模式
查看>>
Activity之间传递大数据问题
查看>>
困知,勉行----阿里云服务观
查看>>
rsyslog升级--input支持通配符测试
查看>>
阿里云企业邮箱 在Foxmail 7.0上POP3/IMAP协议设置方法
查看>>
[Weex Tips] 合理使用 Weex 的生命周期
查看>>
SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论...
查看>>
SQL Server 2005 备份还原
查看>>
CentOS配置ip[快速配置]
查看>>
ExtJs之VTYPE验证
查看>>
代码生成工具初步实现
查看>>