随笔分类 - 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.
阅读全文
摘要:题目地址 :http://acm.hdu.edu.cn/showproblem.php?pid=4720题目是给三个点 ,要求求出最小的能覆盖这三个点的圆,然后判断第四个点在不在这个圆内。如果这个是一个钝角三角形,那么圆心就是最长边的中点,如果是锐角三角形,圆心就是外接圆圆心。 然后用点到圆心的距离和半径的关系判断是不是在圆内。求外接圆时 用到向量点积为0,还有Crammer法则解方程代码:#include
#include
using namespace std; double calcdet(double p[2][2] ) //计算行列式的值
{ double...
阅读全文
摘要:题目地址: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...
阅读全文
摘要:#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]>..
阅读全文
浙公网安备 33010602011771号