随笔分类 -  ACM_计算几何

摘要:题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4741题目大意 给你4个点 确定两条异面直线,求他们之间的距离和公垂线段的垂足。这里从twj1993那学的用直线参数方程+偏导数的方法,甚至可以解决n维坐标下的问题。设第一条直线的参数方程是x=x1+(x3-x1)*t1 , y=...,z=..... 第二条直线的参数方程同理可设(t2为参数)。然后两点之间的距离就可以表示为t1,t2的二元函数,令偏导为0就可以了。为了方便起见,变量用x,y代替。然后求函数系数的时候发现x,y是对称的,只需要把x改成y,z加上去就可以了最后,很关键的一点,dou. 阅读全文
posted @ 2013-09-16 22:13 814jingqi 阅读(188) 评论(0) 推荐(0)
摘要:题目地址 :http://acm.hdu.edu.cn/showproblem.php?pid=4720题目是给三个点 ,要求求出最小的能覆盖这三个点的圆,然后判断第四个点在不在这个圆内。如果这个是一个钝角三角形,那么圆心就是最长边的中点,如果是锐角三角形,圆心就是外接圆圆心。 然后用点到圆心的距离和半径的关系判断是不是在圆内。求外接圆时 用到向量点积为0,还有Crammer法则解方程代码:#include #include using namespace std; double calcdet(double p[2][2] ) //计算行列式的值 { double... 阅读全文
posted @ 2013-09-11 18:27 814jingqi 阅读(174) 评论(0) 推荐(0)
摘要:题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4709可以证明,三角形是最小的。直接计算三角形面积,取最小的的,Impossible的情况特判就行。计算三角形面积用向量叉积。代码:#include #include #include #include #include using namespace std; struct point { double x; double y; }; double area(point A,point B,point C) { double abx=B.x-A.x; doubl... 阅读全文
posted @ 2013-09-09 14:21 814jingqi 阅读(147) 评论(0) 推荐(0)
摘要:#include using namespace std; //struct point //{ // // //}; int max(int a,int b) { if(a>b) return a; else return b; } void swap(int &a,int &b) { int temp=a; a=b; b=temp; } int main() { int n; cin>>n; int a,b,c,d; int xa[n],ya[n],xb[n],yb[n]; for(int i=0;i>xa[i]>>ya[i]>.. 阅读全文
posted @ 2013-08-10 00:48 814jingqi 阅读(251) 评论(0) 推荐(0)