刘汝佳大白鼠圣战集——计算几何篇
Last0rder
最后之作
展开
-
UVA - 11178-Morley’s Theorem
就是给出一个等边三角形的三个顶点坐标然后每个角的三等分线会交错成一个三角形,求出这个三角形的顶点坐标一开始,我题意理解错了……还以为是任意三角形,所以代码能够处理任意三角形的情况我的做法:通过旋转点的位置得到这些三等分线的直线方程,然后用高斯消元求交点我的代码:#include#include#include#include#原创 2014-09-18 18:27:22 · 981 阅读 · 0 评论 -
UVA12304-2D Geometry 110 in 1!
就是给了六个关于圆的算法,实现它们。注意的是,不仅输出格式那个符号什么的要一样,坐标的顺序也要从小到大……基本上没考虑什么精度的问题,然后就过了。大白鼠又骗人,或许我的方法比较好?我的做法就是列方程+旋转+平移我的代码:#include#include#include#include#include#include#inc原创 2014-10-09 21:05:11 · 1207 阅读 · 0 评论 -
UVA LIVE-4642 - Malfatti Circles
给出三角形三个顶点,求出三个互切的圆的半径虽然大白鼠说可以推出公式,可是这个公式只怕没那么容易推……我左看右看上看下看也推不出。应该是要做辅助线什么的,那也……由于很容易就推出了关于三个半径的三元方程组,那么就试试搜索吧,搜其中任意一个半径,只要满足这个方程组就可以了,那么就二分搜索吧,当然,这个单调性呢?看图可知,比方说,我们搜最靠近最上面的顶点的圆的半径r1,由于,原创 2014-09-17 16:12:22 · 1428 阅读 · 0 评论 -
UVA LIVE-4413 - Triangle Hazard
给个图,告诉R,P,Q三点的坐标,求出A,B,C三点的坐标我的做法:根据梅涅劳斯定理列出三个二元一次方程组,求出pb,qc,ra的长度,然后用点位移求出A,B,C三点的坐标即可我的代码:#include#include#include#include#include#include#include#include#include#inclu原创 2014-09-16 12:29:09 · 1358 阅读 · 0 评论 -
UVA11796- Dog Distance
题意是给出两条轨迹,分别给出起点和终点,要求两条轨迹同时开始跑,同时到达重点问,中途两点间最大距离和最小距离的差值我的做法:设一个速度,用向量法模拟过程我的代码:#include#include#include#include#include#include#include#include#include#includeusi原创 2014-09-26 16:01:50 · 1043 阅读 · 0 评论 -
UVA - 11186-Circum Triangle
有个以坐标原点为圆心的圆,给出圆上的点的关于x轴的夹角,以及圆的半径,求圆上点所能构成的三角形的面积和我的做法:先算出每个点的坐标,枚举所有三个点的组合,叉积求面积我的代码:#include#include#include#include#include#include#include#include#include#includeusi原创 2014-09-12 20:46:42 · 998 阅读 · 0 评论 -
UVA - 12301-An Angular Puzzle
给出如图三角形里的五个角度,求出x我的做法:直接写出表达式解我的代码:#include#include#include#include#include#include#include#include#include#includeusing namespace std;const double pi=acos(-1.0);struct dot原创 2014-09-12 19:34:48 · 951 阅读 · 0 评论 -
UVA - 10566 Crossed Ladders
给出x,y,c,求?的长度我的做法:首先写了一个关于x,y,c,?的表达式,发现拆开后是解一个四元一次方程,比较麻烦发现表达式的一边是个关于?的单调递减函数后,就用二分来解了我的代码:#include#include#include#include#include#include#include#include#include#原创 2014-09-12 20:06:44 · 1099 阅读 · 0 评论 -
UVA12300-Smallest Regular Polygon
给出两点,求经过这两点的正n边形的最小面积大白鼠上说要注意精度,我没觉得精度有什么影响,然后就过了我的做法:相当于这两点构成的线段是正n边形的最长弦我的代码:#include#include#include#include#include#include#include#include#include#includeusing names原创 2014-09-11 21:44:28 · 1028 阅读 · 0 评论 -
UVA11731 - Ex-circles
给出一个三角形,把三角形的三条边无限延长,然后做四个圆,最后……也不知道怎么说,反正就是求阴影部分的面积和形成的三角形的面积我的做法:直接列方程组解……我的代码:#include#include#include#include#include#include#include#include#include#includeusi原创 2014-09-10 19:05:36 · 1243 阅读 · 0 评论 -
UVA11524 - InCircle
给一个三角形,画出它的内接圆,然后圆与三角形的边会有交点,这些点分别把每条边分成两部分,这两部分的比例也分别给出,内接圆的半径也知道,求三角形面积。我的做法:用海伦公式与半径,给出的比例,用三角心内心的性质极其三角形的面积联立方程我的代码:#include#include#include#include#include#include原创 2014-09-09 20:24:40 · 1142 阅读 · 0 评论 -
UVA1473 - Dome of Circus
做了两天……终于搞定了就是给你一些点,求能够包裹这些点体积最小的圆锥的底圆半径和圆锥的高虽然网上很多用三分的方法写,不过好像是某电的课件做法,然后很多人跟风……不管怎么说,我是用计算几何的方法写的我的做法:观察之后可以发现把一个点投影到xoy平面上跟原点的距离可以当作x对待,原来的z可以当作y对待,这样就转换成了二维只需要在二原创 2014-09-09 16:14:42 · 1080 阅读 · 0 评论 -
UVA11817 - Tunnelling the Earth
给出经纬度,算球面距和圆弧的弦长我的做法:设好三维坐标系,利用投影算出两点坐标利用余弦定理算出圆弧对应圆心角,再算出球面距我的代码:#include#include#include#include#include#include#include#include#include#includeusing namespac原创 2014-09-08 11:20:06 · 1121 阅读 · 0 评论 -
UVA LIVE-3263 - That Nice Euler Circuit
画一个顶点为偶数的封闭的二维图,当然,这个图可以自交,给出画的过程中的一些轨迹点,求出这个图把二次元分成了几部分,例如三角形把二次元分成了两部分。这个的话,有图中顶点数+部分数-棱数=2的定律,这是核心思想,也就是所谓的欧拉定律拓扑版,好吧,其实仔细想想也是能够想出这个规律来的。做出这题纯属意外,由于给的点的坐标全是用整数表示,为了不用考虑精度问题,我就想只用这些点,就原创 2014-09-19 17:47:49 · 1173 阅读 · 0 评论 -
UVA11646 - Athletics Track
给你一个矩形的长宽比,中间为矩形两端为圆弧的跑道周长为400,求长宽。我的做法:反正两边的圆弧可以随便做,那么为了方便起见,就直接用长宽的一半做直角三角形的斜长做圆弧的半径求出周长的缩小比例我的代码:#include#include#include#include#include#include#include#includ原创 2014-09-07 22:28:39 · 1078 阅读 · 0 评论 -
UVA11800 - Determine the Shape
每次给4个点坐标,确保没有三点共线,判断构成的是个什么四边形就行了,并输出类型。我的做法:用点积和叉积判断线与线的关系我的代码:#include#include#include#include#include#include#include#include#include#includeusing namespace std;s原创 2014-09-06 14:18:37 · 939 阅读 · 0 评论 -
UVA11437 - Triangle Fun
就是给一个三角形,然后给出一些关系,以及一些点的坐标,最后求一个三角形面积就好了。我的做法:用向量的方法推出离线段一个端点最近的三等分点的表达式用行列式解线性方程推出求两直线交点的表达式用叉积求三角形面积用小数点后第一位对整数部分进行四舍五入求得离这个实数最近的整数我的代码如下:#include#include#include#incl原创 2014-09-06 11:00:02 · 905 阅读 · 0 评论 -
UVA - 10674-Tangents
题意:给出两个圆,求它们的公切线,并按照一定格式输出做法:模拟代码:#include#include#include#include#include#include#include#include#include#includeusing namespace std;const double eps=2e-5;const do原创 2014-10-17 21:40:32 · 1052 阅读 · 0 评论