二维几何基础模板(二)

ACM几何基础篇 1 前言 1.1 生产生活 1.2 ICPC竞赛 2 准备知识 2.1 头文件及函数及常量 2.2 浮点误差 2.2.1 计算误差 2.2.2 判等 2.2.2.1 解决方案 1 误差判别法 2.2.2.2 解决方案 2 化浮为整 2.2.3 负零 2.2.4 反三角函数 2.3 模板总结 3 点与向量 3.2 相关定义 3.1.1 点的定义 3.1.2 向量的定义 3.2... 阅读详情

一、直线交点

Point GetLineIntersection(Point P,Vector v,Point Q,Vector w){
    Vector u = P-Q;
    double t = Cross(w,u)/Cross(v,w);
    return P+v*t;
}

二、点到直线的距离

double DistanceToLine(Point P,Point A,PointB){
    Vector v1 = B-A,v2 = P-A;
    return fabs(Cross(v1,v2))/length(v1);
}

三、 点到线段的距离

double DistanceToSegment(Point P,Point A,Point B){
    if(A == B)
        return Length(P-A);
    Vector v1 = B-A,v2 = P-A,v3 = P-B;
    if(dcmp(Dot(v1,v2)) < 0)
        return Length(v2);
    else if(dcmp(Dot(v1,v3)) > 0)
        return Length(v3);
    else
        return fabs(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 = Corss(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;
}


六、多边形面积

//如果是凸边形,可以从第一个顶点出发吧凸边形分成n-2个三角形
//非凸多边形也是一样的原理
double ConvexPolygonArea(Point* p,int n){
    double area = 0;
    for(int i = 1; i < n-1; i++)
        area += Cross(P[i]-p[0],p[i+1]-p[0]);
    return area/2;
}



ACM计算几何篇 1 前言 1.1 计算几何算法 1.2 计算几何题目特点及要领 1.3 预备知识 2 凸包 2.1 定义 2.1.1 凸多边形 2.1.2 凸包 2.2 颜料配色问题 2.2.1 问题描述 2.2.2 问题简化 2.2.3 问题抽象 2.2.4 数学抽象 2.2.4.1 Convex Combination And Affine Combination 2.2.4.2 区别与联系 ... 阅读详情

相关推荐

实战教程:用YOLOv11+PyQt5打造工地安全帽检测系统(附完整数据集)

本文提供了一份完整的实战指南,详细介绍了如何利用YOLOv11目标检测模型与PyQt5界面库,从零开始构建一个智能工地安全帽检测桌面应用。内容涵盖高质量数据集的准备与标注、YOLOv11模型训练与调优,以及如何使用PyQt5开发流畅、专业的图形用户界面,最终实现一个可实际部署的AI安全监控系统。

plum99的博客 738

直线交点问题(例题:POJ1269)

求直线交点 求直线交点模板,详见刘汝佳紫书。 // 判断有无交点,看Cross(v,w),为0则没有交点。 Point GetLineIntersection(Point P,Vector v,Point Q,vector w) { vector u = P-Q; double t = Cross(w,u) / Cross(v,w); return P+v*t; } Intersectin...

Radium_1209 653

脑影像分析软件推荐 | JuSpace

JuSpace是一种允许基于 MRI 测量与核成像衍生估计的跨模态关联的工具包,它涵盖各种神经递质系统,包括多巴胺能、血清素能、去甲肾上腺素能和 GABA(γ-氨基丁酸) 神经传递。JuSpace 由一组 Matlab 功能以及涵盖各种受体系统的 PET 受体图谱组成。

NHKJ_ZF的博客 1707

半平面的交,二分法(离海最远的点,LA 3890)

太菜啦,这都不会。。。 点到海的距离是点到海的最小距离,然后想让这个值最大。想到了啥?不就是应该用二分吗?太菜了。 把这个n个点的凸多边形的岛看做n个半平面的交。 二分距离,检查是否存在一个距离海这么远的点,具体做法就是将所有半平面对应的直线往左边移动这么远,然后看看交是否为空即可。 代码 #include using namespace std; const int m

xl2015190026的博客 361

Part03 数据结构

本文介绍了CSP-S初赛中常见的高级数据结构及其实现,包括: 线性结构:双端栈、双端队列、单调队列、优先队列和ST表,重点分析了它们的特点、时间复杂度及典型应用场景。 集合与森林:并查集(带路径压缩和按秩合并)和树的孩子兄弟表示法,展示了多叉树转化为二叉树存储的方法。 特殊树结构:包括二叉堆、树状数组、线段树和字典树,详细说明了它们的构建、查询和更新操作,特别强调了线段树的递归实现和字典树的前缀匹配特性。 每种数据结构都配有核心C++代码实现,涉及数组模拟、动态规划和树形结构等编程技巧,适合算法竞赛选手快速

weixin_43863957的博客 1179

PCL DBSCAN密度聚类【2026最新版】

点云密度聚类的PCL代码实现,与matlab自带的密度聚类算法进行对比验证,结果一致。3万多个点能再2秒左右运行出结果,算法效率尚可。

点云侠的博客 5681

几何算法专题

UVA 10652 Board Wrapping UVA 11168 Airport UVA 1396 Most Distant Point from the Sea UVA 1298 Triathlon UVA 1475 Jungle OutpostUVA 10652 Board Wrapping#include<bits/stdc++.h> using namespace std; #defin

nike0good |Oier&ACMer | 熟能生巧 2784

2025实战|C#上位机+STM32实现LED串灯控制:串口通信+PWM调光+自定义帧协议(附上下位机源码)

粘包:一次收到“BRIGHT:50LED_OFF”,解析完全错乱;乱码:串口波特率/编码不匹配,指令变成“??H??50”;丢帧:数据传输中少字符,比如“BRIGHT:5”,解析出亮度5而非50。因此我们设计字节级自定义帧协议协议先行:无论简单还是复杂场景,先定义清晰的帧协议,避免数据错乱;串口稳字当头:下位机用环形缓冲区接收,上位机加锁发送,避免丢包/粘包;跨线程必处理:C#上位机所有UI更新必须用Invoke,否则必崩溃;硬件是基础:接线、供电、共地这些细节,比代码更易出问题;

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 755

POJ2826

传送门:An Easy Problem?!题意:就两个线段相交,当做雨水收集器,求问可以收集多少雨水。分析:题意简单,思路也简单。但数据很坑。。。情况1:有一条线段平行x轴输出0情况2:两条线段平行或重合或无交点,输出0情况3:一条线段覆盖了另一条线段的上半部分,就是雨水无法流入两条线段之间,这个比较难想程序不难写,但精度卡死人。。。最后提交时候答案加了个eps就神奇的过了。。。WA了13次。。。...

勇敢前进的ACMer 563

【AI编程】Trae 环境搭建与配置从使用到项目实战详解

Trae 环境搭建与配置从使用到项目实战详解

congge 5650

【24届秋招总结】24届数字IC秋招给学弟学妹们的99条建议(标题党)

针对2023年找实习、秋招、谈薪资等方面的个人经验进行总结,希望对后续同学们找工作有所帮助

qq_42135020的博客 4462

计算几何 - 二维几何基础 (模板)

这里总结一下二维几何基础知识! 常用定义: //定义点的类型 struct Point { double x, y; Point(double x = 0, double y = 0) : x(x) , y(y) { } //构造函数,方便代码编写 }; typedef Point Vector; //从程序实现上,Vector只是Point的别名 //向量 + 向量

Never say never 1215

python实现DoIP基本通信(收发报文)

python实现DoIP基本通信(收发报文)

天赐好车的博客 895

二维几何基础大合集!《计算几何全家桶(一)》(基础运算、点、线、多边形、圆、网格)

整理的算法模板合集: ACM模板 目录基本运算点与直线多边形 基本运算 #include<bits/stdc++.h> using namespace std; const int N = 5007, M = 50007, INF = 0x3f3f3f3f; const double DINF = 12345678910, eps = 1e-10; struct Point{ double x, y; Point(double x = 0, double y = 0):x(x

繁凡さん的博客 8006

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

二维几何——模板汇总:

就是从点类开始。。。 但是都没有正式用题目测试过,也不知道对错。。。 #include<iostream> #include<cstdlib> #include<cstdio> #include<algorithm> #include<cstring> #include<string> #include<cmath&gt...

_Griefs 203

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

二维几何基础(模板)

#include&amp;amp;lt;bits/stdc++.h&amp;amp;gt; using namespace std; const double eps=1e-10; struct Point{ double x,y; Point(double xx=0,double yy=0):x(xx),y(yy){} }; typedef Point Vector; Vector operator+(Vector A...

Change the world by program. 255

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

二维几何模板 - 二维几何基础

二维几何模板 struct 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 +

Memory 534

计算几何 || 二维基础模板

/*几何模版*/ #include #include #include #include using namespace std; struct point { double x,y,d; point(double a,double b):x(a),y(b){} point(){} }; typedef point vec; //向量+向量=向量 //点 +向量=点 v

野生 658

kuangbin计算几何模板转载

二维几何 // `计算几何模板` const double eps = 1e-8; const double inf = 1e20; const double pi = acos(-1.0); const int maxp = 1010; //`Compares a double to zero` int sgn(double x){ if(fabs(x) < eps)re...

gzr2018的博客 410

计算几何模板

【整理于2016年】 计算几何模板 const double eps = 1e-8; const double pi = acos(-1.0); using namespace std; //采用eps的精度判断大/小于零 int epssgn(double x) { if (fabs(x)&lt;eps) return 0; else return x&lt;0?-1:1; ...

skyword的专栏 400

计算几何算法模板

算法竞赛中,计算几何部分知识总结与算法模板

m0_51171995的博客 602

几何模板总结(一):二维基础

实数比较 const double eps=1e-8; int dcmp(double x) { if(fabs(x)<eps) return 0; else return x<0?-1:1; } 点和向量的定义 struct point {     double x,y;     point(double x=0,double y=0):x(x),y(y){}

bly 703

(转)计算几何模板 - kuangbin

转自:https://kuangbin.github.io/2019/04/28/20190428/#more 二维几何 // `计算几何模板` const double eps = 1e-8; const double inf = 1e20; const double pi = acos(-1.0); const int maxp = 1010; //`Compares a double ...

Falcon的博客 1177

《训练指南》大白 二维几何基础 基本公式(模板)

《训练指南》大白 二维几何基础 基本公式(模板) #include using namespace std; struct Point{ double x,y; Point(double x=0,double y=0):x(x),y(y){}///构造函数 }; typedef Point Vector ; ///向量+向量=向量,点+向量=点 Vector operat

fans_ac的博客 472

jiedai计算几何模板

ACM计算几何模板 内容包含:二维点类 二维直线线段类 多边形类 凸多边形类(凸包) 半平面交 三维计算几何 杂项等

jiedai的博客 1870
上一篇: HDU 5017 Ellipsoid(模拟退火算法)
下一篇: HDU5063 Operation the Sequence(逆向思想)
yphacker
博客等级 码龄12年 199粉丝 540原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值