![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算几何
文章平均质量分 82
akFHeaven
fuck to the end of hell
展开
-
Weapon
/*题意:求是否存在两圆柱相交, 如果不存在求最短距离.分析:可以转化为空间直线距离问题, 然后如果距离 - 去半径和 > 0 则相交空间直线距离: 求两直线方向向量的确定的面的法向量n, 然后求出一条端点在不同直线上的任意向量, 最后通过点积可以求出该向量在法向量上的投影。投影的长度就是答案。 公式: dist = fas(dot(normal, anyVec) / vlen(n原创 2013-07-25 19:35:50 · 923 阅读 · 2 评论 -
Polygons
/*题意:判断一个顺时针凸包A是否包含(不包括边界)简单多边形B分析:判断B的每个点是否在A内; 因为m是1e5,m是1e4,如果判断算法在log(m)数量级左右, 所以O(n * Olog(m) )可以过*/#include #include #include #include #include #include #include #include #includ原创 2013-07-26 22:13:31 · 1225 阅读 · 0 评论 -
HDU 4629 Burning
/* 题意: 求平面的n个三角形的不同覆盖次数(1 - n)的面积 。 分析:扫描线可以搞定。 扫描线:把三角形的顶点和交点的x轴的值排序, 这样就能把三角形给离散化, 然后枚举前后两条线之间的情况来计算。 前后两条搞毛线之间的情况变得很简单:都是由没有线交属于某个三角形的三角形或者梯形组成, 然后就可以从上到下遍历这些图形边, 依次计算面积原创 2013-08-03 18:36:46 · 1071 阅读 · 0 评论 -
HDU 4637 Rain on your Fat brother
题意可以归纳为:求一条线段和雨滴的交的总长度。分析:雨滴和线段的交点可以分为三角形和半圆的交点,注意线段可能会重复, 扫描线判重就可以了。#include #include #include #include #include #include #include #define FOR(i, n) for(int i = 0; i < n; i++)#define原创 2013-08-03 21:06:53 · 1045 阅读 · 1 评论 -
HDU 4643 GSM
题意: 求一条线段上的点到其他m个点有多少个最短距离, m个点中没有两点到线段上的端点距离相等~分析:用一个点和其他点的中垂线所在的半平面划分该点所在的区域, 该区域内任意一个点的距离到该点相对其他点距离最近.具体实现:用一个足够大的矩形覆盖所有点, 然后划分区域, 最后判断所问线段和多少个区域(凸包)有交点~#include #include #include #inclu原创 2013-08-08 10:21:10 · 702 阅读 · 0 评论 -
HDU 4667 Building Fence
题意: 平面里给出M个三角形, N个圆形, 图形之间两两不相交, 求一个把这些图形围起来周长最小的一个圈的周长~分析:把三角形顶点分解成点, 对圆形求可能的切点:1.点和圆的两个切点, 2.圆和圆的外公切线切点。 对然后所有点求凸包, 处理周长的时候, 如果凸包上两个相邻点在同一个圆上, 则求相应的弧长~。此方法有个trick: 只有一个圆的时候需要特殊处理.原创 2013-08-14 11:24:47 · 897 阅读 · 1 评论