
计算几何
Aurora141592
这个作者很懒,什么都没留下…
展开
-
[计算几何]极角排序
Amphiphilic Carbon Moleculeshttp://fastvj.rainng.com/contest/304637#problem/A保存个极角排序的板子。极角排序有两种。一种是atan2,速度快,但是有精度误差。另一种是叉积,速度慢但是只用进行整数运算。注意用叉积极角排序的时候,要把上半区和下半区分开来排,而且每个点所在的半区要唯一。struct point{ int x, y, c; double rad;//atan2(y, x) bool ope原创 2021-01-14 12:28:27 · 193 阅读 · 0 评论 -
HDU – 6465 – 水题(线性变换)
http://acm.hdu.edu.cn/showproblem.php?pid=6465线性映射( linear mapping)是从一个向量空间V到另一个向量空间W的映射且保持加法运算和数量乘法运算,而线性变换(linear transformation)是线性空间V到其自身的线性映射。最为常用的几何变换都是线性变换,这包括旋转、缩放、切变、反射以及正投影。在二维空间中,线性变换可以用 2×2 的变换矩阵表示。首先把三个点转换成以第一个点为起点的两个向量,然后就能得到四个方程的方程组,用来求出变原创 2021-01-08 13:56:15 · 160 阅读 · 0 评论 -
final-计算几何
判断是否是整数:fabs(x – (int)x) > epsdouble精度1e9,long double精度1e18实数比较:eps为精度,sign返回正负,cmp返回大小typedef double db;const db eps=1e-6;const db pi=acos(-1);int sign(db k){ if (k>eps) return 1; else if (k<-eps) return -1; return 0;}int cmp(db k1,d原创 2021-01-06 21:23:44 · 150 阅读 · 2 评论 -
[计算几何]那么我们用模板写点东西吧
https://paste.ubuntu.com/p/wRXNwpd3mX/二维凸包:https://www.luogu.org/problemnew/show/P2742#include<bits/stdc++.h>using namespace std;#define mp make_pair#define fi first#define se second#define pb push_back#define maxn 10005typedef double db;co原创 2021-01-06 21:21:37 · 73 阅读 · 0 评论 -
[计算几何]模板
#define mp make_pair#define fi first#define se second#define pb push_backtypedef double db;const db eps=1e-6;const db pi=acos(-1);int sign(db k){ if (k>eps) return 1; else if (k<-eps) return -1; return 0;}int cmp(db k1,db k2){return sign原创 2021-01-06 21:13:29 · 64 阅读 · 0 评论 -
[计算几何]圆与三角形是否相交
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1298把三角形的每条边单独判断,先判断两个点是否都在里面,是否一个点在里面一个点在外面,直接return。然后判断点到直线的距离是否小于等于r,是的话用余弦定理判断和圆是否有交点,原理画图就能明白,如果没有交点的话在圆外的两个角必定有一个是钝角,用余弦定理判断是否小于0即可。顺便一提,如果不需要用到double类型就都用long long类型,提高精度,点积叉积两点间距离的平原创 2021-01-03 14:49:24 · 497 阅读 · 0 评论 -
[计算几何]判断四点共面
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1265算三次叉积,判断模是否为0#include<bits/stdc++.h>using namespace std;const double eps = 1e-10;struct vec{ double x, y, z;};double dot(const vec &a, const vec &b){ return a.x * b原创 2021-01-03 14:42:02 · 485 阅读 · 0 评论 -
[计算几何]判断线段是否相交
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1264#include<bits/stdc++.h>using namespace std;struct vec{ double x, y;};double dot(const vec &a, const vec &b){ return a.x * b.x + a.y * b.y; }double cross(const vec &a原创 2021-01-03 14:40:22 · 102 阅读 · 0 评论 -
[计算几何]极角排序
Amphiphilic Carbon Moleculeshttp://fastvj.rainng.com/contest/304637#problem/A保存个极角排序的板子。极角排序有两种。一种是atan2,速度快,但是有精度误差。另一种是叉积,速度慢但是只用进行整数运算。注意用叉积极角排序的时候,要把上半区和下半区分开来排,而且每个点所在的半区要唯一。struct point{ int x, y, c; double rad;//atan2(y, x) bool ope原创 2020-11-04 21:24:15 · 424 阅读 · 0 评论