计算几何
文章平均质量分 85
对一些几何问题做研究,综合相关研究成果写出可用于解决实际计算几何问题的代码实现
惆怅客123
算法研究痴迷者,ai爱好者
展开
-
UVa12121/LA4062 You are around me ...
本人学习icpc算法竞赛时自己对UVa部分题目的解题思路 本题是2007年ACM ICPC 亚洲区域赛 Dhaka 赛区的 H 题。题意给出平面上N个点,要求在这些点上放置偏心率为e,长轴与x轴夹角为θ的椭圆的圆心,且所有的椭圆不重叠。问:椭圆最大的面积是多少?分析椭圆的面积等公式:,b为短轴,a为长轴。 求出最大可能的短轴值,即可求出最大可能的椭圆面积。对于具体的某两个点(xi,yi)和(xj,yj),其横纵坐标差值dx=xi-xj,......原创 2022-08-12 15:34:08 · 91 阅读 · 0 评论 -
UVa12313 A Tiny Raytracer
在真实场景中,由于玻璃和水这样的物体存在,我们需要考虑光线和物体的多次碰撞,以处理反射(reflection)和折射(refraction),方法如下:如果射线碰到了一个反射性物体,则派生出一条新的反射光线,从碰撞点射出,指向碰撞表面的外部。如果没有交点,则该点不可见。在最简单的情况下,所有物体既不反光也不透明,则每当射线碰到一个物体时,可以直接计算这个物体的颜色,方法是连接碰撞点和光源(本题只有一个光源),如果连线被其他物体挡住,说明这个点处于阴影中,否则用随后介绍的着色算法计算这个点的颜色。原创 2024-04-24 17:16:45 · 1189 阅读 · 0 评论 -
UVa1359/LA3491 Hills
本人学习icpc算法竞赛时自己对UVa部分题目的解题思路 将每条线段作为两条有向线段做预处理:依次与其他线段求交点(用分数保存叉乘比值)同时保存逆时针夹角的余弦值,最后对多线段交于同一点时保留余弦值最小的那一段。预处理后,遍历并计数:依次遍历有向线段的每一最小分段,当恰好时三条不同线段的最小分段形成环时计数+1。答案是计数结果除以3。原创 2024-02-18 23:08:20 · 345 阅读 · 0 评论 -
UVa1313/LA2693 Ghost Busters
本人学习icpc算法竞赛时自己对UVa部分题目的解题思路 非常具有挑战性的一道好题,涉及坐标变换,求圆锥曲线的截面椭圆,求两个椭圆交点,解三次方程。原创 2024-04-14 09:09:45 · 708 阅读 · 1 评论 -
UVa1446/LA4640 Origami Through-Hole
本人学习icpc算法竞赛时自己对UVa部分题目的解题思路 有一个100mm×100mm的纸片,进行若干次折叠操作:每次给出点P、Q,沿着P、Q的垂直平分线将包含P的部分翻折至P点在Q点上。最后给出一个点的h,从h点打孔,问纸张展开后能看到几个孔。最多折叠10次,折叠有三条规则。原创 2024-03-18 11:16:59 · 262 阅读 · 0 评论 -
UVa11726 Crime Scene
本人学习icpc算法竞赛时自己对UVa部分题目的解题思路 滚边法:在所有图形中找到最低点,多个图形包含最低点时任取一个作为起点即可,初始时假想从起点水平往右的向量作为当前向量,找出逆时针最小旋转量使其刚好贴到下一个图形某点上,下一个图形如果是圆,则可以绕着切点逆时针转一定角度(注意可能会转超过180度)再贴到其他图形的某一点上,依此不停滚边操作,直到回贴到起点。或者求出所有点和圆的切点,然后所有的点和原有的点一起做一次凸包,求出凸包的边长,如果连续的两个点都是同一个圆上的切点,计算长度的方式就要变成求弧长。原创 2024-03-01 02:13:37 · 889 阅读 · 0 评论 -
UVa1483/LA5075 Intersection of Two Prisms
本人学习icpc算法竞赛时自己对UVa部分题目的解题思路 求两个无限高棱柱的交。对第一个棱柱,依次枚举其凸多边形的每条边,对应一个平行于z轴的无限大矩形,求出此矩形与第二个棱柱相交得到的多边形。同样地依次枚举第二个棱柱凸多边形的每条边,对应一个平行于y轴的无限大矩形,求出此矩形与第一个棱柱相交得到的多边形。这样就求出了相交多面体的每一个面,取相交多面体的第一个面的首个顶点,求此点与各个面的混合积之和,再除以6就是答案。原创 2024-03-26 20:35:26 · 548 阅读 · 0 评论 -
UVa11887 Tetrahedrons and Spheres
如果没有圆,求多边形的面积,可以用梯形剖分的思想来处理:假设多边形的顶点是逆时针顺序给出的,遍历每条边时,如果顶点是从左到右的(横坐标从小到大)就把两个顶点之间与过最低点的水平线组成的一个直角梯形作为负面积,相反从右往左则把构成的直角梯形作为正面积,然后用正面积减掉负面积就可以得到多边形的面积。其实对这种方法稍加改造就能处理有圆的情况:分割点加入圆心以及圆的左右端点、圆与圆交点以及多边形与圆交点的横坐标,再逐段切割多变心和圆,切割圆时同样找出正负梯形部分并求出梯形斜边与圆弧那部分的面积。原创 2024-04-24 17:18:08 · 747 阅读 · 0 评论 -
UVa11595 Crossing Streets EXTREME
本人学习icpc算法竞赛时自己对UVa部分题目的解题思路 综合了平面区域分割和加权最短路的繁琐题目。本题解决平面区域分割采用“卷包裹”算法比切割多边形算法更合适。根据本题的数据特点,加权最短路用Dijkstra比SPFA更合适一点。原创 2024-03-07 05:56:31 · 521 阅读 · 0 评论 -
圆锥曲线标准形式和齐次式(一般式)之间的参数转换的推导与结论
基于坐标转换对椭圆、双曲线、抛物线三种不同的圆锥曲线分别逐步推导出标准形式和齐次式之间的参数转换等式,并给出了一份C++程序实现原创 2024-04-12 15:19:20 · 695 阅读 · 0 评论 -
求两个二次曲线交点的理论依据和编程实践
最近遇到求两个椭圆交点的的问题,一番搜索发现利用线性代数的二次型(Quadratic form)相关知识可解,于是做了Python和C++两个版本的编程实践。原创 2024-04-12 00:08:33 · 1185 阅读 · 0 评论